aboutsummaryrefslogtreecommitdiffstats
path: root/build-logic/android-plugins/src/main/kotlin/versioning/VersioningTask.kt
diff options
context:
space:
mode:
authorHarsh Shandilya <me@msfjarvis.dev>2022-02-05 01:57:41 +0530
committerGitHub <noreply@github.com>2022-02-05 01:57:41 +0530
commit664e1fbba06792c82ad2ce71d16ca687077e9c9a (patch)
treec4dffa3e696538e8b14d41b5679cd5b981703ac7 /build-logic/android-plugins/src/main/kotlin/versioning/VersioningTask.kt
parent2b293e58056ea897c305bd39e21b42f5cd4d1a62 (diff)
downloadHardenedPass-664e1fbba06792c82ad2ce71d16ca687077e9c9a.tar.gz
HardenedPass-664e1fbba06792c82ad2ce71d16ca687077e9c9a.zip
Begin rework for configuration cache compatibility (#1709)
Diffstat (limited to 'build-logic/android-plugins/src/main/kotlin/versioning/VersioningTask.kt')
-rw-r--r--build-logic/android-plugins/src/main/kotlin/versioning/VersioningTask.kt46
1 files changed, 46 insertions, 0 deletions
diff --git a/build-logic/android-plugins/src/main/kotlin/versioning/VersioningTask.kt b/build-logic/android-plugins/src/main/kotlin/versioning/VersioningTask.kt
new file mode 100644
index 00000000..fe437c04
--- /dev/null
+++ b/build-logic/android-plugins/src/main/kotlin/versioning/VersioningTask.kt
@@ -0,0 +1,46 @@
+/*
+ * Copyright © 2014-2022 The Android Password Store Authors. All Rights Reserved.
+ * SPDX-License-Identifier: GPL-3.0-only
+ */
+
+package versioning
+
+import com.vdurmont.semver4j.Semver
+import org.gradle.api.DefaultTask
+import org.gradle.api.file.RegularFileProperty
+import org.gradle.api.provider.Property
+import org.gradle.api.tasks.CacheableTask
+import org.gradle.api.tasks.Input
+import org.gradle.api.tasks.OutputFile
+import org.gradle.api.tasks.TaskAction
+
+@CacheableTask
+abstract class VersioningTask : DefaultTask() {
+ @get:Input abstract val semverString: Property<String>
+
+ @get:OutputFile abstract val propertyFile: RegularFileProperty
+
+ /** Generate the Android 'versionCode' property */
+ private fun Semver.androidCode(): Int {
+ return major * 1_00_00 + minor * 1_00 + patch
+ }
+
+ private fun Semver.toPropFileText(): String {
+ val newVersionCode = androidCode()
+ val newVersionName = toString()
+ return buildString {
+ appendLine(VERSIONING_PROP_COMMENT)
+ append(VERSIONING_PROP_VERSION_CODE)
+ append('=')
+ appendLine(newVersionCode)
+ append(VERSIONING_PROP_VERSION_NAME)
+ append('=')
+ appendLine(newVersionName)
+ }
+ }
+
+ @TaskAction
+ fun execute() {
+ propertyFile.get().asFile.writeText(Semver(semverString.get()).toPropFileText())
+ }
+}