diff --git a/app/build.gradle.kts b/app/build.gradle.kts index cb00d02..76067e0 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -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 diff --git a/app/src/main/java/solutions/tretter/githugandroid/GitRuntime.kt b/app/src/main/java/solutions/tretter/githugandroid/GitRuntime.kt index f09be05..741a454 100644 --- a/app/src/main/java/solutions/tretter/githugandroid/GitRuntime.kt +++ b/app/src/main/java/solutions/tretter/githugandroid/GitRuntime.kt @@ -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}")) } diff --git a/app/src/main/java/solutions/tretter/githugandroid/levels/CoreLevels.kt b/app/src/main/java/solutions/tretter/githugandroid/levels/CoreLevels.kt index e32dee9..8274ac6 100644 --- a/app/src/main/java/solutions/tretter/githugandroid/levels/CoreLevels.kt +++ b/app/src/main/java/solutions/tretter/githugandroid/levels/CoreLevels.kt @@ -18,18 +18,18 @@ internal fun coreLevels(): List = 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 ?: ""} passed=$hasUserName", + "Config rule key='user.name' expected=defined-and-non-blank observed=${observedUserName ?: ""} 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 ?: ""} passed=$hasUserEmail", + "Config rule key='user.email' expected=defined-and-non-blank observed=${observedUserEmail ?: ""} passed=$hasUserEmail", ) hasUserName && hasUserEmail