aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorGravatar Chris Parsons <cparsons@google.com>2016-10-10 21:58:47 +0000
committerGravatar Yue Gan <yueg@google.com>2016-10-11 08:45:33 +0000
commita725afe0644b0a6fe179e10e8c56ed3eedb81de5 (patch)
treead187fc4ff6352e81eaf42e824c3b052d85f74b9 /src
parentd5f740d9809b84a8aeeb6fb0d70538d7b56b1dcf (diff)
Expose objc_provider keys sdk_frameworks and weak_sdk_frameworks to skylark
-- MOS_MIGRATED_REVID=135724830
Diffstat (limited to 'src')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProvider.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProviderSkylarkConverters.java28
2 files changed, 30 insertions, 0 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProvider.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProvider.java
index 5f48a9db82..7cde0f5a4d 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProvider.java
@@ -388,6 +388,8 @@ public final class ObjcProvider extends SkylarkClassObject implements Transitive
DEFINE,
ASSET_CATALOG,
SDK_DYLIB,
+ SDK_FRAMEWORK,
+ WEAK_SDK_FRAMEWORK,
XCDATAMODEL,
MODULE_MAP,
MERGE_ZIP,
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProviderSkylarkConverters.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProviderSkylarkConverters.java
index caf0021c8c..7e3b443119 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProviderSkylarkConverters.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProviderSkylarkConverters.java
@@ -47,6 +47,7 @@ public class ObjcProviderSkylarkConverters {
.put(Artifact.class, new DirectConverter())
.put(String.class, new DirectConverter())
.put(PathFragment.class, new PathFragmentToStringConverter())
+ .put(SdkFramework.class, new SdkFrameworkToStringConverter())
.put(BundleableFile.class, new BundleableFileToStructConverter())
.build();
@@ -123,6 +124,33 @@ public class ObjcProviderSkylarkConverters {
return result.build();
}
}
+
+ /**
+ * A converter that that translates between a java {@link SdkFramework} and a skylark string.
+ */
+ private static class SdkFrameworkToStringConverter implements Converter {
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public Object valueForSkylark(Key<?> javaKey, NestedSet<?> javaValue) {
+ NestedSetBuilder<String> result = NestedSetBuilder.stableOrder();
+ for (SdkFramework framework : (Iterable<SdkFramework>) javaValue) {
+ result.add(framework.getName());
+ }
+ return SkylarkNestedSet.of(String.class, result.build());
+ }
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public Iterable<?> valueForJava(Key<?> javaKey, Object skylarkValue) {
+ validateTypes(skylarkValue, String.class, javaKey.getSkylarkKeyName());
+ NestedSetBuilder<SdkFramework> result = NestedSetBuilder.stableOrder();
+ for (String path : (Iterable<String>) skylarkValue) {
+ result.add(new SdkFramework(path));
+ }
+ return result.build();
+ }
+ }
/**
* A converter that that translates between a java BundleableFile and a skylark struct.