Skip to content

Commit

Permalink
Merge pull request #79 from touchlab/kpg/write_git_tag_version
Browse files Browse the repository at this point in the history
Write git tags if needed
  • Loading branch information
kpgalligan authored Oct 7, 2022
2 parents 8f11dea + ab9e58c commit 6ca700c
Show file tree
Hide file tree
Showing 7 changed files with 28 additions and 6 deletions.
2 changes: 2 additions & 0 deletions kmmbridge/src/main/kotlin/CocoapodsDependencyManager.kt
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,8 @@ class CocoapodsDependencyManager(

publishRemoteTask.dependsOn(pushRemotePodspecTask)
}

override val needsGitTags: Boolean = false
}

// Adapted from spec generation logic in the kotlin.cocoapods plugin, but we skip script phases and some other details,
Expand Down
3 changes: 1 addition & 2 deletions kmmbridge/src/main/kotlin/GitTagVersionManager.kt
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@ import org.gradle.api.Project

object GitTagVersionManager : GitTagBasedVersionManager() {
override fun recordVersion(project: Project, versionString: String) {
project.procRunFailLog("git", "tag", "-a", versionString, "-m", "KMM release version $versionString")
project.procRunFailLog("git", "push", "--follow-tags")
writeGitTagVersion(project, versionString)
}
}
16 changes: 14 additions & 2 deletions kmmbridge/src/main/kotlin/KMMBridge.kt
Original file line number Diff line number Diff line change
@@ -1,17 +1,16 @@
package co.touchlab.faktory

import co.touchlab.faktory.internal.procRunFailLog
import org.gradle.api.Action
import org.gradle.api.Plugin
import org.gradle.api.Project
import org.gradle.api.Task
import org.gradle.api.UnknownTaskException
import org.gradle.api.plugins.ExtensionAware
import org.gradle.api.provider.ListProperty
import org.gradle.api.provider.Property
import org.gradle.api.tasks.*
import org.gradle.api.tasks.bundling.Zip
import org.gradle.kotlin.dsl.*
import org.jetbrains.kotlin.gradle.plugin.cocoapods.CocoapodsExtension
import org.jetbrains.kotlin.gradle.plugin.mpp.*
import org.jetbrains.kotlin.gradle.plugin.mpp.apple.XCFramework
import org.jetbrains.kotlin.gradle.plugin.mpp.apple.XCFrameworkConfig
Expand Down Expand Up @@ -102,6 +101,11 @@ interface DependencyManager {
* [uploadTask] and are dependencies of [publishRemoteTask].
*/
fun configure(project: Project, uploadTask: Task, publishRemoteTask: Task) {}

/**
* True if this type of dependency needs git tags to function properly (currently SPM true, Cocoapods false)
*/
val needsGitTags: Boolean
}

interface ArtifactManager {
Expand All @@ -124,6 +128,14 @@ interface VersionManager {
fun recordVersion(project: Project, versionString: String)
}

/**
* Write version to git tags
*/
internal fun writeGitTagVersion(project: Project, versionString: String) {
project.procRunFailLog("git", "tag", "-a", versionString, "-m", "KMM release version $versionString")
project.procRunFailLog("git", "push", "--follow-tags")
}

internal const val TASK_GROUP_NAME = "kmmbridge"
private const val EXTENSION_NAME = "kmmbridge"

Expand Down
4 changes: 3 additions & 1 deletion kmmbridge/src/main/kotlin/ManualVersionManager.kt
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@ import org.gradle.api.Project
object ManualVersionManager : VersionManager {
override fun getVersion(project: Project, versionPrefix: String): String = versionPrefix
override fun recordVersion(project: Project, versionString: String) {
// Not needed
if(project.alwaysWriteGitTags){
writeGitTagVersion(project, versionString)
}
}
}
3 changes: 3 additions & 0 deletions kmmbridge/src/main/kotlin/ProjectExtensions.kt
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,9 @@ internal val Project.githubRepo
internal val Project.spmBuildTargets: String?
get() = project.findStringProperty("spmBuildTargets")

internal val Project.alwaysWriteGitTags: Boolean
get() = kmmBridgeExtension.dependencyManagers.get().any { it.needsGitTags }

internal fun Project.zipFilePath(): File {
val tempDir = file("$buildDir/faktory/zip")
val artifactName = "frameworkarchive.zip"
Expand Down
2 changes: 2 additions & 0 deletions kmmbridge/src/main/kotlin/SpmDependencyManager.kt
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,8 @@ class SpmDependencyManager(
private fun Project.writePackageFile(data:String){
file(swiftPackageFilePath).writeText(data)
}

override val needsGitTags: Boolean = true
}

internal fun stripEndSlash(path: String): String {
Expand Down
4 changes: 3 additions & 1 deletion kmmbridge/src/main/kotlin/TimestampVersionManager.kt
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ object TimestampVersionManager : VersionManager {
"${versionPrefix}.${System.currentTimeMillis()}"

override fun recordVersion(project: Project, versionString: String) {
// Not needed
if(project.alwaysWriteGitTags){
writeGitTagVersion(project, versionString)
}
}
}

0 comments on commit 6ca700c

Please sign in to comment.