diff --git a/Sources/PodToBUILD/BuildFile.swift b/Sources/PodToBUILD/BuildFile.swift index 98b13d0..8eed21e 100644 --- a/Sources/PodToBUILD/BuildFile.swift +++ b/Sources/PodToBUILD/BuildFile.swift @@ -45,17 +45,13 @@ public func makeLoadNodes(forConvertibles skylarkConvertibles: [SkylarkConvertib let hasAppleBundleImport = skylarkConvertibles.first(where: { $0 is AppleBundleImport }) != nil let hasAppleResourceBundle = skylarkConvertibles.first(where: { $0 is AppleResourceBundle }) != nil let hasAppleFrameworkImport = skylarkConvertibles.first(where: { $0 is AppleFrameworkImport }) != nil - let isDynamicFramework = GetBuildOptions().isDynamicFramework - let isXCFramework = GetBuildOptions().isXCFramework + let appleFrameworkImport = appleFrameworkImport(isDynamicFramework: GetBuildOptions().isDynamicFramework, isXCFramework: GetBuildOptions().isXCFramework) return .lines( [ hasSwift ? SkylarkNode.skylark("load('@build_bazel_rules_swift//swift:swift.bzl', 'swift_library')") : nil, hasAppleBundleImport ? SkylarkNode.skylark("load('@build_bazel_rules_apple//apple:resources.bzl', 'apple_bundle_import')") : nil, hasAppleResourceBundle ? SkylarkNode.skylark("load('@build_bazel_rules_apple//apple:resources.bzl', 'apple_resource_bundle')") : nil, - hasAppleFrameworkImport && isDynamicFramework && !isXCFramework ? SkylarkNode.skylark("load('@build_bazel_rules_apple//apple:apple.bzl', 'apple_dynamic_framework_import')") : nil, - hasAppleFrameworkImport && !isDynamicFramework && !isXCFramework ? SkylarkNode.skylark("load('@build_bazel_rules_apple//apple:apple.bzl', 'apple_static_framework_import')") : nil, - hasAppleFrameworkImport && isDynamicFramework && isXCFramework ? SkylarkNode.skylark("load('@build_bazel_rules_apple//apple:apple.bzl', 'apple_dynamic_xcframework_import')") : nil, - hasAppleFrameworkImport && !isDynamicFramework && isXCFramework ? SkylarkNode.skylark("load('@build_bazel_rules_apple//apple:apple.bzl', 'apple_static_xcframework_import')") : nil, + hasAppleFrameworkImport ? SkylarkNode.skylark("load('@build_bazel_rules_apple//apple:apple.bzl', '\(appleFrameworkImport)')") : nil, ].compactMap { $0 } ) } diff --git a/Sources/PodToBUILD/BuildOptions.swift b/Sources/PodToBUILD/BuildOptions.swift index f673910..c7c75ee 100644 --- a/Sources/PodToBUILD/BuildOptions.swift +++ b/Sources/PodToBUILD/BuildOptions.swift @@ -43,7 +43,7 @@ public struct BasicBuildOptions: BuildOptions { public let vendorize: Bool public let childPaths: [String] public let isDynamicFramework: Bool - public let isXCFramework:Bool + public let isXCFramework: Bool public init(podName: String = "", path: String = ".", diff --git a/Sources/PodToBUILD/ObjcLibrary.swift b/Sources/PodToBUILD/ObjcLibrary.swift index cd5c1d3..915b7d9 100644 --- a/Sources/PodToBUILD/ObjcLibrary.swift +++ b/Sources/PodToBUILD/ObjcLibrary.swift @@ -105,23 +105,11 @@ public struct AppleFrameworkImport: BazelTarget { // visibility = ["visibility:public"] // ) public func toSkylark() -> SkylarkNode { - let isDynamicFramework = GetBuildOptions().isDynamicFramework let isXCFramework = GetBuildOptions().isXCFramework - - let frameworkType : String - - if isXCFramework && isDynamicFramework { - frameworkType = "apple_dynamic_xcframework_import" - } else if isXCFramework && !isDynamicFramework { - frameworkType = "apple_static_xcframework_import" - } else if !isXCFramework && isDynamicFramework { - frameworkType = "apple_dynamic_framework_import" - } else { - frameworkType = "apple_static_framework_import" - } + let appleFrameworkImport = appleFrameworkImport(isDynamicFramework: GetBuildOptions().isDynamicFramework, isXCFramework: isXCFramework) return SkylarkNode.functionCall( - name: frameworkType, + name: appleFrameworkImport, arguments: [SkylarkFunctionArgument]([ .named(name: "name", value: .string(name)), .named(name: isXCFramework ? "xcframework_imports": "framework_imports", diff --git a/Sources/PodToBUILD/RuleUtils.swift b/Sources/PodToBUILD/RuleUtils.swift index 5fc0f1c..4804d2a 100644 --- a/Sources/PodToBUILD/RuleUtils.swift +++ b/Sources/PodToBUILD/RuleUtils.swift @@ -158,3 +158,12 @@ public func bazelLabel(fromString string: String) -> String { } +/// framework import for apple framework import +/// - Parameters: +/// - isDynamicFramework: whether internal framework is dynamic or static +/// - isXCFramework: if it is XCFramework +/// - Returns: apple framework import string such as "apple_static_xcframework_import" +public func appleFrameworkImport(isDynamicFramework: Bool, isXCFramework: Bool) -> String { + return "apple_" + (isDynamicFramework ? "dynamic_" : "static_") + (isXCFramework ? "xcframework_" : "framework_") + "import" +} + diff --git a/Sources/RepoToolsCore/RepoActions.swift b/Sources/RepoToolsCore/RepoActions.swift index d922e8c..df6b92e 100644 --- a/Sources/RepoToolsCore/RepoActions.swift +++ b/Sources/RepoToolsCore/RepoActions.swift @@ -95,7 +95,7 @@ public enum SerializedRepoToolsAction { static func tryParseInit(args: [String]) -> BasicBuildOptions { // First arg is the path, we don't care about it // The right most option will be the winner. - var options: [String: CLIArgumentType] = [ + let options: [String: CLIArgumentType] = [ "--path": .string, "--user_option": .stringList, "--global_copt": .string,