[go: nahoru, domu]

Support for -Pandroidx.projects property

as an alternate to ANDROIDX_PROJECTS

to facilitate spawning several GradleBuild's, each with a different value of this property

Bug: 180012150
Test: this is tested by the commit after it
Test: Treehugger runs busytown/androidx.sh

Change-Id: Ib3c732a1ff5db8f8bddadfeedfee942aa48ca767
diff --git a/settings.gradle b/settings.gradle
index 203f192..6e1bd55 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -30,12 +30,28 @@
     WEAR,
 }
 
-private static Set<BuildType> createRequestedFilter() {
+private String getRequestedProjectSubsetName() {
+    if (startParameter.projectProperties.containsKey("androidx.projects")) {
+        return startParameter.projectProperties["androidx.projects"].toUpperCase()
+    }
+    if (System.getenv().containsKey("ANDROIDX_PROJECTS")) {
+        return System.getenv()["ANDROIDX_PROJECTS"].toUpperCase()
+    }
+    return null
+}
+
+boolean isAllProjects() {
+    String projectSubsetName = getRequestedProjectSubsetName()
+    return requestedProjectSubsetName == null || requestedProjectSubsetName == "ALL"
+}
+
+private Set<BuildType> createRequestedFilter() {
     Set<BuildType> filter = new HashSet<>()
-    if (!System.getenv().containsKey("ANDROIDX_PROJECTS")) return null
-    String[] requestedFilter = System.getenv("ANDROIDX_PROJECTS").split(",")
+    String projectSubsetName = getRequestedProjectSubsetName()
+    if (projectSubsetName == null) return null
+    String[] requestedFilter = projectSubsetName.split(",")
     for (String requestedType : requestedFilter) {
-        switch (requestedType.toUpperCase()) {
+        switch (requestedType) {
             case "MAIN":
                 filter.add(BuildType.MAIN)
                 break
@@ -74,7 +90,8 @@
  * Note that null value means all the projects should be included
  */
 @Field
-Set<BuildType> requestedFilter = createRequestedFilter()
+Set<BuildType> requestedFilter
+requestedFilter = createRequestedFilter()
 
 boolean shouldIncludeForFilter(List<BuildType> includeList) {
     if (includeList.empty) return true
@@ -655,11 +672,6 @@
 includeProject(":icing:nativeLib", new File(externalRoot, "icing/nativeLib"), [BuildType.MAIN])
 includeProject(":noto-emoji-compat", new File(externalRoot, "noto-fonts/emoji-compat"), [BuildType.MAIN])
 
-static boolean isAllProjects() {
-    if (!System.getenv().containsKey("ANDROIDX_PROJECTS")) return true
-    return System.getenv("ANDROIDX_PROJECTS") == "ALL"
-}
-
 if (isAllProjects()) {
     includeProject(":docs-tip-of-tree", "docs-tip-of-tree")
     includeProject(":docs-public", "docs-public")