diff --git a/app/build.gradle.kts b/app/build.gradle.kts index e977af4c86..aad1c4eff6 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -20,6 +20,8 @@ import com.android.build.api.variant.FilterConfiguration.FilterType.ABI import extension.allFeaturesImpl import extension.allLibrariesImpl import extension.allServicesImpl +import extension.gitBranchName +import extension.gitRevision import extension.koverDependencies import extension.setupKover import org.jetbrains.kotlin.cli.common.toBooleanLenient @@ -54,6 +56,9 @@ android { abiFilters += listOf("armeabi-v7a", "x86", "arm64-v8a", "x86_64") } + buildConfigField("String", "GIT_REVISION", "\"${gitRevision()}\"") + buildConfigField("String", "GIT_BRANCH_NAME", "\"${gitBranchName()}\"") + // Ref: https://developer.android.com/studio/build/configure-apk-splits.html#configure-abi-split splits { // Configures multiple APKs based on ABI. diff --git a/app/src/main/kotlin/io/element/android/x/di/AppModule.kt b/app/src/main/kotlin/io/element/android/x/di/AppModule.kt index bf4880b372..47a2c373ad 100644 --- a/app/src/main/kotlin/io/element/android/x/di/AppModule.kt +++ b/app/src/main/kotlin/io/element/android/x/di/AppModule.kt @@ -85,12 +85,8 @@ object AppModule { lowPrivacyLoggingEnabled = false, versionName = BuildConfig.VERSION_NAME, versionCode = BuildConfig.VERSION_CODE, - // BuildConfig.GIT_REVISION, - gitRevision = "TODO", - // BuildConfig.GIT_REVISION_DATE, - gitRevisionDate = "TODO", - // BuildConfig.GIT_BRANCH_NAME, - gitBranchName = "TODO", + gitRevision = BuildConfig.GIT_REVISION, + gitBranchName = BuildConfig.GIT_BRANCH_NAME, flavorDescription = BuildConfig.FLAVOR_DESCRIPTION, flavorShortDescription = BuildConfig.SHORT_FLAVOR_DESCRIPTION, ) diff --git a/app/src/main/kotlin/io/element/android/x/info/Logs.kt b/app/src/main/kotlin/io/element/android/x/info/Logs.kt index 55a1a85b91..3cabc937a1 100644 --- a/app/src/main/kotlin/io/element/android/x/info/Logs.kt +++ b/app/src/main/kotlin/io/element/android/x/info/Logs.kt @@ -39,6 +39,7 @@ fun logApplicationInfo() { Timber.d("----------------------------------------------------------------") Timber.d("----------------------------------------------------------------") Timber.d(" Application version: $appVersion") + Timber.d(" Git SHA: ${BuildConfig.GIT_REVISION}") Timber.d(" SDK version: $sdkVersion") Timber.d(" Local time: $date") Timber.d("----------------------------------------------------------------") diff --git a/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/reporter/DefaultBugReporter.kt b/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/reporter/DefaultBugReporter.kt index 2123717f8e..e9fa054acf 100755 --- a/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/reporter/DefaultBugReporter.kt +++ b/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/reporter/DefaultBugReporter.kt @@ -200,6 +200,8 @@ class DefaultBugReporter @Inject constructor( // add some github labels builder.addFormDataPart("label", buildMeta.versionName) builder.addFormDataPart("label", buildMeta.flavorDescription) + builder.addFormDataPart("branch_name", buildMeta.gitBranchName) + if (crashCallStack.isNotEmpty() && withCrashLogs) { builder.addFormDataPart("label", "crash") } diff --git a/libraries/core/src/main/kotlin/io/element/android/libraries/core/meta/BuildMeta.kt b/libraries/core/src/main/kotlin/io/element/android/libraries/core/meta/BuildMeta.kt index aaf54cc0f8..cac30e02e4 100644 --- a/libraries/core/src/main/kotlin/io/element/android/libraries/core/meta/BuildMeta.kt +++ b/libraries/core/src/main/kotlin/io/element/android/libraries/core/meta/BuildMeta.kt @@ -25,7 +25,6 @@ data class BuildMeta( val versionName: String, val versionCode: Int, val gitRevision: String, - val gitRevisionDate: String, val gitBranchName: String, val flavorDescription: String, val flavorShortDescription: String, diff --git a/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/core/BuildMeta.kt b/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/core/BuildMeta.kt index d048101f87..f3a704ddc5 100644 --- a/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/core/BuildMeta.kt +++ b/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/core/BuildMeta.kt @@ -28,7 +28,6 @@ fun aBuildMeta( versionName: String = "", versionCode: Int = 0, gitRevision: String = "", - gitRevisionDate: String = "", gitBranchName: String = "", flavorDescription: String = "", flavorShortDescription: String = "", @@ -41,7 +40,6 @@ fun aBuildMeta( versionName, versionCode, gitRevision, - gitRevisionDate, gitBranchName, flavorDescription, flavorShortDescription diff --git a/plugins/src/main/kotlin/extension/Utils.kt b/plugins/src/main/kotlin/extension/Utils.kt new file mode 100644 index 0000000000..31fdd4f952 --- /dev/null +++ b/plugins/src/main/kotlin/extension/Utils.kt @@ -0,0 +1,40 @@ +/* + * Copyright (c) 2022 New Vector Ltd + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package extension + +import org.gradle.api.Project +import java.io.ByteArrayOutputStream +import java.io.IOException + +private fun Project.runCommand(cmd: String): String { + val outputStream = ByteArrayOutputStream() + val errorStream = ByteArrayOutputStream() + project.exec { + commandLine = cmd.split(" ") + standardOutput = outputStream + errorOutput = errorStream + } + if (errorStream.size() > 0) { + println("Error while running command: $cmd") + throw IOException(String(errorStream.toByteArray())) + } + return String(outputStream.toByteArray()).trim() +} + +fun Project.gitRevision() = runCommand("git rev-parse --short=8 HEAD") + +fun Project.gitBranchName() = runCommand("git rev-parse --abbrev-ref HEAD") diff --git a/samples/minimal/src/main/kotlin/io/element/android/samples/minimal/Singleton.kt b/samples/minimal/src/main/kotlin/io/element/android/samples/minimal/Singleton.kt index fc146d1ff3..06e8fb02f4 100644 --- a/samples/minimal/src/main/kotlin/io/element/android/samples/minimal/Singleton.kt +++ b/samples/minimal/src/main/kotlin/io/element/android/samples/minimal/Singleton.kt @@ -37,12 +37,8 @@ object Singleton { lowPrivacyLoggingEnabled = false, versionName = "0.1.0", versionCode = 1, - // BuildConfig.GIT_REVISION, - gitRevision = "TODO", - // BuildConfig.GIT_REVISION_DATE, - gitRevisionDate = "TODO", - // BuildConfig.GIT_BRANCH_NAME, - gitBranchName = "TODO", + gitRevision = "", + gitBranchName = "", flavorDescription = "NA", flavorShortDescription = "NA", )