aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/rules/SkylarkRuleConfiguredTargetBuilder.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/rules/SkylarkRuleConfiguredTargetBuilder.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/SkylarkRuleConfiguredTargetBuilder.java18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/SkylarkRuleConfiguredTargetBuilder.java b/src/main/java/com/google/devtools/build/lib/rules/SkylarkRuleConfiguredTargetBuilder.java
index ad7ff5e088..124f0f22c7 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/SkylarkRuleConfiguredTargetBuilder.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/SkylarkRuleConfiguredTargetBuilder.java
@@ -41,6 +41,8 @@ import com.google.devtools.build.lib.syntax.SkylarkNestedSet;
import com.google.devtools.build.lib.syntax.SkylarkType;
import com.google.devtools.build.lib.syntax.Type;
+import java.util.Map;
+
/**
* A helper class to build Rule Configured Targets via runtime loaded rule implementations
* defined using the Skylark Build Extension Language.
@@ -148,6 +150,20 @@ public final class SkylarkRuleConfiguredTargetBuilder {
return executable;
}
+ private static void addOutputGroups(Object value, Location loc,
+ RuleConfiguredTargetBuilder builder)
+ throws EvalException {
+ Map<String, SkylarkNestedSet> outputGroups = SkylarkType
+ .castMap(value, String.class, SkylarkNestedSet.class, "output_groups");
+
+ for (String outputGroup : outputGroups.keySet()) {
+ SkylarkNestedSet objects = outputGroups.get(outputGroup);
+ builder.addOutputGroup(outputGroup,
+ SkylarkType.cast(objects, SkylarkNestedSet.class, Artifact.class, loc,
+ "Output group '%s'", outputGroup).getSet(Artifact.class));
+ }
+ }
+
private static ConfiguredTarget addStructFields(RuleContext ruleContext,
RuleConfiguredTargetBuilder builder, Object target, Artifact executable)
throws EvalException {
@@ -169,6 +185,8 @@ public final class SkylarkRuleConfiguredTargetBuilder {
dataRunfiles = cast("data_runfiles", struct, Runfiles.class, loc);
} else if (key.equals("default_runfiles")) {
defaultRunfiles = cast("default_runfiles", struct, Runfiles.class, loc);
+ } else if (key.equals("output_groups")) {
+ addOutputGroups(struct.getValue(key), loc, builder);
} else if (!key.equals("executable")) {
// We handled executable already.
builder.addSkylarkTransitiveInfo(key, struct.getValue(key), loc);