diff options
author | 2016-10-10 21:58:47 +0000 | |
---|---|---|
committer | 2016-10-11 08:45:33 +0000 | |
commit | a725afe0644b0a6fe179e10e8c56ed3eedb81de5 (patch) | |
tree | ad187fc4ff6352e81eaf42e824c3b052d85f74b9 /src | |
parent | d5f740d9809b84a8aeeb6fb0d70538d7b56b1dcf (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.java | 2 | ||||
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProviderSkylarkConverters.java | 28 |
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. |