diff --git a/.idea/checkstyle-idea.xml b/.idea/checkstyle-idea.xml
new file mode 100644
index 0000000..95c433c
--- /dev/null
+++ b/.idea/checkstyle-idea.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/build.gradle.kts b/build.gradle.kts
index 6c68d39..8839bbd 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -6,20 +6,20 @@ plugins {
`maven-publish`
jacoco
id("com.github.ben-manes.versions") version "0.21.0"
- id("com.gradle.build-scan") version "2.2.1"
+ id("com.gradle.build-scan") version "2.3"
id("com.gradle.plugin-publish") version "0.10.1"
id("io.gitlab.arturbosch.detekt") version "1.0.0-RC14"
- id("org.jlleitschuh.gradle.ktlint") version "7.3.0"
- id("org.sonarqube") version "2.7"
+ id("org.jmailen.kotlinter") version "1.25.2"
+ id("org.sonarqube") version "2.7.1"
}
-version = "1.0.0"
+version = "1.0.1"
group = "net.thauvin.erik.gradle"
var github = "https://github.com/ethauvin/semver-gradle"
var packageName = "net.thauvin.erik.gradle.semver"
-var spek_version = "2.0.2"
+var spek_version = "2.0.5"
repositories {
jcenter()
@@ -56,10 +56,6 @@ tasks {
}
}
- "check" {
- dependsOn("ktlintCheck")
- }
-
"sonarqube" {
dependsOn("jacocoTestReport")
}
@@ -81,6 +77,12 @@ detekt {
baseline = project.rootDir.resolve("detekt-baseline.xml")
}
+kotlinter {
+ ignoreFailures = false
+ reporters = arrayOf("html")
+ experimentalRules = false
+}
+
sonarqube {
properties {
property("sonar.projectName", "semver-gradle")
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index 5f1b120..f4d7b2b 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -1,5 +1,5 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-5.4-bin.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
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 0508fc7..a6dca00 100644
--- a/src/main/kotlin/net/thauvin/erik/gradle/semver/SemverPlugin.kt
+++ b/src/main/kotlin/net/thauvin/erik/gradle/semver/SemverPlugin.kt
@@ -59,7 +59,11 @@ class SemverPlugin : Plugin {
}
private fun afterEvaluate(project: Project) {
- val propsFile = File(config.properties)
+ val propsFile = if (File(config.properties).isAbsolute) {
+ File(config.properties)
+ } else {
+ File("${project.projectDir}${File.separator}${config.properties}")
+ }
if (project.version != "unspecified") {
project.logger.warn(
diff --git a/src/main/kotlin/net/thauvin/erik/gradle/semver/Utils.kt b/src/main/kotlin/net/thauvin/erik/gradle/semver/Utils.kt
index e6e1489..c4da2b1 100644
--- a/src/main/kotlin/net/thauvin/erik/gradle/semver/Utils.kt
+++ b/src/main/kotlin/net/thauvin/erik/gradle/semver/Utils.kt
@@ -70,12 +70,12 @@ object Utils {
var isNew = false
val props = Properties()
file.apply {
- if (!exists()) {
- if (!createNewFile()) {
- throw GradleException("Unable to create: `$absoluteFile`")
- } else {
+ try {
+ if (!exists() && createNewFile()) {
isNew = true
}
+ } catch (e: Exception) {
+ throw GradleException("Unable to create: `$absoluteFile`", e)
}
if (canReadFile()) {
FileInputStream(this).reader().use { reader ->
diff --git a/src/test/kotlin/net/thauvin/erik/gradle/semver/UtilsSpec.kt b/src/test/kotlin/net/thauvin/erik/gradle/semver/UtilsSpec.kt
index 698ab7f..018c2b0 100644
--- a/src/test/kotlin/net/thauvin/erik/gradle/semver/UtilsSpec.kt
+++ b/src/test/kotlin/net/thauvin/erik/gradle/semver/UtilsSpec.kt
@@ -32,11 +32,13 @@
package net.thauvin.erik.gradle.semver
import net.thauvin.erik.gradle.semver.Utils.canReadFile
+import org.gradle.api.GradleException
import org.spekframework.spek2.Spek
import org.spekframework.spek2.style.gherkin.Feature
import java.io.File
import java.util.Properties
import kotlin.test.assertEquals
+import kotlin.test.assertFailsWith
import kotlin.test.assertNull
import kotlin.test.assertTrue
@@ -46,6 +48,7 @@ object UtilsSpec : Spek({
val version = Version()
val config = SemverConfig()
val propsFile = File("test.properties")
+ val propsLocked = File("locked.properties")
lateinit var props: Properties
Scenario("Save/Load Properties") {
@@ -167,5 +170,35 @@ object UtilsSpec : Spek({
assertEquals(version.buildMeta, "007")
}
}
+
+ Scenario("Save to locked properties") {
+ Given("the locked properties") {
+ propsLocked.createNewFile()
+ propsLocked.setReadOnly()
+ config.properties = propsLocked.name
+ }
+
+ Then("saving the locked properties file") {
+ assertFailsWith {
+ Utils.saveProperties(config, version)
+ }
+ propsLocked.delete()
+ }
+ }
+
+ Scenario("Load locked properties") {
+ lateinit var locked: File
+
+ Given("the locked location") {
+ locked = File("locked")
+ }
+
+ Then("loading locked properties") {
+ assertFailsWith {
+ Utils.loadProperties(File(locked, propsLocked.name))
+ }
+ locked.delete()
+ }
+ }
}
})