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 6f06651..a0341e5 100644 --- a/src/main/kotlin/net/thauvin/erik/gradle/semver/SemverPlugin.kt +++ b/src/main/kotlin/net/thauvin/erik/gradle/semver/SemverPlugin.kt @@ -47,20 +47,36 @@ class SemverPlugin : Plugin { companion object { fun saveProperties(config: SemverConfig, version: Version) { + val propsFile = File(config.properties) SortedProperties().apply { + propsFile.apply { + if (canRead() && isFile) { + FileInputStream(this).reader().use { load(it) } + } + } + put(config.majorKey, version.major) put(config.minorKey, version.minor) put(config.patchKey, version.patch) put(config.preReleaseKey, version.preRelease) put(config.buildMetaKey, version.buildMeta) - if (version.buildMetaPrefix != Version.DEFAULT_BUILDMETA_PREFIX) + if (version.buildMetaPrefix != Version.DEFAULT_BUILDMETA_PREFIX + || containsKey(config.buildMetaPrefixKey)) put(config.buildMetaPrefixKey, version.buildMetaPrefix) - if (version.preReleasePrefix != Version.DEFAULT_PRERELEASE_PREFIX) + if (version.preReleasePrefix != Version.DEFAULT_PRERELEASE_PREFIX + || containsKey(config.preReleasePrefixKey)) put(config.preReleasePrefixKey, version.preReleasePrefix) - if (version.separator != Version.DEFAULT_SEPARATOR) + if (version.separator != Version.DEFAULT_SEPARATOR || containsKey(config.separatorKey)) put(config.separatorKey, version.separator) - FileOutputStream(config.properties).writer().use { writer -> - store(writer, "Generated by the Semver Plugin for Gradle") + + propsFile.apply { + if (canWrite()) { + FileOutputStream(this).writer().use { + store(it, "Generated by the Semver Plugin for Gradle") + } + } else { + throw GradleException("Unable to write version to: `$absoluteFile`") + } } } }