diff --git a/.buckconfig b/.buckconfig index fe84b7850..1718c43cd 100644 --- a/.buckconfig +++ b/.buckconfig @@ -1,21 +1,21 @@ [project] - glob_handler = watchman - allow_symlinks = forbid - ide = intellij - ignore = .git, .idea, .gradle, local.properties, **/.DS_Store, **/*.iml - temp_files = ^#.*#$, .*~$, .*\.swp$ - parallel_parsing = true - build_file_search_method = watchman + glob_handler = watchman + allow_symlinks = forbid + ide = intellij + ignore = .git, .idea, .gradle, local.properties, **/.DS_Store, **/*.iml + temp_files = ^#.*#$, .*~$, .*.swp$ + parallel_parsing = true + build_file_search_method = watchman [httpserver] - port = 0 + port = 0 [intellij] - android_module_sdk_name = Android API 24 Platform - android_module_sdk_type = AndroidSDK - jdk_name = 1.8 - jdk_type = JavaSDK - default_android_manifest_path = src/main/AndroidManifest.xml + android_module_sdk_name = Android API 24 Platform + android_module_sdk_type = AndroidSDK + jdk_name = 1.8 + jdk_type = JavaSDK + default_android_manifest_path = src/main/AndroidManifest.xml [log] max_traces = 5 diff --git a/buildSrc/src/main/groovy/com/uber/okbuck/OkBuckGradlePlugin.groovy b/buildSrc/src/main/groovy/com/uber/okbuck/OkBuckGradlePlugin.groovy index b74aabb7f..cbbcdd229 100644 --- a/buildSrc/src/main/groovy/com/uber/okbuck/OkBuckGradlePlugin.groovy +++ b/buildSrc/src/main/groovy/com/uber/okbuck/OkBuckGradlePlugin.groovy @@ -163,6 +163,7 @@ class OkBuckGradlePlugin implements Plugin { if (hasGroovyLib) { GroovyUtil.setupGroovyHome(project) } + generate(project, okbuckExt, hasGroovyLib ? GroovyUtil.GROOVY_HOME_LOCATION : null) @@ -180,12 +181,20 @@ class OkBuckGradlePlugin implements Plugin { dotBuckConfig.createNewFile() } + // Setup defs + FileUtil.copyResourceToProject("defs/OKBUCK_DEFS", project.file(OKBUCK_DEFS)) + Set defs = okbuckExt.extraDefs.collect { + "//${FileUtil.getRelativePath(project.rootDir, it)}" + } + defs.add("//${OKBUCK_DEFS}") + // generate .buckconfig.local File dotBuckConfigLocal = project.file(".buckconfig.local") - FileUtil.copyResourceToProject("defs/OKBUCK_DEFS", project.file(OKBUCK_DEFS)) PrintStream configPrinter = new PrintStream(dotBuckConfigLocal) - DotBuckConfigLocalGenerator.generate(okbuckExt, groovyHome, - ProguardUtil.getProguardJarPath(project)).print(configPrinter) + DotBuckConfigLocalGenerator.generate(okbuckExt, + groovyHome, + ProguardUtil.getProguardJarPath(project), + defs).print(configPrinter) IOUtils.closeQuietly(configPrinter) } diff --git a/buildSrc/src/main/groovy/com/uber/okbuck/config/DotBuckConfigLocalFile.java b/buildSrc/src/main/groovy/com/uber/okbuck/config/DotBuckConfigLocalFile.java index e70b5a97e..e7d96055b 100644 --- a/buildSrc/src/main/groovy/com/uber/okbuck/config/DotBuckConfigLocalFile.java +++ b/buildSrc/src/main/groovy/com/uber/okbuck/config/DotBuckConfigLocalFile.java @@ -1,12 +1,11 @@ package com.uber.okbuck.config; -import com.uber.okbuck.OkBuckGradlePlugin; - import org.apache.commons.lang.StringUtils; import java.io.PrintStream; import java.util.List; import java.util.Map; +import java.util.Set; public final class DotBuckConfigLocalFile extends BuckConfigFile { @@ -16,6 +15,7 @@ public final class DotBuckConfigLocalFile extends BuckConfigFile { private final List ignore; private final String groovyHome; private final String proguardJar; + private final Set defs; public DotBuckConfigLocalFile( Map aliases, @@ -23,13 +23,15 @@ public DotBuckConfigLocalFile( String target, List ignore, String groovyHome, - String proguardJar) { + String proguardJar, + Set defs) { this.aliases = aliases; this.buildToolVersion = buildToolVersion; this.target = target; this.ignore = ignore; this.groovyHome = groovyHome; this.proguardJar = proguardJar; + this.defs = defs; } @Override @@ -44,12 +46,14 @@ public final void print(PrintStream printer) { printer.println(); printer.println("[project]"); - printer.print("\tignore = " + String.join(",", ignore)); + printer.print("\tignore = " + String.join(", ", ignore)); printer.println(); - printer.println("[buildfile]"); - printer.print("\tincludes = //" + OkBuckGradlePlugin.OKBUCK_DEFS); - printer.println(); + if (!defs.isEmpty()) { + printer.println("[buildfile]"); + printer.print("\tincludes = " + String.join(" ", defs)); + printer.println(); + } if (!StringUtils.isEmpty(groovyHome)) { printer.println("[groovy]"); diff --git a/buildSrc/src/main/groovy/com/uber/okbuck/generator/BuckFileGenerator.groovy b/buildSrc/src/main/groovy/com/uber/okbuck/generator/BuckFileGenerator.groovy index 6cb9c29a8..a5a8ef653 100644 --- a/buildSrc/src/main/groovy/com/uber/okbuck/generator/BuckFileGenerator.groovy +++ b/buildSrc/src/main/groovy/com/uber/okbuck/generator/BuckFileGenerator.groovy @@ -41,7 +41,6 @@ import com.uber.okbuck.rule.android.ExopackageAndroidLibraryRule import com.uber.okbuck.rule.android.GenAidlRule import com.uber.okbuck.rule.base.BuckRule import com.uber.okbuck.rule.base.GenRule -import com.uber.okbuck.rule.java.JavaLibraryWrapperRule import org.apache.commons.io.IOUtils import org.gradle.api.Project diff --git a/buildSrc/src/main/groovy/com/uber/okbuck/generator/DotBuckConfigLocalGenerator.groovy b/buildSrc/src/main/groovy/com/uber/okbuck/generator/DotBuckConfigLocalGenerator.groovy index aa8c76bc4..825d9de6e 100644 --- a/buildSrc/src/main/groovy/com/uber/okbuck/generator/DotBuckConfigLocalGenerator.groovy +++ b/buildSrc/src/main/groovy/com/uber/okbuck/generator/DotBuckConfigLocalGenerator.groovy @@ -16,7 +16,10 @@ final class DotBuckConfigLocalGenerator { /** * generate {@link DotBuckConfigLocalFile} */ - static DotBuckConfigLocalFile generate(OkBuckExtension okbuck, String groovyHome, String proguardJar) { + static DotBuckConfigLocalFile generate(OkBuckExtension okbuck, + String groovyHome, + String proguardJar, + Set defs) { Map aliases = [:] okbuck.buckProjects.findAll { Project project -> ProjectUtil.getType(project) == ProjectType.ANDROID_APP @@ -32,6 +35,7 @@ final class DotBuckConfigLocalGenerator { okbuck.target, [".git", "**/.svn"], groovyHome, - proguardJar) + proguardJar, + defs) } } diff --git a/buildSrc/src/main/groovy/com/uber/okbuck/rule/android/AndroidRule.groovy b/buildSrc/src/main/groovy/com/uber/okbuck/rule/android/AndroidRule.groovy index 147f571d3..453de3a7c 100644 --- a/buildSrc/src/main/groovy/com/uber/okbuck/rule/android/AndroidRule.groovy +++ b/buildSrc/src/main/groovy/com/uber/okbuck/rule/android/AndroidRule.groovy @@ -120,14 +120,14 @@ abstract class AndroidRule extends BuckRule { printer.println("\t\t'${processor}',") } printer.println("\t],") - } - if (!mAptDeps.empty) { - printer.println("\tannotation_processor_deps = [") - for (String dep : mAptDeps.sort()) { - printer.println("\t\t'${dep}',") + if (!mAptDeps.empty) { + printer.println("\tannotation_processor_deps = [") + for (String dep : mAptDeps.sort()) { + printer.println("\t\t'${dep}',") + } + printer.println("\t],") } - printer.println("\t],") } if (!mProvidedDeps.empty) { diff --git a/buildSrc/src/main/java/com/uber/okbuck/extension/OkBuckExtension.java b/buildSrc/src/main/java/com/uber/okbuck/extension/OkBuckExtension.java index e552ca093..75749b10a 100644 --- a/buildSrc/src/main/java/com/uber/okbuck/extension/OkBuckExtension.java +++ b/buildSrc/src/main/java/com/uber/okbuck/extension/OkBuckExtension.java @@ -2,7 +2,9 @@ import org.gradle.api.Project; +import java.io.File; import java.util.HashMap; +import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; @@ -56,6 +58,9 @@ public class OkBuckExtension { */ public Map>> extraBuckOpts = new HashMap<>(); + /** Extra buck defs **/ + public Set extraDefs = new HashSet<>(); + /** * Whether to turn on buck's resource_union to reflect gradle's resource merging behavior */