diff options
author | 2015-12-23 13:21:32 +0000 | |
---|---|---|
committer | 2015-12-28 19:43:48 +0000 | |
commit | 4be58936360371f5c340c8cb12cad128dd1bf0fd (patch) | |
tree | 878cf172b9558e5018a2294e9341c2399f6bd278 /src | |
parent | c106344a210341123bf004c39fdb0956d560139f (diff) |
Expose output groups to Skylark.
--
MOS_MIGRATED_REVID=110834841
Diffstat (limited to 'src')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/rules/SkylarkRuleClassFunctions.java | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/SkylarkRuleClassFunctions.java b/src/main/java/com/google/devtools/build/lib/rules/SkylarkRuleClassFunctions.java index 1bbfdd3b3f..0815f36d06 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/SkylarkRuleClassFunctions.java +++ b/src/main/java/com/google/devtools/build/lib/rules/SkylarkRuleClassFunctions.java @@ -35,11 +35,17 @@ import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableSet; import com.google.devtools.build.lib.Constants; +import com.google.devtools.build.lib.actions.Artifact; import com.google.devtools.build.lib.analysis.BaseRuleClasses; +import com.google.devtools.build.lib.analysis.OutputGroupProvider; +import com.google.devtools.build.lib.analysis.TransitiveInfoCollection; import com.google.devtools.build.lib.analysis.config.BuildConfiguration; import com.google.devtools.build.lib.analysis.config.RunUnder; import com.google.devtools.build.lib.cmdline.Label; import com.google.devtools.build.lib.cmdline.LabelSyntaxException; +import com.google.devtools.build.lib.collect.nestedset.NestedSet; +import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder; +import com.google.devtools.build.lib.collect.nestedset.Order; import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable; import com.google.devtools.build.lib.events.Location; import com.google.devtools.build.lib.packages.AspectDefinition; @@ -81,6 +87,7 @@ import com.google.devtools.build.lib.syntax.Runtime; import com.google.devtools.build.lib.syntax.SkylarkCallbackFunction; import com.google.devtools.build.lib.syntax.SkylarkList; import com.google.devtools.build.lib.syntax.SkylarkModuleNameResolver; +import com.google.devtools.build.lib.syntax.SkylarkNestedSet; import com.google.devtools.build.lib.syntax.SkylarkSignatureProcessor; import com.google.devtools.build.lib.syntax.Type; import com.google.devtools.build.lib.syntax.Type.ConversionException; @@ -653,6 +660,29 @@ public class SkylarkRuleClassFunctions { } }; + @SkylarkSignature(name = "output_group", + documented = false, // TODO(dslomov): document. + objectType = TransitiveInfoCollection.class, + returnType = SkylarkNestedSet.class, + mandatoryPositionals = { + @Param(name = "self", type = TransitiveInfoCollection.class, doc = + "this target" + ), + @Param(name = "group_name", type = String.class, doc = + "Output group name" + ) + } + ) + public static final BuiltinFunction output_group = new BuiltinFunction("output_group") { + public SkylarkNestedSet invoke(TransitiveInfoCollection self, String group) { + OutputGroupProvider provider = self.getProvider(OutputGroupProvider.class); + NestedSet<Artifact> result = provider != null + ? provider.getOutputGroup(group) + : NestedSetBuilder.<Artifact>emptySet(Order.STABLE_ORDER); + return SkylarkNestedSet.of(Artifact.class, result); + } + }; + static { SkylarkSignatureProcessor.configureSkylarkFunctions(SkylarkRuleClassFunctions.class); } |