diff options
| author | Harsh Shandilya <me@msfjarvis.dev> | 2022-02-05 01:57:41 +0530 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-02-05 01:57:41 +0530 |
| commit | 664e1fbba06792c82ad2ce71d16ca687077e9c9a (patch) | |
| tree | c4dffa3e696538e8b14d41b5679cd5b981703ac7 /build-logic/android-plugins/src/main/kotlin/versioning/VersioningTask.kt | |
| parent | 2b293e58056ea897c305bd39e21b42f5cd4d1a62 (diff) | |
| download | HardenedPass-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.kt | 46 |
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()) + } +} |
