buildSrc/src/main/java/com/uber/okbuck/core/manager/DependencyManager.java [387:470]:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  private void processDependencies(
      Map<VersionlessDependency, Collection<OExternalDependency>> dependencyMap,
      OkBuckExtension okBuckExtension) {
    Path rootPath = project.getRootDir().toPath();
    File cacheDir = rootPath.resolve(externalDependenciesExtension.getCache()).toFile();
    FileUtil.deleteQuitelyAndCreate(
        cacheDir,
        externalDependenciesExtension.shouldCleanCacheDir(),
        okBuckExtension.buildFileName);

    Map<Path, List<OExternalDependency>> groupToDependencyMap =
        dependencyMap
            .values()
            .stream()
            .flatMap(Collection::stream)
            .collect(
                Collectors.groupingBy(dependency -> rootPath.resolve(dependency.getTargetPath())));

    AnnotationProcessorCache annotationProcessorCache =
        ProjectUtil.getAnnotationProcessorCache(project);
    Map<Path, List<Scope>> basePathToScopeMap =
        annotationProcessorCache.getBasePathToExternalDependencyScopeMap();

    ImmutableList.Builder<OExternalDependency> bazelDependencies = ImmutableList.builder();

    groupToDependencyMap.forEach(
        (basePath, dependencies) -> {
          ImmutableList.Builder<OExternalDependency> localPrebuiltDependencies =
              ImmutableList.builder();
          ImmutableList.Builder<OExternalDependency> prebuiltDependencies = ImmutableList.builder();
          ImmutableList.Builder<OExternalDependency> httpFileDependencies = ImmutableList.builder();

          if (externalDependenciesExtension.shouldDownloadInBuck()) {
            dependencies.forEach(
                dependency -> {
                  if (dependency instanceof LocalOExternalDependency) {
                    localPrebuiltDependencies.add(dependency);
                  } else if (isPrebuiltDependency(dependency)) {
                    prebuiltDependencies.add(dependency);
                    bazelDependencies.add(dependency);
                  } else {
                    httpFileDependencies.add(dependency);
                    bazelDependencies.add(dependency);
                  }
                });
          } else {
            localPrebuiltDependencies.addAll(dependencies);
          }

          preComputeSha256(prebuiltDependencies.build(), sha256Cache);
          preComputeSha256(httpFileDependencies.build(), sha256Cache);

          ImmutableList.Builder<Rule> rulesBuilder = ImmutableList.builder();
          rulesBuilder.addAll(LocalPrebuiltRuleComposer.compose(localPrebuiltDependencies.build()));
          rulesBuilder.addAll(
              PrebuiltRuleComposer.compose(prebuiltDependencies.build(), sha256Cache));
          rulesBuilder.addAll(
              HttpFileRuleComposer.compose(httpFileDependencies.build(), sha256Cache));

          // Add annotation processor rules
          List<Scope> scopeList = basePathToScopeMap.get(basePath);
          if (scopeList != null) {
            rulesBuilder.addAll(JavaAnnotationProcessorRuleComposer.compose(scopeList));
          }

          buckFileManager.writeToBuckFile(
              rulesBuilder.build(), basePath.resolve(okBuckExtension.buildFileName).toFile());

          createSymlinks(basePath, localPrebuiltDependencies.build());
        });

    if (okBuckExtension.getExternalDependenciesExtension().bazelDepsEnabled()) {
      ImmutableList.Builder<Rule> bazelRulesBuilder = ImmutableList.builder();
      bazelRulesBuilder.add(new BazelFunctionRule());
      bazelRulesBuilder.addAll(
          BazelHttpFileRuleComposer.compose(bazelDependencies.build(), sha256Cache));

      buckFileManager.writeToBuckFile(
          "", cacheDir.toPath().resolve(okBuckExtension.buildFileName).toFile(), false);
      File defsBzl = cacheDir.toPath().resolve("defs.bzl").toFile();
      buckFileManager.writeToBuckFile(bazelRulesBuilder.build(), defsBzl);
      buckFileManager.writeToBuckFile("\n", defsBzl, true);
    }
  }
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -



plugin/src/main/java/com/uber/okbuck/core/manager/DependencyManager.java [387:470]:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  private void processDependencies(
      Map<VersionlessDependency, Collection<OExternalDependency>> dependencyMap,
      OkBuckExtension okBuckExtension) {
    Path rootPath = project.getRootDir().toPath();
    File cacheDir = rootPath.resolve(externalDependenciesExtension.getCache()).toFile();
    FileUtil.deleteQuitelyAndCreate(
        cacheDir,
        externalDependenciesExtension.shouldCleanCacheDir(),
        okBuckExtension.buildFileName);

    Map<Path, List<OExternalDependency>> groupToDependencyMap =
        dependencyMap
            .values()
            .stream()
            .flatMap(Collection::stream)
            .collect(
                Collectors.groupingBy(dependency -> rootPath.resolve(dependency.getTargetPath())));

    AnnotationProcessorCache annotationProcessorCache =
        ProjectUtil.getAnnotationProcessorCache(project);
    Map<Path, List<Scope>> basePathToScopeMap =
        annotationProcessorCache.getBasePathToExternalDependencyScopeMap();

    ImmutableList.Builder<OExternalDependency> bazelDependencies = ImmutableList.builder();

    groupToDependencyMap.forEach(
        (basePath, dependencies) -> {
          ImmutableList.Builder<OExternalDependency> localPrebuiltDependencies =
              ImmutableList.builder();
          ImmutableList.Builder<OExternalDependency> prebuiltDependencies = ImmutableList.builder();
          ImmutableList.Builder<OExternalDependency> httpFileDependencies = ImmutableList.builder();

          if (externalDependenciesExtension.shouldDownloadInBuck()) {
            dependencies.forEach(
                dependency -> {
                  if (dependency instanceof LocalOExternalDependency) {
                    localPrebuiltDependencies.add(dependency);
                  } else if (isPrebuiltDependency(dependency)) {
                    prebuiltDependencies.add(dependency);
                    bazelDependencies.add(dependency);
                  } else {
                    httpFileDependencies.add(dependency);
                    bazelDependencies.add(dependency);
                  }
                });
          } else {
            localPrebuiltDependencies.addAll(dependencies);
          }

          preComputeSha256(prebuiltDependencies.build(), sha256Cache);
          preComputeSha256(httpFileDependencies.build(), sha256Cache);

          ImmutableList.Builder<Rule> rulesBuilder = ImmutableList.builder();
          rulesBuilder.addAll(LocalPrebuiltRuleComposer.compose(localPrebuiltDependencies.build()));
          rulesBuilder.addAll(
              PrebuiltRuleComposer.compose(prebuiltDependencies.build(), sha256Cache));
          rulesBuilder.addAll(
              HttpFileRuleComposer.compose(httpFileDependencies.build(), sha256Cache));

          // Add annotation processor rules
          List<Scope> scopeList = basePathToScopeMap.get(basePath);
          if (scopeList != null) {
            rulesBuilder.addAll(JavaAnnotationProcessorRuleComposer.compose(scopeList));
          }

          buckFileManager.writeToBuckFile(
              rulesBuilder.build(), basePath.resolve(okBuckExtension.buildFileName).toFile());

          createSymlinks(basePath, localPrebuiltDependencies.build());
        });

    if (okBuckExtension.getExternalDependenciesExtension().bazelDepsEnabled()) {
      ImmutableList.Builder<Rule> bazelRulesBuilder = ImmutableList.builder();
      bazelRulesBuilder.add(new BazelFunctionRule());
      bazelRulesBuilder.addAll(
          BazelHttpFileRuleComposer.compose(bazelDependencies.build(), sha256Cache));

      buckFileManager.writeToBuckFile(
          "", cacheDir.toPath().resolve(okBuckExtension.buildFileName).toFile(), false);
      File defsBzl = cacheDir.toPath().resolve("defs.bzl").toFile();
      buckFileManager.writeToBuckFile(bazelRulesBuilder.build(), defsBzl);
      buckFileManager.writeToBuckFile("\n", defsBzl, true);
    }
  }
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -



