aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/rules/platform/ConstraintSetting.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/rules/platform/ConstraintSetting.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/platform/ConstraintSetting.java28
1 files changed, 28 insertions, 0 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/platform/ConstraintSetting.java b/src/main/java/com/google/devtools/build/lib/rules/platform/ConstraintSetting.java
index 653ea2fe4f..6c903fd04a 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/platform/ConstraintSetting.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/platform/ConstraintSetting.java
@@ -14,13 +14,18 @@
package com.google.devtools.build.lib.rules.platform;
+import com.google.common.base.Function;
+import com.google.common.collect.Iterables;
import com.google.devtools.build.lib.analysis.ConfiguredTarget;
import com.google.devtools.build.lib.analysis.FileProvider;
import com.google.devtools.build.lib.analysis.FilesToRunProvider;
import com.google.devtools.build.lib.analysis.RuleConfiguredTargetBuilder;
import com.google.devtools.build.lib.analysis.RuleContext;
import com.google.devtools.build.lib.analysis.RunfilesProvider;
+import com.google.devtools.build.lib.analysis.TransitiveInfoCollection;
+import com.google.devtools.build.lib.analysis.platform.ConstraintSettingInfo;
import com.google.devtools.build.lib.rules.RuleConfiguredTargetFactory;
+import com.google.devtools.build.lib.util.Preconditions;
/**
* Defines a category of constraint that can be fulfilled by a constraint_value rule in a platform
@@ -39,4 +44,27 @@ public class ConstraintSetting implements RuleConfiguredTargetFactory {
.addNativeDeclaredProvider(ConstraintSettingInfo.create(ruleContext.getLabel()))
.build();
}
+
+ /** Retrieves and casts the provider from the given target. */
+ public static ConstraintSettingInfo constraintSetting(TransitiveInfoCollection target) {
+ Object provider = target.get(ConstraintSettingInfo.SKYLARK_IDENTIFIER);
+ if (provider == null) {
+ return null;
+ }
+ Preconditions.checkState(provider instanceof ConstraintSettingInfo);
+ return (ConstraintSettingInfo) provider;
+ }
+
+ /** Retrieves and casts the providers from the given targets. */
+ public static Iterable<ConstraintSettingInfo> constraintSettings(
+ Iterable<? extends TransitiveInfoCollection> targets) {
+ return Iterables.transform(
+ targets,
+ new Function<TransitiveInfoCollection, ConstraintSettingInfo>() {
+ @Override
+ public ConstraintSettingInfo apply(TransitiveInfoCollection target) {
+ return constraintSetting(target);
+ }
+ });
+ }
}