From fcb8f331dcb77a0129605a3351104cf8703cc225 Mon Sep 17 00:00:00 2001 From: Viacheslav Kormushkin Date: Wed, 13 Oct 2021 12:59:49 +0000 Subject: [PATCH] KMM: can't set isAllowInsecureProtocol using cocoapods plugin #KT-48259 Merge-request: KT-MR-4728 --- .../targets/native/cocoapods/CocoapodsExtension.kt | 8 ++++---- .../targets/native/tasks/AdvancedCocoapodsTasks.kt | 10 +++++----- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/cocoapods/CocoapodsExtension.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/cocoapods/CocoapodsExtension.kt index 1e2412b325a..282601c1348 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/cocoapods/CocoapodsExtension.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/cocoapods/CocoapodsExtension.kt @@ -11,7 +11,6 @@ import org.gradle.api.Action import org.gradle.api.Named import org.gradle.api.NamedDomainObjectSet import org.gradle.api.Project -import org.gradle.api.plugins.ExtensionAware import org.gradle.api.tasks.* import org.gradle.util.ConfigureUtil import org.jetbrains.kotlin.gradle.dsl.multiplatformExtension @@ -19,7 +18,6 @@ import org.jetbrains.kotlin.gradle.plugin.cocoapods.CocoapodsExtension.Cocoapods import org.jetbrains.kotlin.gradle.plugin.mpp.NativeBuildType import org.jetbrains.kotlin.gradle.plugin.mpp.Framework import org.jetbrains.kotlin.gradle.plugin.mpp.NativeBinary -import org.jetbrains.kotlin.gradle.plugin.mpp.apple.XCFramework import java.io.File import java.net.URI @@ -281,9 +279,10 @@ open class CocoapodsExtension(private val project: Project) { * * @param url url to tar, jar or zip archive. * @param flatten does archive contains subdirectory that needs to be expanded + * @param isAllowInsecureProtocol enables communication with a repository over an insecure HTTP connection. */ @JvmOverloads - fun url(url: String, flatten: Boolean = false): PodLocation = Url(URI(url), flatten) + fun url(url: String, flatten: Boolean = false, isAllowInsecureProtocol: Boolean = false): PodLocation = Url(URI(url), flatten, isAllowInsecureProtocol) /** * Path to local pod @@ -319,7 +318,8 @@ open class CocoapodsExtension(private val project: Project) { data class Url( @get:Input val url: URI, - @get:Input var flatten: Boolean + @get:Input var flatten: Boolean, + @get:Input var isAllowInsecureProtocol: Boolean ) : PodLocation() { override fun getLocalPath(project: Project, podName: String): String { return project.cocoapodsBuildDirs.externalSources("url").resolve(podName).absolutePath diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/tasks/AdvancedCocoapodsTasks.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/tasks/AdvancedCocoapodsTasks.kt index cd7f0c21130..9a515ed40db 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/tasks/AdvancedCocoapodsTasks.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/tasks/AdvancedCocoapodsTasks.kt @@ -117,14 +117,12 @@ open class PodDownloadUrlTask : DownloadCocoapodsTask() { @TaskAction fun download() { val podLocation = podSource.get() - val url = podLocation.url.toString() - val repoUrl = url.substringBeforeLast("/") - val fileName = url.substringAfterLast("/") + val fileName = podLocation.url.toString().substringAfterLast("/") val fileNameWithoutExtension = fileName.substringBefore(".") val extension = fileName.substringAfter(".") require(permittedFileExtensions.contains(extension)) { "Unknown file extension" } - val repo = setupRepo(repoUrl) + val repo = setupRepo(podLocation) val dependency = createDependency(fileNameWithoutExtension, extension) val configuration = project.configurations.detachedConfiguration(dependency) val artifact = configuration.singleFile @@ -132,8 +130,9 @@ open class PodDownloadUrlTask : DownloadCocoapodsTask() { project.repositories.remove(repo) } - private fun setupRepo(repoUrl: String): ArtifactRepository { + private fun setupRepo(podUrl: CocoapodsDependency.PodLocation.Url): ArtifactRepository { return project.repositories.ivy { repo -> + val repoUrl = podUrl.url.toString().substringBeforeLast("/") repo.setUrl(repoUrl) repo.patternLayout { it.artifact("[artifact].[ext]") @@ -141,6 +140,7 @@ open class PodDownloadUrlTask : DownloadCocoapodsTask() { repo.metadataSources { it.artifact() } + repo.isAllowInsecureProtocol = podUrl.isAllowInsecureProtocol } }