diff --git a/orx-jvm/orx-git-archiver/src/main/kotlin/GitArchiver.kt b/orx-jvm/orx-git-archiver/src/main/kotlin/GitArchiver.kt index 005f070f..03106413 100644 --- a/orx-jvm/orx-git-archiver/src/main/kotlin/GitArchiver.kt +++ b/orx-jvm/orx-git-archiver/src/main/kotlin/GitArchiver.kt @@ -5,9 +5,17 @@ import org.openrndr.AssetMetadata import org.openrndr.Extension import org.openrndr.Program -internal interface GitProvider { +interface GitProvider { fun commitChanges(commitMessage: String) fun headReference(): String + fun logReferences(count: Int): List + fun show(reference: String) : String + + companion object { + fun create() : GitProvider { + return if (nativeGitInstalled()) NativeGit() else JavaGit() + } + } } val logger = KotlinLogging.logger { } @@ -20,7 +28,7 @@ class GitArchiver : Extension { var autoCommitMessage = "auto commit" - private val git: GitProvider = if (nativeGitInstalled()) NativeGit() else JavaGit() + private val git: GitProvider = GitProvider.create() override fun setup(program: Program) { logger.info { @@ -33,6 +41,8 @@ class GitArchiver : Extension { }" } + autoCommitMessage = "auto commit from ${program.name}" + val oldMetadataFunction = program.assetMetadata program.assetMetadata = { val oldMetadata = oldMetadataFunction() diff --git a/orx-jvm/orx-git-archiver/src/main/kotlin/JavaGit.kt b/orx-jvm/orx-git-archiver/src/main/kotlin/JavaGit.kt index 9123d6d8..7b1cca9b 100644 --- a/orx-jvm/orx-git-archiver/src/main/kotlin/JavaGit.kt +++ b/orx-jvm/orx-git-archiver/src/main/kotlin/JavaGit.kt @@ -24,13 +24,11 @@ class JavaGit : GitProvider { return id.name.take(7) } -// fun tag(name: String): Boolean { -// val existing = git.tagList().call().find { it.name == name } -// if (existing != null) { -// git.tag().setName(name).call() -// } else { -// logger.warn { "tag $name exists" } -// } -// return existing != null -// } + override fun logReferences(count: Int): List { + TODO("Not yet implemented") + } + + override fun show(reference: String): String { + TODO("Not yet implemented") + } } \ No newline at end of file diff --git a/orx-jvm/orx-git-archiver/src/main/kotlin/NativeGit.kt b/orx-jvm/orx-git-archiver/src/main/kotlin/NativeGit.kt index e10bc086..47ee0e58 100644 --- a/orx-jvm/orx-git-archiver/src/main/kotlin/NativeGit.kt +++ b/orx-jvm/orx-git-archiver/src/main/kotlin/NativeGit.kt @@ -25,6 +25,18 @@ class NativeGit : GitProvider { override fun headReference(): String { return listOf("git", "rev-parse", "--short", "HEAD").runCommand(dir)!!.first.trimEnd() } + + override fun logReferences(count: Int): List { + val (out, err) = listOf("git", "log", "-$count", "--pretty=format:%h").runCommand(dir) ?: error("failed to get log references") + return out.split("\n").map { it.trim() } + } + + override fun show(reference: String): String { + val (out, err) = listOf("git", "show", reference, "-U0").runCommand(dir) ?: error("failed to get diff") + return out + } + + } internal fun nativeGitInstalled(): Boolean {