From 166dc45e5eeed118d72928eb53db0f9a1eabb28d Mon Sep 17 00:00:00 2001 From: Laurent Le Brun Date: Wed, 8 Apr 2015 16:46:35 +0000 Subject: Skylark: The new_file functions don't need a root argument anymore. -- MOS_MIGRATED_REVID=90618694 --- .../devtools/build/lib/rules/SkylarkRuleContext.java | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'src/main/java/com/google/devtools/build/lib/rules/SkylarkRuleContext.java') 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); -- cgit v1.2.3