Update AndroidManifest to accept a SourcePath for a skeleton argument.
diff --git a/src/com/facebook/buck/android/AndroidManifest.java b/src/com/facebook/buck/android/AndroidManifest.java
index ed531f3..fb7270d 100644
--- a/src/com/facebook/buck/android/AndroidManifest.java
+++ b/src/com/facebook/buck/android/AndroidManifest.java
@@ -27,12 +27,15 @@
import com.facebook.buck.rules.Buildable;
import com.facebook.buck.rules.BuildableContext;
import com.facebook.buck.rules.DependencyGraph;
+import com.facebook.buck.rules.SourcePath;
+import com.facebook.buck.rules.SourcePaths;
import com.facebook.buck.step.Step;
import com.facebook.buck.util.BuckConstant;
import com.google.common.base.Preconditions;
import com.google.common.collect.ImmutableList;
import java.io.IOException;
+import java.util.Collections;
import java.util.List;
/**
@@ -64,16 +67,16 @@
public class AndroidManifest extends AbstractBuildable {
private final BuildTarget buildTarget;
- private final String skeletonFile;
+ private final SourcePath skeletonFile;
- protected AndroidManifest(BuildTarget buildTarget, String skeletonFile) {
+ protected AndroidManifest(BuildTarget buildTarget, SourcePath skeletonFile) {
this.buildTarget = Preconditions.checkNotNull(buildTarget);
this.skeletonFile = Preconditions.checkNotNull(skeletonFile);
}
@Override
- public List<String> getInputsToCompareToOutput() {
- return ImmutableList.of(skeletonFile);
+ public Iterable<String> getInputsToCompareToOutput() {
+ return SourcePaths.filterInputsToCompareToOutput(Collections.singleton(skeletonFile));
}
public BuildTarget getBuildTarget() {
@@ -93,7 +96,7 @@
ImmutableList.Builder<Step> commands = ImmutableList.builder();
commands.add(new GenerateManifestStep(
- skeletonFile,
+ skeletonFile.resolve(context).toString(),
transitiveDependencies.manifestFiles,
getPathToOutputFile()));
@@ -125,7 +128,7 @@
public static class Builder extends AbstractBuildable.Builder {
- protected String skeletonFile;
+ protected SourcePath skeletonFile;
private Builder(AbstractBuildRuleBuilderParams params) {
super(params);
@@ -142,7 +145,7 @@
return BuildRuleType.ANDROID_MANIFEST;
}
- public Builder setSkeletonFile(String skeletonFile) {
+ public Builder setSkeletonFile(SourcePath skeletonFile) {
this.skeletonFile = skeletonFile;
return this;
}
diff --git a/src/com/facebook/buck/android/AndroidManifestBuildRuleFactory.java b/src/com/facebook/buck/android/AndroidManifestBuildRuleFactory.java
index 071f30e..c7fa58f 100644
--- a/src/com/facebook/buck/android/AndroidManifestBuildRuleFactory.java
+++ b/src/com/facebook/buck/android/AndroidManifestBuildRuleFactory.java
@@ -15,9 +15,10 @@
*/
package com.facebook.buck.android;
+import com.facebook.buck.rules.AbstractBuildRuleBuilderParams;
import com.facebook.buck.rules.AbstractBuildRuleFactory;
import com.facebook.buck.rules.BuildRuleFactoryParams;
-import com.facebook.buck.rules.AbstractBuildRuleBuilderParams;
+import com.facebook.buck.rules.SourcePath;
public final class AndroidManifestBuildRuleFactory extends AbstractBuildRuleFactory<AndroidManifest.Builder> {
@@ -30,7 +31,7 @@
protected void amendBuilder(AndroidManifest.Builder builder, BuildRuleFactoryParams params) {
// skeleton file
String skeletonFile = params.getRequiredStringAttribute("skeleton");
- String skeletonPath = params.resolveFilePathRelativeToBuildFileDirectory(skeletonFile);
+ SourcePath skeletonPath = params.asSourcePath(skeletonFile, builder);
builder.setSkeletonFile(skeletonPath);
}
}
diff --git a/test/com/facebook/buck/android/AndroidManifestTest.java b/test/com/facebook/buck/android/AndroidManifestTest.java
index ab6bff7..9a6b74f 100644
--- a/test/com/facebook/buck/android/AndroidManifestTest.java
+++ b/test/com/facebook/buck/android/AndroidManifestTest.java
@@ -31,6 +31,7 @@
import com.facebook.buck.rules.FakeAbstractBuildRuleBuilderParams;
import com.facebook.buck.rules.FakeBuildRule;
import com.facebook.buck.rules.FakeBuildableContext;
+import com.facebook.buck.rules.FileSourcePath;
import com.facebook.buck.step.Step;
import com.facebook.buck.testutil.MoreAsserts;
import com.facebook.buck.util.BuckConstant;
@@ -62,7 +63,7 @@
assertEquals(
ImmutableList.of("java/com/example/AndroidManifestSkeleton.xml"),
- androidManifestRule.getInputsToCompareToOutput());
+ ImmutableList.copyOf(androidManifestRule.getInputsToCompareToOutput()));
assertEquals(
BuckConstant.GEN_DIR + "/java/com/example/AndroidManifest__manifest__.xml",
androidManifestRule.getPathToOutputFile());
@@ -109,7 +110,7 @@
AndroidManifest.Builder builder = AndroidManifest.newManifestMergeRuleBuilder(
new FakeAbstractBuildRuleBuilderParams());
final AndroidManifest androidManifest = builder
- .setSkeletonFile("java/com/example/AndroidManifestSkeleton.xml")
+ .setSkeletonFile(new FileSourcePath("java/com/example/AndroidManifestSkeleton.xml"))
.newBuildable(buildRuleParams, new BuildRuleResolver());
// Then create a BuildRule whose Buildable is the AndroidManifest.