diff --git a/node/src/main/kotlin/net/corda/node/NodeArgsParser.kt b/node/src/main/kotlin/net/corda/node/NodeArgsParser.kt index c2d93f7879..eb6e35ad12 100644 --- a/node/src/main/kotlin/net/corda/node/NodeArgsParser.kt +++ b/node/src/main/kotlin/net/corda/node/NodeArgsParser.kt @@ -61,11 +61,10 @@ class NodeArgsParser : AbstractArgsParser<CmdLineOptions>() { override fun doParse(optionSet: OptionSet): CmdLineOptions { require(optionSet.nonOptionArguments().isEmpty()) { "Unrecognized argument(s): ${optionSet.nonOptionArguments().joinToString(separator = ", ")}"} - require(!optionSet.has(baseDirectoryArg) || !optionSet.has(configFileArg)) { - "${baseDirectoryArg.options()[0]} and ${configFileArg.options()[0]} cannot be specified together" - } + val baseDirectory = optionSet.valueOf(baseDirectoryArg).normalize().toAbsolutePath() - val configFile = baseDirectory / optionSet.valueOf(configFileArg) + val configFilePath = Paths.get(optionSet.valueOf(configFileArg)) + val configFile = if (configFilePath.isAbsolute) configFilePath else baseDirectory / configFilePath.toString() val loggingLevel = optionSet.valueOf(loggerLevel) val logToConsole = optionSet.has(logToConsoleArg) val isRegistration = optionSet.has(isRegistrationArg) diff --git a/node/src/test/kotlin/net/corda/node/NodeArgsParserTest.kt b/node/src/test/kotlin/net/corda/node/NodeArgsParserTest.kt index c47c1e7aeb..bdd34d7bba 100644 --- a/node/src/test/kotlin/net/corda/node/NodeArgsParserTest.kt +++ b/node/src/test/kotlin/net/corda/node/NodeArgsParserTest.kt @@ -80,13 +80,6 @@ class NodeArgsParserTest { assertThat(cmdLineOptions.configFile).isEqualTo(configFile) } - @Test - fun `both base-directory and config-file`() { - assertThatExceptionOfType(IllegalArgumentException::class.java).isThrownBy { - parser.parse("--base-directory", "base", "--config-file", "conf") - }.withMessageContaining("base-directory").withMessageContaining("config-file") - } - @Test fun `base-directory without argument`() { assertThatExceptionOfType(OptionException::class.java).isThrownBy {