diff --git a/pkl-commons-cli/src/main/kotlin/org/pkl/commons/cli/commands/BaseOptions.kt b/pkl-commons-cli/src/main/kotlin/org/pkl/commons/cli/commands/BaseOptions.kt index 229e2158..b5854db7 100644 --- a/pkl-commons-cli/src/main/kotlin/org/pkl/commons/cli/commands/BaseOptions.kt +++ b/pkl-commons-cli/src/main/kotlin/org/pkl/commons/cli/commands/BaseOptions.kt @@ -68,8 +68,8 @@ class BaseOptions : OptionGroup() { fun RawOption.associateProps(): OptionWithValues, Pair, Pair> { return convert { - val parts = it.split("=") - if (parts.size <= 1) parts[0] to "true" else parts[0] to parts[1] + val eq = it.indexOf('=') + if (eq == -1) it to "true" else it.substring(0, eq) to it.substring(eq + 1) } .multiple() .toMap() diff --git a/pkl-commons-cli/src/test/kotlin/org/pkl/commons/cli/BaseCommandTest.kt b/pkl-commons-cli/src/test/kotlin/org/pkl/commons/cli/BaseCommandTest.kt index 490ef855..c538dce6 100644 --- a/pkl-commons-cli/src/test/kotlin/org/pkl/commons/cli/BaseCommandTest.kt +++ b/pkl-commons-cli/src/test/kotlin/org/pkl/commons/cli/BaseCommandTest.kt @@ -44,11 +44,12 @@ class BaseCommandTest { } @Test - fun `external properties without value default to 'true'`() { - cmd.parse(arrayOf("-p", "flag1", "-p", "flag2=", "-p", "FOO=bar")) + fun `difficult cases for external properties`() { + cmd.parse(arrayOf("-p", "flag1", "-p", "flag2=", "-p", "FOO=bar", "-p", "baz=qux=quux")) val props = cmd.baseOptions.baseOptions(emptyList()).externalProperties - assertThat(props).isEqualTo(mapOf("flag1" to "true", "flag2" to "", "FOO" to "bar")) + assertThat(props) + .isEqualTo(mapOf("flag1" to "true", "flag2" to "", "FOO" to "bar", "baz" to "qux=quux")) } @Test