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.