| #include <ostream> |
| #include <cstdlib> |
| #include <fstream> |
| #include <string> |
| #include <iostream> |
| #include <boost/property_tree/ptree.hpp> |
| #include <boost/property_tree/json_parser.hpp> |
| #include "private/cli/commandmap.hpp" |
| #include "private/configurationpaths.hpp" |
| #include "private/configurationreader.hpp" |
| |
| using namespace shareddatalayer; |
| using namespace shareddatalayer::cli; |
| |
| namespace |
| { |
| bool parseConfiguration(const std::string& file) |
| { |
| boost::property_tree::ptree propertyTree; |
| |
| try |
| { |
| boost::property_tree::read_json(file, propertyTree); |
| } |
| catch (const boost::property_tree::json_parser::json_parser_error& e) |
| { |
| std::ostringstream os; |
| os << "error in SDL configuration " << file << " at line " << e.line() << ": "; |
| os << e.message(); |
| std::cerr << os.str().c_str() << std::endl; |
| return false; |
| } |
| return true; |
| } |
| |
| |
| int dumpConfigurationCommand(std::ostream& out) |
| { |
| std::string line; |
| bool status(true); |
| |
| for (const auto& i : findConfigurationFiles( getDefaultConfDirectories() )) |
| { |
| std::ifstream file(i); |
| |
| out << "File: " << i << std::endl; |
| |
| unsigned int lineNum = 1; |
| |
| if(file.is_open()) |
| { |
| bool parseStatus = parseConfiguration(i); |
| |
| if(status && !parseStatus) |
| status = false; |
| |
| while(getline(file, line)) |
| out << lineNum++ << ": " << line << std::endl; |
| file.close(); |
| } |
| } |
| |
| const auto var(DB_HOST_ENV_VAR_NAME); |
| const auto conf(getenv(var)); |
| if (conf == nullptr) |
| out << var << " not set." << std::endl; |
| else |
| out << var << ": " << conf << std::endl; |
| |
| if(!status) |
| { |
| return EXIT_FAILURE; |
| } |
| return EXIT_SUCCESS; |
| } |
| } |
| |
| AUTO_REGISTER_COMMAND(std::bind(dumpConfigurationCommand, std::placeholders::_1), |
| "dump-configuration", |
| "Dump configuration", |
| "Find, parse and dump all shareddatalayer configuration files contents.", |
| CommandMap::Category::UTIL, 30000); |
| |