From 53910122f4339319dab629838f6851d8bc97db3b Mon Sep 17 00:00:00 2001 From: Lewis Date: Wed, 19 Dec 2018 19:01:55 -0500 Subject: [PATCH] Add option for disabling saves every project evaluation Caveat: If the properties file does not yet exist, this setting is ignored so it can be created --- .../net/thauvin/erik/gradle/semver/SemverConfig.kt | 2 ++ .../net/thauvin/erik/gradle/semver/SemverPlugin.kt | 11 +++++++++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/main/kotlin/net/thauvin/erik/gradle/semver/SemverConfig.kt b/src/main/kotlin/net/thauvin/erik/gradle/semver/SemverConfig.kt index d27d57a..af6e12a 100644 --- a/src/main/kotlin/net/thauvin/erik/gradle/semver/SemverConfig.kt +++ b/src/main/kotlin/net/thauvin/erik/gradle/semver/SemverConfig.kt @@ -43,6 +43,7 @@ open class SemverConfig { const val DEFAULT_BUILDMETA_KEY = "buildmeta" const val DEFAULT_BUILDMETA_PREFIX_KEY = "buildmeta.prefix" const val DEFAULT_SEPARATOR = "separator" + const val DEFAULT_SAVE_AFTER_PROJECT_EVALUATE = true } var properties = DEFAULT_PROPERTIES @@ -63,4 +64,5 @@ open class SemverConfig { var separatorKey = DEFAULT_SEPARATOR get() = "$keysPrefix$field" var keysPrefix = DEFAULT_KEYS_PREFIX + var saveAfterProjectEvaluate = DEFAULT_SAVE_AFTER_PROJECT_EVALUATE } diff --git a/src/main/kotlin/net/thauvin/erik/gradle/semver/SemverPlugin.kt b/src/main/kotlin/net/thauvin/erik/gradle/semver/SemverPlugin.kt index a16c30d..67a05e1 100644 --- a/src/main/kotlin/net/thauvin/erik/gradle/semver/SemverPlugin.kt +++ b/src/main/kotlin/net/thauvin/erik/gradle/semver/SemverPlugin.kt @@ -70,6 +70,10 @@ class SemverPlugin : Plugin { put(config.separatorKey, version.separator) propsFile.apply { + if (!exists()) { + // Need to create the file as canWrite() will not work unless the file exists + createNewFile() + } if (canWrite()) { FileOutputStream(this).writer().use { store(it, "Generated by the Semver Plugin for Gradle") @@ -86,8 +90,8 @@ class SemverPlugin : Plugin { if (GradleVersion.current() < GradleVersion.version("4.8.1")) { throw GradleException("The $simpleName plugin requires Gradle version 4.8.1 or greater.") } - project.afterEvaluate(this::afterEvaluate) config = project.extensions.create("semver", SemverConfig::class.java) + project.afterEvaluate(this::afterEvaluate) project.tasks.apply { create("incrementMajor", SemverIncrementTask::class.java, config, version, SemverConfig.DEFAULT_MAJOR_KEY) @@ -132,7 +136,10 @@ class SemverPlugin : Plugin { } project.version = version.semver project.logger.info("[$simpleName] Project version set to: ${project.version}") - saveProperties(config, version) + // If first time running and there is no props file, and saveAfterEvaluate is false, then version props would never have been saved before + if (config.saveAfterProjectEvaluate || !isFile) { + saveProperties(config, version) + } } } }