@@ -15,17 +15,17 @@ package co.touchlab.kmmbridge.dependencymanager
1515
1616import co.touchlab.kmmbridge.TASK_GROUP_NAME
1717import co.touchlab.kmmbridge.dsl.TargetPlatformDsl
18- import co.touchlab.kmmbridge.spm.SpmModuleMetadata
1918import co.touchlab.kmmbridge.internal.domain.SwiftToolVersion
20- import co.touchlab.kmmbridge.internal.domain.TargetPlatform
2119import co.touchlab.kmmbridge.internal.domain.konanTarget
2220import co.touchlab.kmmbridge.internal.domain.swiftPackagePlatformName
2321import co.touchlab.kmmbridge.internal.findXCFrameworkAssembleTask
2422import co.touchlab.kmmbridge.internal.kmmBridgeExtension
2523import co.touchlab.kmmbridge.internal.kotlin
2624import co.touchlab.kmmbridge.internal.layoutBuildDir
25+ import co.touchlab.kmmbridge.internal.spmKmmBridgeExtensionOrNull
2726import co.touchlab.kmmbridge.internal.urlFile
2827import co.touchlab.kmmbridge.internal.zipFilePath
28+ import co.touchlab.kmmbridge.spm.SpmModuleMetadata
2929import java.io.ByteArrayOutputStream
3030import java.io.File
3131import java.nio.charset.Charset
@@ -102,11 +102,12 @@ internal class SpmDependencyManager(
102102 val zipFile = project.zipFilePath()
103103 val urlFile = project.urlFile
104104 val metadataFile = File (project.layout.buildDirectory.asFile.get(), SpmModuleMetadata .METADATA_FILE_NAME )
105- val platformsMap = parsePlatformsMap(project)
106105
107106 inputs.files(zipFile, urlFile)
108107 outputs.file(metadataFile)
109108
109+ dependsOn(uploadTask)
110+
110111 @Suppress(" ObjectLiteralToLambda" )
111112 doLast(
112113 object : Action <Task > {
@@ -118,8 +119,8 @@ internal class SpmDependencyManager(
118119 frameworkName = packageName,
119120 url = url,
120121 checksum = checksum,
121- platforms = platformsMap ,
122- swiftToolsVersion = swiftToolVersion.name
122+ platforms = parsePlatformsMap(project) ,
123+ swiftToolsVersion = swiftToolVersion.name,
123124 )
124125
125126 metadata.writeToFile(metadataFile)
@@ -129,8 +130,6 @@ internal class SpmDependencyManager(
129130 )
130131 }
131132
132- writeMetadataTask.configure { dependsOn(uploadTask) }
133-
134133 val updatePackageSwiftTask =
135134 project.tasks.register(" updatePackageSwift" ) {
136135 group = TASK_GROUP_NAME
@@ -248,7 +247,7 @@ internal class SpmDependencyManager(
248247 if (useCustomPackageFile) return // No local dev when using a custom package file
249248
250249 // Skip if root SPM plugin is applied (use spmDevBuildAll instead)
251- val rootHasSpmPlugin = project.rootProject.extensions.findByName( " kmmBridgeSpm " ) != null
250+ val rootHasSpmPlugin = project.rootProject.spmKmmBridgeExtensionOrNull != null
252251 if (rootHasSpmPlugin) return
253252
254253 val extension = project.kmmBridgeExtension
@@ -286,36 +285,16 @@ internal class SpmDependencyManager(
286285 }
287286
288287 private fun swiftTargetPlatforms (project : Project ): String {
289- val targetPlatforms =
290- TargetPlatformDsl ()
291- .apply (_targetPlatforms )
292- .targetPlatforms
293- .ifEmpty {
294- throw IllegalArgumentException (" At least one target platform should be specified!" )
295- }
296-
297- val platforms = platforms(project, targetPlatforms)
298- return platforms
288+ return parsePlatformsMap(project)
289+ .map { (platformName, platformVersion) -> " .$platformName (.v${platformVersion} )" }
290+ .joinToString(separator = " ,\n " )
299291 }
300292
301- private fun platforms (project : Project , targetPlatforms : List <TargetPlatform >): String = targetPlatforms
302- .flatMap { platform ->
303- project.kotlin.targets
304- .withType<KotlinNativeTarget >()
305- .asSequence()
306- .filter { it.konanTarget.family.isAppleFamily }
307- .filter { appleTarget -> platform.targets.firstOrNull { it.konanTarget == appleTarget.konanTarget } != null }
308- .mapNotNull { it.konanTarget.family.swiftPackagePlatformName }
309- .distinct()
310- .map { platformName -> " .$platformName (.v${platform.version.name} )" }
311- .toList()
312- }.joinToString(separator = " ,\n " )
313-
314293 /* *
315294 * Parse platforms into a map for metadata JSON.
316295 * Returns a map like {"iOS": "15", "macOS": "15"}
317296 */
318- private fun parsePlatformsMap (project : Project ): Map <String , String > {
297+ internal fun parsePlatformsMap (project : Project ): Map <String , String > {
319298 val targetPlatforms = TargetPlatformDsl ()
320299 .apply (_targetPlatforms )
321300 .targetPlatforms
0 commit comments