summaryrefslogtreecommitdiff
path: root/modules/tools
diff options
context:
space:
mode:
authorClaudius "keldu" Holeksa <mail@keldu.de>2024-05-06 14:36:55 +0200
committerClaudius "keldu" Holeksa <mail@keldu.de>2024-05-06 14:36:55 +0200
commit399d0a9a02d4a993b20637bebfba22f4c33aff04 (patch)
treea8366bd14e8c5e235caab9cbcd68ab012622ce97 /modules/tools
parentcfc6f8ed68f3718ffe033da2417af5190374ae0e (diff)
Reworking the cli manipulator a little bit
Diffstat (limited to 'modules/tools')
-rw-r--r--modules/tools/c++/cli_analyzer.hpp12
-rw-r--r--modules/tools/examples/cli_mod.cpp23
2 files changed, 17 insertions, 18 deletions
diff --git a/modules/tools/c++/cli_analyzer.hpp b/modules/tools/c++/cli_analyzer.hpp
index 6b44987..8142e2a 100644
--- a/modules/tools/c++/cli_analyzer.hpp
+++ b/modules/tools/c++/cli_analyzer.hpp
@@ -14,6 +14,7 @@ namespace impl {
struct cli_mode {
struct read {};
struct write {};
+ struct list {};
};
template<typename Schema, typename Encoding>
@@ -167,7 +168,7 @@ struct parsed_args {
};
template<typename Schema, typename Encoding>
-error_or<void> modify_data_on_cli(bool read_mode, const std::string_view& file_path, std::deque<std::string> sch_path, std::string& json_data){
+error_or<void> modify_data_on_cli(const std::string_view& mode, const std::string_view& file_path, std::deque<std::string> sch_path, std::string& json_data){
/**
* Read data from file
*/
@@ -194,14 +195,14 @@ error_or<void> modify_data_on_cli(bool read_mode, const std::string_view& file_p
}
}
- if (read_mode) {
+ if (mode == "r") {
{
auto eov = impl::cli_traverser<Schema, encode::Native<storage::Default>>::template traverse<impl::cli_mode::read>(sch_path, native_data, json_data);
if(eov.is_error()){
return eov;
}
}
- } else {
+ } else if (mode == "w") {
{
auto eov = impl::cli_traverser<Schema, encode::Native<storage::Default>>::template traverse<impl::cli_mode::write>(sch_path, native_data, json_data);
if(eov.is_error()){
@@ -225,6 +226,11 @@ error_or<void> modify_data_on_cli(bool read_mode, const std::string_view& file_p
fstr << enc_str;
fstr.close();
}
+ } else if (mode == "l"){
+ {
+ }
+ }else{
+ return make_error<err::invalid_state>("Invalid mode");
}
return void_t{};
diff --git a/modules/tools/examples/cli_mod.cpp b/modules/tools/examples/cli_mod.cpp
index f108394..404b2ef 100644
--- a/modules/tools/examples/cli_mod.cpp
+++ b/modules/tools/examples/cli_mod.cpp
@@ -83,12 +83,14 @@ int main(int argc, char** argv){
return min_amount_args;
}else if (args_view.at(1) == "w"){
return min_amount_args + 1u;
+ }else if (args_view.at(1) == "l"){
+ return min_amount_args;
}
return 0u;
}();
if(args_size < min_amount_args){
- std::cerr<<"Invalid first argument. Must either be 'r' or 'w'"<<std::endl;
+ std::cerr<<"Invalid first argument. Must either be 'r', 'w' or 'l'."<<std::endl;
return -1;
}
@@ -97,21 +99,18 @@ int main(int argc, char** argv){
return -1;
}
- bool is_read_mode = [&]() -> bool {
- if(args_view.at(1) == "w"){
- return false;
- }
- return true;
+ std::string_view mode = [&]() -> std::string_view {
+ return args_view.at(1);
}();
std::string json_data;
- if ( not is_read_mode ){
+ if ( mode == "w" ){
json_data = std::string{args_view.at(4)};
}
std::deque<std::string> sch_path = split_schema_path(args_view.at(3));
{
- auto eov = saw::modify_data_on_cli<schema::AnalyzeTest, saw::encode::Json>(is_read_mode, args_view.at(2), sch_path, json_data);
+ auto eov = saw::modify_data_on_cli<schema::AnalyzeTest, saw::encode::Json>(mode, args_view.at(2), sch_path, json_data);
if(eov.is_error()){
auto& err = eov.get_error();
std::cerr<<"Modification failed: "<<err.get_category()<<" - "<<err.get_message()<<std::endl;
@@ -119,15 +118,9 @@ int main(int argc, char** argv){
}
}
- if( is_read_mode ){
+ if( mode == "r" or mode == "l" ){
std::cout<<json_data<<std::endl;
}
-/*
- for(int i = 0; i < argc; ++i){
- std::cout<<args_view.at(i)<<std::endl;
- }
-*/
-
return 0;
}