Commit 890ef5ed58a76eaf72b632835712c67ef15d4eea
1 parent
6a79aebe
Added argumentparser
Showing
5 changed files
with
232 additions
and
0 deletions
tools/publish_cli/CMakeLists.txt
0 → 100644
1 | +cmake_minimum_required(VERSION 3.12) | ||
2 | +LIST(APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/submodules/cmake) | ||
3 | + | ||
4 | +include(projectheader) | ||
5 | +project_header(publish_cli) | ||
6 | + | ||
7 | +find_package( Boost REQUIRED COMPONENTS regex ) | ||
8 | + | ||
9 | +include(compiler) | ||
10 | + | ||
11 | +include_directories( | ||
12 | + ${CMAKE_CURRENT_SOURCE_DIR}/../../include | ||
13 | +) | ||
14 | + | ||
15 | +set(SRC_LIST | ||
16 | + ${CMAKE_CURRENT_SOURCE_DIR}/argumentparserbase.h | ||
17 | + ${CMAKE_CURRENT_SOURCE_DIR}/argumentparserbase.cpp | ||
18 | + ${CMAKE_CURRENT_SOURCE_DIR}/argumentparser.h | ||
19 | + ${CMAKE_CURRENT_SOURCE_DIR}/argumentparser.cpp | ||
20 | + ${CMAKE_CURRENT_SOURCE_DIR}/main.cpp | ||
21 | +) | ||
22 | + | ||
23 | +include(library) | ||
24 | +add_libraries( | ||
25 | + PUBLIC | ||
26 | + Boost::boost | ||
27 | + Boost::regex | ||
28 | + mqtt-cpp | ||
29 | + paho-mqtt3a | ||
30 | +) | ||
31 | + | ||
32 | +include(installation) | ||
33 | +install_component() |
tools/publish_cli/argumentparser.cpp
1 | +/* **************************************************************************** | ||
2 | + * Copyright 2024 Open Systems Development BV * | ||
3 | + * * | ||
4 | + * Permission is hereby granted, free of charge, to any person obtaining a * | ||
5 | + * copy of this software and associated documentation files (the "Software"), * | ||
6 | + * to deal in the Software without restriction, including without limitation * | ||
7 | + * the rights to use, copy, modify, merge, publish, distribute, sublicense, * | ||
8 | + * and/or sell copies of the Software, and to permit persons to whom the * | ||
9 | + * Software is furnished to do so, subject to the following conditions: * | ||
10 | + * * | ||
11 | + * The above copyright notice and this permission notice shall be included in * | ||
12 | + * all copies or substantial portions of the Software. * | ||
13 | + * * | ||
14 | + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * | ||
15 | + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * | ||
16 | + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL * | ||
17 | + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * | ||
18 | + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING * | ||
19 | + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * | ||
20 | + * DEALINGS IN THE SOFTWARE. * | ||
21 | + * ***************************************************************************/ | ||
22 | +#include "argumentparser.h" | ||
23 | + | ||
24 | +#include <iostream> | ||
25 | + | ||
26 | +std::string ArgumentParser::getHost() | ||
27 | +{ | ||
28 | + return getArgument("-h"); | ||
29 | +} | ||
30 | + | ||
31 | +std::string ArgumentParser::getPort() | ||
32 | +{ | ||
33 | + return getArgument("-p"); | ||
34 | +} | ||
35 | + | ||
36 | +std::string ArgumentParser::getUserName() | ||
37 | +{ | ||
38 | + return getArgument("-u"); | ||
39 | +} | ||
40 | + | ||
41 | +std::string ArgumentParser::getPassword() | ||
42 | +{ | ||
43 | + return getArgument("-pw"); | ||
44 | +} | ||
45 | + | ||
46 | +std::string ArgumentParser::getTopic() | ||
47 | +{ | ||
48 | + return getArgument("-t"); | ||
49 | +} | ||
50 | + | ||
51 | +std::string ArgumentParser::getFile() | ||
52 | +{ | ||
53 | + return getArgument("-f");} | ||
54 | +std::string ArgumentParser::getMessage(); | ||
0 | \ No newline at end of file | 55 | \ No newline at end of file |
tools/publish_cli/argumentparser.h
1 | +/* **************************************************************************** | ||
2 | + * Copyright 2024 Open Systems Development BV * | ||
3 | + * * | ||
4 | + * Permission is hereby granted, free of charge, to any person obtaining a * | ||
5 | + * copy of this software and associated documentation files (the "Software"), * | ||
6 | + * to deal in the Software without restriction, including without limitation * | ||
7 | + * the rights to use, copy, modify, merge, publish, distribute, sublicense, * | ||
8 | + * and/or sell copies of the Software, and to permit persons to whom the * | ||
9 | + * Software is furnished to do so, subject to the following conditions: * | ||
10 | + * * | ||
11 | + * The above copyright notice and this permission notice shall be included in * | ||
12 | + * all copies or substantial portions of the Software. * | ||
13 | + * * | ||
14 | + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * | ||
15 | + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * | ||
16 | + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL * | ||
17 | + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * | ||
18 | + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING * | ||
19 | + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * | ||
20 | + * DEALINGS IN THE SOFTWARE. * | ||
21 | + * ***************************************************************************/ | ||
22 | +#pragma once | ||
23 | + | ||
24 | +#include "argumentparserbase.h" | ||
25 | + | ||
26 | +class ArgumentParser : public ArgumentParserBase | ||
27 | +{ | ||
28 | +public: | ||
29 | + ArgumentParser(int num_of_args, char* argv[]) : ArgumentParserBase(num_of_args, argv) {} | ||
30 | + virtual ~ArgumentParser() {} | ||
31 | + | ||
32 | + std::string getHost(); | ||
33 | + std::string getPort(); | ||
34 | + std::string getUserName(); | ||
35 | + std::string getPassword(); | ||
36 | + std::string getTopic(); | ||
37 | + std::string getFile(); | ||
38 | + std::string getMessage(); | ||
39 | +}; | ||
0 | \ No newline at end of file | 40 | \ No newline at end of file |
tools/publish_cli/argumentparserbase.cpp
0 → 100644
1 | +/* **************************************************************************** | ||
2 | + * Copyright 2024 Open Systems Development BV * | ||
3 | + * * | ||
4 | + * Permission is hereby granted, free of charge, to any person obtaining a * | ||
5 | + * copy of this software and associated documentation files (the "Software"), * | ||
6 | + * to deal in the Software without restriction, including without limitation * | ||
7 | + * the rights to use, copy, modify, merge, publish, distribute, sublicense, * | ||
8 | + * and/or sell copies of the Software, and to permit persons to whom the * | ||
9 | + * Software is furnished to do so, subject to the following conditions: * | ||
10 | + * * | ||
11 | + * The above copyright notice and this permission notice shall be included in * | ||
12 | + * all copies or substantial portions of the Software. * | ||
13 | + * * | ||
14 | + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * | ||
15 | + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * | ||
16 | + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL * | ||
17 | + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * | ||
18 | + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING * | ||
19 | + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * | ||
20 | + * DEALINGS IN THE SOFTWARE. * | ||
21 | + * ***************************************************************************/ | ||
22 | + | ||
23 | +#include "argumentparserbase.h" | ||
24 | + | ||
25 | +ArgumentParserBase::ArgumentParserBase(int num_of_args, char* argv[]) | ||
26 | +{ | ||
27 | + // Store the program name | ||
28 | + m_programName = argv[0]; | ||
29 | + | ||
30 | + // Store the arguments | ||
31 | + for (int i = 1; i < num_of_args; i++) | ||
32 | + { | ||
33 | + std::string arg = argv[i]; | ||
34 | + if (arg[0] == '-') | ||
35 | + { | ||
36 | + if (i + 1 < num_of_args) | ||
37 | + { | ||
38 | + m_arguments[arg] = argv[i + 1]; | ||
39 | + } | ||
40 | + else | ||
41 | + { | ||
42 | + m_arguments[arg] = ""; | ||
43 | + } | ||
44 | + } | ||
45 | + } | ||
46 | +} | ||
47 | + | ||
48 | +ArgumentParserBase::~ArgumentParserBase() | ||
49 | +{ | ||
50 | + m_arguments.clear(); | ||
51 | + m_programName.clear(); | ||
52 | +} | ||
53 | + | ||
54 | +std::string ArgumentParserBase::getArgument(const std::string &option) | ||
55 | +{ | ||
56 | + auto it = m_arguments.find(option); | ||
57 | + if (it != m_arguments.end()) | ||
58 | + { | ||
59 | + return it->second; | ||
60 | + } | ||
61 | + return ""; | ||
62 | +} |
tools/publish_cli/argumentparserbase.h
0 → 100644
1 | +/* **************************************************************************** | ||
2 | + * Copyright 2024 Open Systems Development BV * | ||
3 | + * * | ||
4 | + * Permission is hereby granted, free of charge, to any person obtaining a * | ||
5 | + * copy of this software and associated documentation files (the "Software"), * | ||
6 | + * to deal in the Software without restriction, including without limitation * | ||
7 | + * the rights to use, copy, modify, merge, publish, distribute, sublicense, * | ||
8 | + * and/or sell copies of the Software, and to permit persons to whom the * | ||
9 | + * Software is furnished to do so, subject to the following conditions: * | ||
10 | + * * | ||
11 | + * The above copyright notice and this permission notice shall be included in * | ||
12 | + * all copies or substantial portions of the Software. * | ||
13 | + * * | ||
14 | + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * | ||
15 | + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * | ||
16 | + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL * | ||
17 | + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * | ||
18 | + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING * | ||
19 | + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * | ||
20 | + * DEALINGS IN THE SOFTWARE. * | ||
21 | + * ***************************************************************************/ | ||
22 | +#include <iostream> | ||
23 | +#include <string> | ||
24 | +#include <unordered_map> | ||
25 | + | ||
26 | +/*! | ||
27 | + * @brief ArgumentParserBase class | ||
28 | + */ | ||
29 | +class ArgumentParserBase | ||
30 | +{ | ||
31 | +public: | ||
32 | + ArgumentParserBase(int num_of_args, char* argv[]); | ||
33 | + virtual ~ArgumentParserBase(); | ||
34 | + | ||
35 | + /// @brief Returns the argument for the given option | ||
36 | + std::string getArgument(const std::string &option); | ||
37 | + | ||
38 | + /// @brief Returns the number of arguments | ||
39 | + int count() const { return m_arguments.size(); } | ||
40 | + | ||
41 | +private: // members (Giggity) | ||
42 | + std::string m_programName; | ||
43 | + std::unordered_map<std::string, std::string> m_arguments; | ||
44 | +}; | ||
0 | \ No newline at end of file | 45 | \ No newline at end of file |