chore(debug): git hash

This commit is contained in:
rhunk
2024-06-01 17:23:06 +02:00
parent a49447ef64
commit 2429ecd45a
4 changed files with 91 additions and 19 deletions

View File

@@ -160,6 +160,7 @@ class RemoteSideContext(
val cert = certFactory.generateCertificate(ByteArrayInputStream(it.toByteArray())) as X509Certificate val cert = certFactory.generateCertificate(ByteArrayInputStream(it.toByteArray())) as X509Certificate
cert.issuerDN.toString() cert.issuerDN.toString()
} ?: throw Exception("Failed to get certificate info"), } ?: throw Exception("Failed to get certificate info"),
gitHash = BuildConfig.GIT_HASH,
isDebugBuild = BuildConfig.DEBUG, isDebugBuild = BuildConfig.DEBUG,
mappingVersion = mappings.getGeneratedBuildNumber(), mappingVersion = mappings.getGeneratedBuildNumber(),
mappingsOutdated = mappings.isMappingsOutdated() mappingsOutdated = mappings.isMappingsOutdated()

View File

@@ -15,6 +15,7 @@ data class ModInfo(
val buildVersion: String, val buildVersion: String,
val buildVersionCode: Long, val buildVersionCode: Long,
val buildIssuer: String, val buildIssuer: String,
val gitHash: String,
val isDebugBuild: Boolean, val isDebugBuild: Boolean,
val mappingVersion: Long?, val mappingVersion: Long?,
val mappingsOutdated: Boolean?, val mappingsOutdated: Boolean?,

View File

@@ -5,26 +5,26 @@ import android.net.Uri
import androidx.compose.foundation.ScrollState import androidx.compose.foundation.ScrollState
import androidx.compose.foundation.clickable import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.* import androidx.compose.foundation.layout.*
import androidx.compose.foundation.text.ClickableText
import androidx.compose.foundation.verticalScroll import androidx.compose.foundation.verticalScroll
import androidx.compose.material.icons.Icons import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.automirrored.filled.Help import androidx.compose.material.icons.automirrored.filled.Help
import androidx.compose.material.icons.filled.* import androidx.compose.material.icons.filled.*
import androidx.compose.material3.* import androidx.compose.material3.*
import androidx.compose.runtime.Composable import androidx.compose.runtime.*
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.vector.ImageVector import androidx.compose.ui.graphics.vector.ImageVector
import androidx.compose.ui.platform.LocalDensity import androidx.compose.ui.platform.LocalDensity
import androidx.compose.ui.res.vectorResource import androidx.compose.ui.res.vectorResource
import androidx.compose.ui.text.SpanStyle
import androidx.compose.ui.text.buildAnnotatedString
import androidx.compose.ui.text.font.Font import androidx.compose.ui.text.font.Font
import androidx.compose.ui.text.font.FontFamily import androidx.compose.ui.text.font.FontFamily
import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.text.withStyle
import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.Dp
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp import androidx.compose.ui.unit.sp
@@ -41,6 +41,7 @@ import me.rhunk.snapenhance.storage.setQuickTiles
import me.rhunk.snapenhance.ui.manager.Routes import me.rhunk.snapenhance.ui.manager.Routes
import me.rhunk.snapenhance.ui.manager.data.Updater import me.rhunk.snapenhance.ui.manager.data.Updater
import me.rhunk.snapenhance.ui.util.ActivityLauncherHelper import me.rhunk.snapenhance.ui.util.ActivityLauncherHelper
import java.text.DateFormat
class HomeRoot : Routes.Route() { class HomeRoot : Routes.Route() {
companion object { companion object {
@@ -120,6 +121,29 @@ class HomeRoot : Routes.Route() {
) )
} }
@Composable
private fun InfoCard(
content: @Composable ColumnScope.() -> Unit,
) {
OutlinedCard(
modifier = Modifier
.padding(all = cardMargin)
.fillMaxWidth(),
colors = CardDefaults.cardColors(
containerColor = MaterialTheme.colorScheme.surfaceVariant,
contentColor = MaterialTheme.colorScheme.onSurfaceVariant
)
) {
Column(
modifier = Modifier
.fillMaxWidth()
.padding(all = 15.dp)
) {
content()
}
}
}
@OptIn(ExperimentalLayoutApi::class, ExperimentalMaterial3Api::class) @OptIn(ExperimentalLayoutApi::class, ExperimentalMaterial3Api::class)
override val content: @Composable (NavBackStackEntry) -> Unit = { override val content: @Composable (NavBackStackEntry) -> Unit = {
@@ -197,21 +221,12 @@ class HomeRoot : Routes.Route() {
} }
if (latestUpdate != null) { if (latestUpdate != null) {
Spacer(modifier = Modifier.height(20.dp)) Spacer(modifier = Modifier.height(10.dp))
OutlinedCard( InfoCard {
modifier = Modifier
.padding(all = cardMargin)
.fillMaxWidth(),
colors = CardDefaults.cardColors(
containerColor = MaterialTheme.colorScheme.surfaceVariant,
contentColor = MaterialTheme.colorScheme.onSurfaceVariant
)
) {
Row( Row(
modifier = Modifier modifier = Modifier.fillMaxWidth(),
.fillMaxWidth() horizontalArrangement = Arrangement.SpaceBetween,
.padding(all = 15.dp), verticalAlignment = Alignment.CenterVertically
horizontalArrangement = Arrangement.SpaceBetween
) { ) {
Column { Column {
Text( Text(
@@ -237,6 +252,53 @@ class HomeRoot : Routes.Route() {
} }
} }
if (BuildConfig.DEBUG) {
Spacer(modifier = Modifier.height(10.dp))
InfoCard {
Text(
text = "You are running a debug build of SnapEnhance",
fontSize = 14.sp,
fontWeight = FontWeight.Bold,
)
val buildSummary = buildAnnotatedString {
withStyle(style = SpanStyle(fontSize = 13.sp, color = MaterialTheme.colorScheme.onSurfaceVariant, fontWeight = FontWeight.Light)) {
append("Version ")
append(BuildConfig.VERSION_NAME)
append(" (")
append(BuildConfig.VERSION_CODE.toString())
append(") - ")
}
pushStringAnnotation(
tag = "git_hash",
annotation = BuildConfig.GIT_HASH
)
withStyle(style = SpanStyle(fontSize = 13.sp, fontWeight = FontWeight.Bold, color = MaterialTheme.colorScheme.primary)) {
append(BuildConfig.GIT_HASH.substring(0, 7))
}
pop()
}
ClickableText(
text = buildSummary,
onClick = { offset ->
buildSummary.getStringAnnotations(tag = "git_hash", start = offset, end = offset)
.firstOrNull()?.let {
context.activity?.startActivity(Intent(Intent.ACTION_VIEW).apply {
data = Uri.parse("https://github.com/rhunk/SnapEnhance/commit/${it.item}")
})
}
}
)
Text(
fontSize = 12.sp,
text = remember {
"Build date: " + DateFormat.getDateTimeInstance().format(BuildConfig.BUILD_TIMESTAMP) + " (${((System.currentTimeMillis() - BuildConfig.BUILD_TIMESTAMP) / 86400000).toInt()} days ago)"
},
lineHeight = 20.sp,
fontWeight = FontWeight.Light
)
}
}
var showQuickActionsMenu by remember { mutableStateOf(false) } var showQuickActionsMenu by remember { mutableStateOf(false) }
Row( Row(

View File

@@ -1,3 +1,5 @@
import java.io.ByteArrayOutputStream
plugins { plugins {
alias(libs.plugins.androidLibrary) alias(libs.plugins.androidLibrary)
alias(libs.plugins.kotlinAndroid) alias(libs.plugins.kotlinAndroid)
@@ -22,6 +24,12 @@ android {
buildConfigField("String", "APPLICATION_ID", "\"${rootProject.ext["applicationId"]}\"") buildConfigField("String", "APPLICATION_ID", "\"${rootProject.ext["applicationId"]}\"")
buildConfigField("long", "BUILD_TIMESTAMP", "${System.currentTimeMillis()}L") buildConfigField("long", "BUILD_TIMESTAMP", "${System.currentTimeMillis()}L")
buildConfigField("String", "BUILD_HASH", "\"${rootProject.ext["buildHash"]}\"") buildConfigField("String", "BUILD_HASH", "\"${rootProject.ext["buildHash"]}\"")
val gitHash = ByteArrayOutputStream()
exec {
commandLine("git", "rev-parse", "HEAD")
standardOutput = gitHash
}
buildConfigField("String", "GIT_HASH", "\"${gitHash.toString(Charsets.UTF_8).trim()}\"")
} }
compileOptions { compileOptions {