aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/rules/android/AndroidResources.java
diff options
context:
space:
mode:
authorGravatar asteinb <asteinb@google.com>2018-05-09 07:54:07 -0700
committerGravatar Copybara-Service <copybara-piper@google.com>2018-05-09 07:55:57 -0700
commit0c94ec371dcf68e7e7b89fecc2561d16622fe112 (patch)
treeddb28751350700c2c5722e235ac9fcd193ce463a /src/main/java/com/google/devtools/build/lib/rules/android/AndroidResources.java
parent17abb6064758dfff2102576471084d2d81b61cd0 (diff)
Get resource processing settings from method params instead of rule attrs
In a previous review, I left some setting controlled only by rule attributes. Now actually specify them in Skylark method params. Data binding and should mimic behavior in existing android_* rules. For library, aapt_version cannot be passed in; we use the flag value. I left the SDK attribute intact as it's private. People should be setting defaults in rules but otherwise overriding SDK with flags, not parameters. This mimics existing behavior. RELNOTES: none PiperOrigin-RevId: 195970351
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/rules/android/AndroidResources.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/AndroidResources.java20
1 files changed, 16 insertions, 4 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidResources.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidResources.java
index d548ddbcdf..7858091b3d 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidResources.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidResources.java
@@ -27,6 +27,7 @@ import com.google.devtools.build.lib.analysis.configuredtargets.RuleConfiguredTa
import com.google.devtools.build.lib.packages.AttributeMap;
import com.google.devtools.build.lib.packages.RuleClass.ConfiguredTargetFactory.RuleErrorException;
import com.google.devtools.build.lib.packages.RuleErrorConsumer;
+import com.google.devtools.build.lib.rules.android.AndroidConfiguration.AndroidAaptVersion;
import com.google.devtools.build.lib.vfs.PathFragment;
import java.util.Arrays;
import java.util.LinkedHashSet;
@@ -399,9 +400,14 @@ public class AndroidResources {
}
/** Parses these resources. */
- public ParsedAndroidResources parse(RuleContext ruleContext, StampedAndroidManifest manifest)
- throws InterruptedException, RuleErrorException {
- return ParsedAndroidResources.parseFrom(ruleContext, this, manifest);
+ public ParsedAndroidResources parse(
+ RuleContext ruleContext,
+ StampedAndroidManifest manifest,
+ boolean enableDataBinding,
+ AndroidAaptVersion aaptVersion)
+ throws InterruptedException {
+ return ParsedAndroidResources.parseFrom(
+ ruleContext, this, manifest, enableDataBinding, aaptVersion);
}
/**
@@ -411,7 +417,13 @@ public class AndroidResources {
public ValidatedAndroidResources process(
RuleContext ruleContext, StampedAndroidManifest manifest, boolean neverlink)
throws RuleErrorException, InterruptedException {
- return parse(ruleContext, manifest).merge(ruleContext, neverlink).validate(ruleContext);
+ boolean enableDataBinding = DataBinding.isEnabled(ruleContext);
+ AndroidAaptVersion aaptVersion = AndroidAaptVersion.chooseTargetAaptVersion(ruleContext);
+ ResourceDependencies resourceDeps = ResourceDependencies.fromRuleDeps(ruleContext, neverlink);
+
+ return parse(ruleContext, manifest, enableDataBinding, aaptVersion)
+ .merge(ruleContext, resourceDeps, enableDataBinding, aaptVersion)
+ .validate(ruleContext, aaptVersion);
}
@Override