From d6104195c86bbeec4bf9ca51022e53efb2f82790 Mon Sep 17 00:00:00 2001 From: NikkyAI Date: Wed, 26 Sep 2018 17:00:55 +0200 Subject: [PATCH 1/2] fix maven open version ranges disallow `,` in DEPS_COMMENT improve parsing of DEPS_ANNOT assume there is no more `)` after the annotation fixes #166 --- src/main/kotlin/kscript/app/Script.kt | 10 +++++----- src/test/kotlin/Tests.kt | 6 +++--- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/main/kotlin/kscript/app/Script.kt b/src/main/kotlin/kscript/app/Script.kt index 9018a61b..32c00c99 100644 --- a/src/main/kotlin/kscript/app/Script.kt +++ b/src/main/kotlin/kscript/app/Script.kt @@ -97,7 +97,7 @@ private fun extractEntryPoint(line: String) = when { line.contains(ENTRY_ANNOT_PREFIX) -> line .replaceFirst(ENTRY_ANNOT_PREFIX, "") - .split(")")[0].trim(' ', '"') + .substringBeforeLast(")").trim(' ', '"') line.startsWith(ENTRY_COMMENT_PREFIX) -> line.split("[ ]+".toRegex()).last() else -> @@ -158,16 +158,16 @@ internal fun extractDependencies(line: String) = when { line.contains(DEPS_ANNOT_PREFIX) -> line .replaceFirst(DEPS_ANNOT_PREFIX, "") .extractAnnotParams() -// .split(")")[0].split(",") +// ..substringBeforeLast(")").split(",") // .map { it.trim(' ', '"') } line.contains(DEPSMAVEN_ANNOT_PREFIX) -> line .replaceFirst(DEPSMAVEN_ANNOT_PREFIX, "") - .split(")")[0].trim(' ', '"').let { listOf(it) } + .substringBeforeLast(")").trim(' ', '"').let { listOf(it) } line.startsWith(DEPS_COMMENT_PREFIX) -> - line.split("[ ;,]+".toRegex()).drop(1).map(String::trim) + line.split("[ ;]+".toRegex()).drop(1).map(String::trim) else -> throw IllegalArgumentException("can not extract entry point from non-directive") @@ -195,7 +195,7 @@ fun Script.collectRepos(): List { // @file:MavenRepository("imagej", "http://maven.imagej.net/content/repositories/releases/") return lines .filter { it.contains(dependsOnMavenPrefix) } - .map { it.replaceFirst(dependsOnMavenPrefix, "").split(")")[0] } + .map { it.replaceFirst(dependsOnMavenPrefix, "").substringBeforeLast(")") } .map { it.split(",").map { it.trim(' ', '"', '(') }.let { MavenRepo(it[0], it[1]) } } // todo add credential support https://stackoverflow.com/questions/36282168/how-to-add-custom-maven-repository-to-gradle diff --git a/src/test/kotlin/Tests.kt b/src/test/kotlin/Tests.kt index fc1d3425..c1bf42bf 100644 --- a/src/test/kotlin/Tests.kt +++ b/src/test/kotlin/Tests.kt @@ -15,7 +15,7 @@ class Tests { @Test fun directiveDependencyCollect() { val lines = listOf( - "//DEPS de.mpicbg.scicomp.joblist:joblist-kotlin:1.1, de.mpicbg.scicomp:kutils:0.7", + "//DEPS de.mpicbg.scicomp.joblist:joblist-kotlin:1.1; de.mpicbg.scicomp:kutils:0.7", "//DEPS log4j:log4j:1.2.14" ) @@ -30,7 +30,7 @@ class Tests { @Test fun parseAnnotDependencies() { - val lines = listOf("""@file:DependsOn("something:dev-1.1.0-alpha3(T2):1.2.14", "de.mpicbg.scicomp:kutils:0.7")""") + val lines = listOf("""@file:DependsOn("something:dev-1.1.0-alpha3(T2):1.2.14"; "de.mpicbg.scicomp:kutils:0.7")""") val expected = listOf( "something:dev-1.1.0-alpha3(T2):1.2.14", @@ -83,7 +83,7 @@ class Tests { @Test fun mixedDependencyCollect() { val lines = listOf( - "//DEPS de.mpicbg.scicomp.joblist:joblist-kotlin:1.1, de.mpicbg.scicomp:kutils:0.7", + "//DEPS de.mpicbg.scicomp.joblist:joblist-kotlin:1.1; de.mpicbg.scicomp:kutils:0.7", """@file:DependsOn("log4j:log4j:1.2.14")""" ) From 30d71bf008b9b5d5227f5955125a47fc997678ba Mon Sep 17 00:00:00 2001 From: NikkyAI Date: Wed, 26 Sep 2018 20:34:27 +0200 Subject: [PATCH 2/2] unfix //DEPS to avoid breaking legacy scripts --- src/main/kotlin/kscript/app/Script.kt | 2 +- src/test/kotlin/Tests.kt | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/kotlin/kscript/app/Script.kt b/src/main/kotlin/kscript/app/Script.kt index 32c00c99..3471c54d 100644 --- a/src/main/kotlin/kscript/app/Script.kt +++ b/src/main/kotlin/kscript/app/Script.kt @@ -167,7 +167,7 @@ internal fun extractDependencies(line: String) = when { .substringBeforeLast(")").trim(' ', '"').let { listOf(it) } line.startsWith(DEPS_COMMENT_PREFIX) -> - line.split("[ ;]+".toRegex()).drop(1).map(String::trim) + line.split("[ ;,]+".toRegex()).drop(1).map(String::trim) else -> throw IllegalArgumentException("can not extract entry point from non-directive") diff --git a/src/test/kotlin/Tests.kt b/src/test/kotlin/Tests.kt index c1bf42bf..fc1d3425 100644 --- a/src/test/kotlin/Tests.kt +++ b/src/test/kotlin/Tests.kt @@ -15,7 +15,7 @@ class Tests { @Test fun directiveDependencyCollect() { val lines = listOf( - "//DEPS de.mpicbg.scicomp.joblist:joblist-kotlin:1.1; de.mpicbg.scicomp:kutils:0.7", + "//DEPS de.mpicbg.scicomp.joblist:joblist-kotlin:1.1, de.mpicbg.scicomp:kutils:0.7", "//DEPS log4j:log4j:1.2.14" ) @@ -30,7 +30,7 @@ class Tests { @Test fun parseAnnotDependencies() { - val lines = listOf("""@file:DependsOn("something:dev-1.1.0-alpha3(T2):1.2.14"; "de.mpicbg.scicomp:kutils:0.7")""") + val lines = listOf("""@file:DependsOn("something:dev-1.1.0-alpha3(T2):1.2.14", "de.mpicbg.scicomp:kutils:0.7")""") val expected = listOf( "something:dev-1.1.0-alpha3(T2):1.2.14", @@ -83,7 +83,7 @@ class Tests { @Test fun mixedDependencyCollect() { val lines = listOf( - "//DEPS de.mpicbg.scicomp.joblist:joblist-kotlin:1.1; de.mpicbg.scicomp:kutils:0.7", + "//DEPS de.mpicbg.scicomp.joblist:joblist-kotlin:1.1, de.mpicbg.scicomp:kutils:0.7", """@file:DependsOn("log4j:log4j:1.2.14")""" )