aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/rules/SkylarkRuleContext.java
diff options
context:
space:
mode:
authorGravatar Dmitry Lomov <dslomov@google.com>2016-02-19 19:39:26 +0000
committerGravatar Lukacs Berki <lberki@google.com>2016-02-22 16:06:08 +0000
commitb14c24b10497904bcdc3884fd102f70ddb20c591 (patch)
tree4e37717bd25bd62a84eeb46cb08950b5ee59c8ad /src/main/java/com/google/devtools/build/lib/rules/SkylarkRuleContext.java
parenta6e448253c289f3d5a353f038a5ea47227515a66 (diff)
Expose ``build_file_path`` to Skylark rules.
Also adds neccessary support to Skylark implementation of IDE info aspect. -- MOS_MIGRATED_REVID=115084383
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.java11
1 files changed, 10 insertions, 1 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 7fe48a03bd..e6b3a513fb 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
@@ -43,6 +43,7 @@ import com.google.devtools.build.lib.packages.BuildType;
import com.google.devtools.build.lib.packages.ImplicitOutputsFunction;
import com.google.devtools.build.lib.packages.ImplicitOutputsFunction.SkylarkImplicitOutputsFunction;
import com.google.devtools.build.lib.packages.OutputFile;
+import com.google.devtools.build.lib.packages.Package;
import com.google.devtools.build.lib.packages.RawAttributeMapper;
import com.google.devtools.build.lib.shell.ShellUtils;
import com.google.devtools.build.lib.shell.ShellUtils.TokenizationException;
@@ -400,7 +401,6 @@ public final class SkylarkRuleContext {
return ruleClassName;
}
-
public ImmutableMap<Artifact, FilesToRunProvider> getExecutableRunfilesMap() {
return executableRunfilesMap;
}
@@ -661,4 +661,13 @@ public final class SkylarkRuleContext {
public Artifact getVolatileWorkspaceStatus() {
return ruleContext.getAnalysisEnvironment().getVolatileWorkspaceStatusArtifact();
}
+
+ @SkylarkCallable(name = "build_file_path", structField = true, documented = true,
+ doc = "Returns path to the BUILD file for this rule, relative to the source root"
+ )
+ public String getBuildFileRelativePath() {
+ Package pkg = ruleContext.getRule().getPackage();
+ Root root = Root.asSourceRoot(pkg.getSourceRoot());
+ return pkg.getBuildFile().getPath().relativeTo(root.getPath()).getPathString();
+ }
}