diff --git a/.github/workflows/gradle.yml b/.github/workflows/gradle.yml index b4e9503..dd12fd6 100644 --- a/.github/workflows/gradle.yml +++ b/.github/workflows/gradle.yml @@ -53,7 +53,7 @@ jobs: env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} - run: ./gradlew sonarqube + run: ./gradlew sonar - name: Cleanup Gradle Cache run: | diff --git a/lib/src/main/kotlin/net/thauvin/erik/urlencoder/UrlEncoder.kt b/lib/src/main/kotlin/net/thauvin/erik/urlencoder/UrlEncoder.kt index 81f1872..52397a8 100644 --- a/lib/src/main/kotlin/net/thauvin/erik/urlencoder/UrlEncoder.kt +++ b/lib/src/main/kotlin/net/thauvin/erik/urlencoder/UrlEncoder.kt @@ -31,10 +31,10 @@ import kotlin.system.exitProcess */ object UrlEncoder { private val hexDigits = "0123456789ABCDEF".toCharArray() - internal val usage = """Usage : kotlin -cp urlencoder-*.jar ${UrlEncoder::class.java.name} [-ed] text -Encode and decode URL parameters. - -e encode (default) - -d decode""" + internal val usage = + "Usage : kotlin -cp urlencoder-*.jar ${UrlEncoder::class.java.name} [-ed] text" + System.lineSeparator() + + "Encode and decode URL parameters." + System.lineSeparator() + " -e encode (default) " + + System.lineSeparator() + " -d decode" // see https://www.rfc-editor.org/rfc/rfc3986#page-13 private val unreservedChars = BitSet('~'.code + 1).apply { @@ -205,17 +205,15 @@ Encode and decode URL parameters. internal fun processMain(args: Array): MainResult { val result = MainResult() - if (args.isNotEmpty() && args[0].isNotBlank()) { + if (args.isNotEmpty() && args[0].isNotBlank() && args.size <= 2) { val hasDecode = args[0] == "-d" val hasOption = hasDecode || args[0] == "-e" - if (!hasOption || args.size >= 2) { - val argsList = mutableListOf() - argsList.addAll(args) - if (hasOption) argsList.removeAt(0) + if (!hasOption || args.size == 2) { + val arg = if (hasOption) args[1] else args[0] if (hasDecode) { - result.output = decode(argsList.joinToString(" ")) + result.output = decode(arg) } else { - result.output = encode(argsList.joinToString(" ")) + result.output = encode(arg) } result.status = 0 } diff --git a/lib/src/test/kotlin/net/thauvin/erik/urlencoder/UrlEncoderTest.kt b/lib/src/test/kotlin/net/thauvin/erik/urlencoder/UrlEncoderTest.kt index 7756ae9..d454c01 100644 --- a/lib/src/test/kotlin/net/thauvin/erik/urlencoder/UrlEncoderTest.kt +++ b/lib/src/test/kotlin/net/thauvin/erik/urlencoder/UrlEncoderTest.kt @@ -101,6 +101,7 @@ class UrlEncoderTest { @Test fun testMainUsage() { var result: UrlEncoder.MainResult + assertEquals(usage, processMain(arrayOf("foo", "bar", "test")).output, "too many args") for (arg in arrayOf("", " ", "-d", "-e")) { result = processMain(arrayOf(arg)) assertEquals(usage, result.output, "processMain('$arg')")