[orx-gui-archiver] Add logReferences and show to GitProvider, make GitProvider public

This commit is contained in:
Edwin Jakobs
2021-11-09 08:53:45 +01:00
parent 2c58b11f8d
commit bae1f071c4
3 changed files with 31 additions and 11 deletions

View File

@@ -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<String>
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()

View File

@@ -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<String> {
TODO("Not yet implemented")
}
override fun show(reference: String): String {
TODO("Not yet implemented")
}
}

View File

@@ -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<String> {
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 {