aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/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);