diff -r 1eef3d465863 -r b71fc3b5e56b src/CLIParser.h --- a/src/CLIParser.h Tue Mar 01 00:49:46 2022 +0100 +++ b/src/CLIParser.h Fri Mar 04 19:43:16 2022 +0100 @@ -37,9 +37,19 @@ else throw relpipe::cli::RelpipeCLIException(L"Missing CLI argument" + (i > 0 ? (L" after " + arguments[i - 1]) : L""), relpipe::cli::CLI::EXIT_CODE_BAD_CLI_ARGUMENTS); } + /** + * TODO: use a common method + */ + bool parseBoolean(const relpipe::common::type::StringX& value) { + if (value == L"true") return true; + else if (value == L"false") return false; + else throw relpipe::cli::RelpipeCLIException(L"Unable to parse boolean value: " + value + L" (expecting true or false)", relpipe::cli::CLI::EXIT_CODE_BAD_CLI_ARGUMENTS); + } + public: static const relpipe::writer::string_t OPTION_RELATION; + static const relpipe::writer::string_t OPTION_UNLINK_ON_CLOSE; static const relpipe::writer::string_t OPTION_QUEUE; static const relpipe::writer::string_t OPTION_MESSAGE_COUNT; @@ -51,6 +61,8 @@ if (option == OPTION_RELATION) { c.relation = readNext(arguments, i); + } else if (option == OPTION_UNLINK_ON_CLOSE) { + c.unlinkOnClose = parseBoolean(readNext(arguments, i)); } else if (option == OPTION_QUEUE) { c.queue = readNext(arguments, i); } else if (option == OPTION_MESSAGE_COUNT) { @@ -66,6 +78,7 @@ }; const relpipe::writer::string_t CLIParser::OPTION_RELATION = L"--relation"; +const relpipe::writer::string_t CLIParser::OPTION_UNLINK_ON_CLOSE = L"--unlink-on-close"; const relpipe::writer::string_t CLIParser::OPTION_QUEUE = L"--queue"; const relpipe::writer::string_t CLIParser::OPTION_MESSAGE_COUNT = L"--message-count";