[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.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()
|
||||
|
||||
@@ -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")
|
||||
}
|
||||
}
|
||||
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user