aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com
diff options
context:
space:
mode:
authorGravatar Dmitry Lomov <dslomov@google.com>2016-01-11 18:48:15 +0000
committerGravatar Damien Martin-Guillerez <dmarting@google.com>2016-01-11 20:10:02 +0000
commita50f5703d280d7db4404258637e19475f712610f (patch)
tree89cf5060eed7b8c4be896a4749ac393c3bff1108 /src/main/java/com
parent37265a87c7aa9743a2b20069be85d03529b18534 (diff)
Provide rule class name to aspects.
-- MOS_MIGRATED_REVID=111866202
Diffstat (limited to 'src/main/java/com')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/SkylarkRuleContext.java19
1 files changed, 16 insertions, 3 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 83f24898e0..5b22a0fde0 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
@@ -324,6 +324,7 @@ public final class SkylarkRuleContext {
}
return new SkylarkRuleAttributesCollection(
+ ruleContext.getRule().getRuleClass(),
attrBuilder.build(),
executableBuilder.build(),
fileBuilder.build(),
@@ -341,13 +342,15 @@ public final class SkylarkRuleContext {
private final SkylarkClassObject fileObject;
private final SkylarkClassObject filesObject;
private final ImmutableMap<Artifact, FilesToRunProvider> executableRunfilesMap;
+ private final String ruleClassName;
private SkylarkRuleAttributesCollection(
- ImmutableMap<String, Object> attrs,
+ String ruleClassName, ImmutableMap<String, Object> attrs,
ImmutableMap<String, Object> executables,
ImmutableMap<String, Object> singleFiles,
ImmutableMap<String, Object> files,
ImmutableMap<Artifact, FilesToRunProvider> executableRunfilesMap) {
+ this.ruleClassName = ruleClassName;
attrObject =
new SkylarkClassObject(
attrs,
@@ -390,6 +393,13 @@ public final class SkylarkRuleContext {
return filesObject;
}
+ @SkylarkCallable(name = "kind", structField = true, doc =
+ "The kind of a rule, such as 'cc_library'")
+ public String getRuleClassName() {
+ return ruleClassName;
+ }
+
+
public ImmutableMap<Artifact, FilesToRunProvider> getExecutableRunfilesMap() {
return executableRunfilesMap;
}
@@ -494,10 +504,13 @@ public final class SkylarkRuleContext {
return outputsObject;
}
- @SkylarkCallable(structField = true, doc = "Returns rule attributes descriptor")
+ @SkylarkCallable(structField = true,
+ doc = "Returns rule attributes descriptor for the rule that aspect is applied to."
+ + " Only avaliable in aspect implementation functions.")
public SkylarkRuleAttributesCollection rule() throws EvalException {
if (ruleAttributesCollection == null) {
- throw new EvalException(Location.BUILTIN, "'rule' is not defined");
+ throw new EvalException(
+ Location.BUILTIN, "'rule' is only available in aspect implementations");
}
return ruleAttributesCollection;
}