in plugin/src/main/java/com/uber/okbuck/generator/BuckFileGenerator.java [74:127]
private static List<Rule> createRules(Project project, boolean integrationTestsEnabled) {
List<Rule> rules = new ArrayList<>();
ProjectType projectType = ProjectUtil.getType(project);
ProjectCache.getTargetCache(project)
.getTargets()
.forEach(
(name, target) -> {
switch (projectType) {
case JAVA_LIB:
case GROOVY_LIB:
case KOTLIN_LIB:
case SCALA_LIB:
rules.addAll(
createRules(
(JvmTarget) target,
projectType.getMainRuleType(),
projectType.getTestRuleType(),
projectType.getIntegrationTestRuleType(),
integrationTestsEnabled));
break;
case ANDROID_LIB:
AndroidLibTarget androidLibTarget = (AndroidLibTarget) target;
List<Rule> targetRules = createRules(androidLibTarget);
rules.addAll(targetRules);
if (androidLibTarget.getLibInstrumentationTarget() != null) {
rules.addAll(
createRules(androidLibTarget.getLibInstrumentationTarget(), targetRules));
}
break;
case ANDROID_APP:
AndroidAppTarget androidAppTarget = (AndroidAppTarget) target;
targetRules = createRules(androidAppTarget);
rules.addAll(targetRules);
if (androidAppTarget.getAppInstrumentationTarget() != null) {
rules.addAll(
createRules(
androidAppTarget.getAppInstrumentationTarget(),
androidAppTarget,
targetRules));
}
break;
default:
throw new IllegalArgumentException(
"Okbuck does not support "
+ project
+ "type projects yet. Please use the extension option okbuck.buckProjects to exclude "
+ project);
}
});
// de-dup rules by name
return new ArrayList<>(new LinkedHashSet<>(rules));
}