src/CLIParser.h
branchv_0
changeset 3 b71fc3b5e56b
parent 2 1eef3d465863
--- 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";