diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 33c1182ac..1281fcff5 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -62,7 +62,7 @@ jobs: path: app/build/reports/tests/testDebugUnitTest - name: Build app - run: ./gradlew assembleRelease -Pinclude-telemetry -Penable-updater + run: ./gradlew assembleRelease -Pdist=ci - name: Upload APK uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index c9fcccd1c..22a220215 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -51,7 +51,7 @@ jobs: SIGNING_KEY: ${{ secrets.SIGNING_KEY }} - name: Build - run: ./gradlew assembleRelease -Pinclude-telemetry -Penable-updater + run: ./gradlew assembleRelease -Pdist=github env: storeFile: ${{ runner.temp }}/antsy.keystore storePassword: ${{ secrets.KEY_STORE_PASSWORD }} @@ -106,7 +106,7 @@ jobs: SIGNING_KEY: ${{ secrets.SIGNING_KEY }} - name: Build - run: ./gradlew assembleFoss -Penable-updater + run: ./gradlew assembleFoss -Pdist=foss env: storeFile: ${{ runner.temp }}/antsy.keystore storePassword: ${{ secrets.KEY_STORE_PASSWORD }} diff --git a/gradle/build-logic/src/main/kotlin/mihon/gradle/BuildConfig.kt b/gradle/build-logic/src/main/kotlin/mihon/gradle/BuildConfig.kt index 7e1015bdd..21590d2f6 100644 --- a/gradle/build-logic/src/main/kotlin/mihon/gradle/BuildConfig.kt +++ b/gradle/build-logic/src/main/kotlin/mihon/gradle/BuildConfig.kt @@ -8,8 +8,31 @@ interface BuildConfig { val includeDependencyInfo: Boolean } -val Project.Config: BuildConfig get() = object : BuildConfig { - override val includeTelemetry: Boolean = project.hasProperty("include-telemetry") - override val enableUpdater: Boolean = project.hasProperty("enable-updater") - override val includeDependencyInfo: Boolean = project.hasProperty("include-dependency-info") +private enum class Distribution { + LOCAL, + CI, + GITHUB, + FOSS, } + +val Project.Config: BuildConfig get() = object : BuildConfig { + private val distribution: Distribution = project.providers.gradleProperty("dist").orNull + ?.let { name -> + Distribution.entries.firstOrNull { it.name.equals(name, ignoreCase = true) } + ?: error("Unknown -Pdist=$name, expected one of $distributionNames") + } + ?: Distribution.LOCAL + + override val includeTelemetry: Boolean = project.flag("include-telemetry") + ?: (distribution == Distribution.CI || distribution == Distribution.GITHUB) + + override val enableUpdater: Boolean = project.flag("enable-updater") + ?: (distribution != Distribution.LOCAL) + + override val includeDependencyInfo: Boolean = project.flag("include-dependency-info") ?: false +} + +private val distributionNames = Distribution.entries.joinToString { it.name.lowercase() } + +private fun Project.flag(name: String): Boolean? = providers.gradleProperty(name).orNull + ?.let { it.isEmpty() || it.toBoolean() }