diff options
author | Dmitry Lomov <dslomov@google.com> | 2016-01-11 18:48:15 +0000 |
---|---|---|
committer | Damien Martin-Guillerez <dmarting@google.com> | 2016-01-11 20:10:02 +0000 |
commit | a50f5703d280d7db4404258637e19475f712610f (patch) | |
tree | 89cf5060eed7b8c4be896a4749ac393c3bff1108 /src/main/java/com | |
parent | 37265a87c7aa9743a2b20069be85d03529b18534 (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.java | 19 |
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; } |