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/GitRuntime.kt
app/src/main/java/solutions/tretter/githugandroid/levels/CoreLevels.kt
This commit is contained in:
Joe Tretter
2026-04-24 16:06:51 -05:00
parent f1ca54a2ad
commit d673d5f3a6
3 changed files with 16 additions and 12 deletions

View File

@@ -11,8 +11,8 @@ android {
applicationId = "solutions.tretter.githugandroid"
minSdk = 26
targetSdk = 34
versionCode = 79
versionName = "0.1.78"
versionCode = 80
versionName = "0.1.79"
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
vectorDrawables.useSupportLibrary = true

View File

@@ -185,12 +185,16 @@ class GitRepositoryRuntime(private val context: Context) {
val userNameResult = runGit(nativeGit, sandbox, listOf("config", "--get", "user.name"))
val userEmailResult = runGit(nativeGit, sandbox, listOf("config", "--get", "user.email"))
val config = buildMap {
userNameResult.outputLines.firstOrNull()?.takeIf { it.isNotBlank() }?.let { put("user.name", it) }
userEmailResult.outputLines.firstOrNull()?.takeIf { it.isNotBlank() }?.let { put("user.email", it) }
userNameResult.outputLines.firstOrNull()
?.takeIf { userNameResult.exitCode == 0 && it.isNotBlank() }
?.let { put("user.name", it) }
userEmailResult.outputLines.firstOrNull()
?.takeIf { userEmailResult.exitCode == 0 && it.isNotBlank() }
?.let { put("user.email", it) }
}
AppLog.d(
"GitRuntime",
"inspectSandbox level=${level.id} config=$config user.name.exit=${userNameResult.exitCode} user.email.exit=${userEmailResult.exitCode}",
"inspectSandbox level=${level.id} config=$config user.name.exit=${userNameResult.exitCode} user.name.output=${userNameResult.outputLines} user.email.exit=${userEmailResult.exitCode} user.email.output=${userEmailResult.outputLines}",
)
val commits = if (logResult.exitCode == 0) {
logResult.outputLines.filter { it.isNotBlank() }.mapNotNull { line ->
@@ -258,7 +262,7 @@ class GitRepositoryRuntime(private val context: Context) {
val output = process.inputStream.bufferedReader().readLines()
val exit = process.waitFor()
ProcessExecutionResult(exitCode = exit, outputLines = output.ifEmpty { if (exit == 0) emptyList() else listOf("Command failed") })
ProcessExecutionResult(exitCode = exit, outputLines = output)
} catch (error: Exception) {
ProcessExecutionResult(exitCode = -1, outputLines = listOf("Native Git execution failed: ${error.message ?: error::class.java.simpleName}"))
}

View File

@@ -18,18 +18,18 @@ internal fun coreLevels(): List<Level> = listOf(
commandSuggestions = listOf("git config user.name GitHug", "git config user.email githug@example.com"),
setup = { RepoState(initialized = true, branches = mapOf("master" to 0)) },
validator = repoPredicate { repo ->
val hasUserName = repo.config.containsKey("user.name")
val observedUserName = repo.config["user.name"]
val observedUserName = repo.config["user.name"]?.takeIf { it.isNotBlank() }
val hasUserName = observedUserName != null
AppLog.d(
"Validation",
"Config rule key='user.name' expected=defined observed=${observedUserName ?: "<missing>"} passed=$hasUserName",
"Config rule key='user.name' expected=defined-and-non-blank observed=${observedUserName ?: "<missing>"} passed=$hasUserName",
)
val hasUserEmail = repo.config.containsKey("user.email")
val observedUserEmail = repo.config["user.email"]
val observedUserEmail = repo.config["user.email"]?.takeIf { it.isNotBlank() }
val hasUserEmail = observedUserEmail != null
AppLog.d(
"Validation",
"Config rule key='user.email' expected=defined observed=${observedUserEmail ?: "<missing>"} passed=$hasUserEmail",
"Config rule key='user.email' expected=defined-and-non-blank observed=${observedUserEmail ?: "<missing>"} passed=$hasUserEmail",
)
hasUserName && hasUserEmail