Auto-commit after successful build: update app gameplay/UI, improve build setup

Changed files:\napp/build.gradle.kts
app/src/main/java/solutions/tretter/githugandroid/GitHelpCommands.kt
app/src/main/java/solutions/tretter/githugandroid/GitHugApp.kt
app/src/main/java/solutions/tretter/githugandroid/GitRuntime.kt
app/src/main/java/solutions/tretter/githugandroid/ManPageDialog.kt
app/src/test/java/solutions/tretter/githugandroid/GitHelpCommandsTest.kt
This commit is contained in:
Joe Tretter
2026-05-02 22:09:20 -05:00
parent dcd5589d74
commit ca20b0a358
6 changed files with 247 additions and 2 deletions

View File

@@ -85,9 +85,26 @@ class GitRepositoryRuntime(private val context: Context) {
add(" selected ABI: ${Build.SUPPORTED_ABIS.firstOrNull() ?: "unknown"}")
add(" helper commands: ls, pwd, cat, touch, mkdir, rm, echo")
add(" visual editors: vi, nano, emacs, ed, ex")
add(" git help <command>")
}
}
fun gitManPage(level: Level, currentRepo: RepoState, topic: String): String {
val nativeGit = nativeGitBinary()
if (nativeGit == null) {
return fallbackManPage(topic)
}
val sandboxRoot = sandboxDir(level).canonicalFile
val workingDir = File(sandboxRoot, currentRepo.currentDir).canonicalFile
.takeIf { it.path.startsWith(sandboxRoot.path) } ?: sandboxRoot
val result = runGit(nativeGit, workingDir, listOf(topic, "-h"))
return result.outputLines
.filterNot { it.contains("no man viewer", ignoreCase = true) }
.joinToString("\n")
.ifBlank { fallbackManPage(topic) }
}
fun readEditorFile(level: Level, currentRepo: RepoState, path: String): Pair<String, List<String>> {
val nativeGit = nativeGitBinary()
if (nativeGit == null) {
@@ -198,6 +215,80 @@ class GitRepositoryRuntime(private val context: Context) {
}
}
private fun fallbackManPage(topic: String): String {
val body = when (topic) {
"tag" -> """
NAME
git-tag - Create, list, delete or verify a tag object
SYNOPSIS
git tag <tagname>
git tag -d <tagname>
git tag
DESCRIPTION
Tags name specific points in history. In GitHug Android,
tag levels usually expect you to create or reference a tag
by name.
EXAMPLES
git tag new_tag
git tag v1.2
""".trimIndent()
"branch" -> """
NAME
git-branch - List, create, or delete branches
SYNOPSIS
git branch <branchname>
git branch -d <branchname>
EXAMPLES
git branch test_code
git branch -d delete_me
""".trimIndent()
"checkout" -> """
NAME
git-checkout - Switch branches or restore files
SYNOPSIS
git checkout <branch>
git checkout -b <branch>
git checkout -- <file>
EXAMPLES
git checkout -b my_branch
git checkout -- config.rb
""".trimIndent()
"add" -> """
NAME
git-add - Add file contents to the index
SYNOPSIS
git add <path>
git add .
git add -p <path>
""".trimIndent()
"commit" -> """
NAME
git-commit - Record changes to the repository
SYNOPSIS
git commit -m <message>
git commit --amend
""".trimIndent()
else -> """
NAME
git-$topic
DESCRIPTION
No bundled fallback manpage is available for git $topic.
Try the command suggestions or use git help for another command.
""".trimIndent()
}
return body
}
private fun materializeNativeGitState(nativeGit: File, sandbox: File, desired: RepoState) {
desired.config.forEach { (key, value) ->
runGit(nativeGit, sandbox, listOf("config", key, value))