[orx-gui-archiver] Add logReferences and show to GitProvider, make GitProvider public
This commit is contained in:
@@ -5,9 +5,17 @@ import org.openrndr.AssetMetadata
|
|||||||
import org.openrndr.Extension
|
import org.openrndr.Extension
|
||||||
import org.openrndr.Program
|
import org.openrndr.Program
|
||||||
|
|
||||||
internal interface GitProvider {
|
interface GitProvider {
|
||||||
fun commitChanges(commitMessage: String)
|
fun commitChanges(commitMessage: String)
|
||||||
fun headReference(): 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 { }
|
val logger = KotlinLogging.logger { }
|
||||||
@@ -20,7 +28,7 @@ class GitArchiver : Extension {
|
|||||||
|
|
||||||
var autoCommitMessage = "auto commit"
|
var autoCommitMessage = "auto commit"
|
||||||
|
|
||||||
private val git: GitProvider = if (nativeGitInstalled()) NativeGit() else JavaGit()
|
private val git: GitProvider = GitProvider.create()
|
||||||
|
|
||||||
override fun setup(program: Program) {
|
override fun setup(program: Program) {
|
||||||
logger.info {
|
logger.info {
|
||||||
@@ -33,6 +41,8 @@ class GitArchiver : Extension {
|
|||||||
}"
|
}"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
autoCommitMessage = "auto commit from ${program.name}"
|
||||||
|
|
||||||
val oldMetadataFunction = program.assetMetadata
|
val oldMetadataFunction = program.assetMetadata
|
||||||
program.assetMetadata = {
|
program.assetMetadata = {
|
||||||
val oldMetadata = oldMetadataFunction()
|
val oldMetadata = oldMetadataFunction()
|
||||||
|
|||||||
@@ -24,13 +24,11 @@ class JavaGit : GitProvider {
|
|||||||
return id.name.take(7)
|
return id.name.take(7)
|
||||||
}
|
}
|
||||||
|
|
||||||
// fun tag(name: String): Boolean {
|
override fun logReferences(count: Int): List<String> {
|
||||||
// val existing = git.tagList().call().find { it.name == name }
|
TODO("Not yet implemented")
|
||||||
// if (existing != null) {
|
}
|
||||||
// git.tag().setName(name).call()
|
|
||||||
// } else {
|
override fun show(reference: String): String {
|
||||||
// logger.warn { "tag $name exists" }
|
TODO("Not yet implemented")
|
||||||
// }
|
}
|
||||||
// return existing != null
|
|
||||||
// }
|
|
||||||
}
|
}
|
||||||
@@ -25,6 +25,18 @@ class NativeGit : GitProvider {
|
|||||||
override fun headReference(): String {
|
override fun headReference(): String {
|
||||||
return listOf("git", "rev-parse", "--short", "HEAD").runCommand(dir)!!.first.trimEnd()
|
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 {
|
internal fun nativeGitInstalled(): Boolean {
|
||||||
|
|||||||
Reference in New Issue
Block a user