diff options
author | 2015-04-08 16:46:35 +0000 | |
---|---|---|
committer | 2015-04-08 18:40:25 +0000 | |
commit | 166dc45e5eeed118d72928eb53db0f9a1eabb28d (patch) | |
tree | 4caea4555c746247382fe6d258b468e8a8aa14bb /src/main/java/com/google/devtools/build/lib/rules/SkylarkRuleContext.java | |
parent | c2efe4556849e4eaa11472d070e5172d1629af92 (diff) |
Skylark: The new_file functions don't need a root argument anymore.
--
MOS_MIGRATED_REVID=90618694
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/rules/SkylarkRuleContext.java')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/rules/SkylarkRuleContext.java | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/SkylarkRuleContext.java b/src/main/java/com/google/devtools/build/lib/rules/SkylarkRuleContext.java index 5e63a5727d..ec00b301ef 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/SkylarkRuleContext.java +++ b/src/main/java/com/google/devtools/build/lib/rules/SkylarkRuleContext.java @@ -436,6 +436,17 @@ public final class SkylarkRuleContext { } @SkylarkCallable(doc = "Creates a file object with the given filename. " + DOC_NEW_FILE_TAIL) + public Artifact newFile(String filename) { + PathFragment fragment = ruleContext.getLabel().getPackageFragment(); + for (String pathFragmentString : filename.split("/")) { + fragment = fragment.getRelative(pathFragmentString); + } + Root root = ruleContext.getBinOrGenfilesDirectory(); + return ruleContext.getAnalysisEnvironment().getDerivedArtifact(fragment, root); + } + + // Kept for compatibility with old code. + @SkylarkCallable(hidden = true, doc = "") public Artifact newFile(Root root, String filename) { PathFragment fragment = ruleContext.getLabel().getPackageFragment(); for (String pathFragmentString : filename.split("/")) { @@ -446,6 +457,15 @@ public final class SkylarkRuleContext { @SkylarkCallable(doc = "Creates a new file object, derived from the given file and suffix. " + DOC_NEW_FILE_TAIL) + public Artifact newFile(Artifact baseArtifact, String suffix) { + PathFragment original = baseArtifact.getRootRelativePath(); + PathFragment fragment = original.replaceName(original.getBaseName() + suffix); + Root root = ruleContext.getBinOrGenfilesDirectory(); + return ruleContext.getAnalysisEnvironment().getDerivedArtifact(fragment, root); + } + + // Kept for compatibility with old code. + @SkylarkCallable(hidden = true, doc = "") public Artifact newFile(Root root, Artifact baseArtifact, String suffix) { PathFragment original = baseArtifact.getRootRelativePath(); PathFragment fragment = original.replaceName(original.getBaseName() + suffix); |