CocoaPods: Refactor framework name mangling

This commit is contained in:
Ilya Matveev
2019-03-05 14:18:57 +03:00
parent 226da18e3a
commit 230f11df42
3 changed files with 14 additions and 5 deletions
@@ -37,6 +37,8 @@ internal class CocoapodsBuildDirs(val project: Project) {
get() = root.resolve("defs") get() = root.resolve("defs")
} }
internal fun String.asValidFrameworkName() = replace('-', '_')
open class KotlinCocoapodsPlugin: Plugin<Project> { open class KotlinCocoapodsPlugin: Plugin<Project> {
private fun KotlinMultiplatformExtension.supportedTargets() = targets private fun KotlinMultiplatformExtension.supportedTargets() = targets
@@ -9,6 +9,7 @@ import org.gradle.api.DefaultTask
import org.gradle.api.tasks.* import org.gradle.api.tasks.*
import org.jetbrains.kotlin.gradle.plugin.cocoapods.CocoapodsExtension import org.jetbrains.kotlin.gradle.plugin.cocoapods.CocoapodsExtension
import org.jetbrains.kotlin.gradle.plugin.cocoapods.KotlinCocoapodsPlugin import org.jetbrains.kotlin.gradle.plugin.cocoapods.KotlinCocoapodsPlugin
import org.jetbrains.kotlin.gradle.plugin.cocoapods.asValidFrameworkName
import org.jetbrains.kotlin.gradle.plugin.cocoapods.cocoapodsBuildDirs import org.jetbrains.kotlin.gradle.plugin.cocoapods.cocoapodsBuildDirs
import java.io.File import java.io.File
@@ -33,7 +34,7 @@ open class PodspecTask : DefaultTask() {
val versionSuffix = if (pod.version != null) ", '${pod.version}'" else "" val versionSuffix = if (pod.version != null) ", '${pod.version}'" else ""
"| spec.dependency '${pod.name}'$versionSuffix" "| spec.dependency '${pod.name}'$versionSuffix"
}.joinToString(separator = "\n") }.joinToString(separator = "\n")
val specName = project.name.replace('-', '_') val specName = project.name.asValidFrameworkName()
outputFile.writeText(""" outputFile.writeText("""
|Pod::Spec.new do |spec| |Pod::Spec.new do |spec|
@@ -97,7 +98,7 @@ open class DummyFrameworkTask : DefaultTask() {
@get:Input @get:Input
val frameworkName val frameworkName
get() = project.name.replace('-', '_') get() = project.name.asValidFrameworkName()
private val frameworkDir: File private val frameworkDir: File
get() = destinationDir.resolve("$frameworkName.framework") get() = destinationDir.resolve("$frameworkName.framework")
@@ -17,6 +17,7 @@ import org.jetbrains.kotlin.gradle.dsl.KotlinCommonOptions
import org.jetbrains.kotlin.gradle.dsl.KotlinCompile import org.jetbrains.kotlin.gradle.dsl.KotlinCompile
import org.jetbrains.kotlin.gradle.dsl.kotlinExtension import org.jetbrains.kotlin.gradle.dsl.kotlinExtension
import org.jetbrains.kotlin.gradle.plugin.LanguageSettingsBuilder import org.jetbrains.kotlin.gradle.plugin.LanguageSettingsBuilder
import org.jetbrains.kotlin.gradle.plugin.cocoapods.asValidFrameworkName
import org.jetbrains.kotlin.gradle.plugin.mpp.* import org.jetbrains.kotlin.gradle.plugin.mpp.*
import org.jetbrains.kotlin.konan.target.CompilerOutputKind import org.jetbrains.kotlin.konan.target.CompilerOutputKind
import org.jetbrains.kotlin.konan.target.CompilerOutputKind.* import org.jetbrains.kotlin.konan.target.CompilerOutputKind.*
@@ -202,9 +203,14 @@ abstract class AbstractKotlinNativeCompile : AbstractCompile(), KotlinCompile<Ko
val prefix = outputKind.prefix(konanTarget) val prefix = outputKind.prefix(konanTarget)
val suffix = outputKind.suffix(konanTarget) val suffix = outputKind.suffix(konanTarget)
var filename = "$prefix$baseName$suffix" val filename = "$prefix$baseName$suffix".let {
if (outputKind in listOf(FRAMEWORK, STATIC, DYNAMIC) || outputKind == PROGRAM && konanTarget == KonanTarget.WASM32) { when {
filename = filename.replace('-', '_') outputKind == FRAMEWORK ->
it.asValidFrameworkName()
outputKind in listOf(STATIC, DYNAMIC) || outputKind == PROGRAM && konanTarget == KonanTarget.WASM32 ->
it.replace('-', '_')
else -> it
}
} }
destinationDir.resolve(filename) destinationDir.resolve(filename)