aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/rules/SkylarkRuleContext.java
diff options
context:
space:
mode:
authorGravatar Laurent Le Brun <laurentlb@google.com>2015-04-08 16:46:35 +0000
committerGravatar Han-Wen Nienhuys <hanwen@google.com>2015-04-08 18:40:25 +0000
commit166dc45e5eeed118d72928eb53db0f9a1eabb28d (patch)
tree4caea4555c746247382fe6d258b468e8a8aa14bb /src/main/java/com/google/devtools/build/lib/rules/SkylarkRuleContext.java
parentc2efe4556849e4eaa11472d070e5172d1629af92 (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.java20
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);