diff options
-rw-r--r-- | doc/synopsis.rst | 17 | ||||
-rw-r--r-- | src/main.cpp | 22 |
2 files changed, 33 insertions, 6 deletions
diff --git a/doc/synopsis.rst b/doc/synopsis.rst index 5b93a92..2b28c74 100644 --- a/doc/synopsis.rst +++ b/doc/synopsis.rst @@ -1,4 +1,19 @@ Synopsis ======== -biboumi [*config_filename*] +biboumi [-ht] [*config_filename*] + +Command-Line Options +======== + +-h, \\-\\-help +~~~~~~~~ + +Display a help message and exit. + +-t, \\-\\-test-config +~~~~~~~~ + +Do not run, just test the configuration file syntax. Exit with a 0 +status if the configuration is valid, exits with a non-zero status +otherwise. diff --git a/src/main.cpp b/src/main.cpp index 2448197..21d0df8 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -38,7 +38,7 @@ int config_help(const std::string& missing_option) int display_help() { - std::cout << "Usage: biboumi [configuration_file]" << std::endl; + std::cout << "Usage: biboumi [-ht] [configuration_file]" << std::endl; return 0; } @@ -194,13 +194,19 @@ static int main_loop(std::string hostname, std::string password) int main(int ac, char** av) { + std::string cli_conf_filename; + bool test_conf = false; if (ac > 1) { - const std::string arg = av[1]; - if (arg.size() >= 2 && arg[0] == '-' && arg[1] == '-') + for (int i = 1; i < ac; i++) { - if (arg == "--help") + const std::string arg = av[i]; + if ((arg == "-h") || (arg == "--help")) return display_help(); + else if ((arg == "-t") || (arg == "--test-config")) + test_conf = true; + else if (i + 1 == ac) + cli_conf_filename = arg; else { std::cerr << "Unknow command line option: " << arg @@ -210,7 +216,7 @@ int main(int ac, char** av) } } const std::string conf_filename = - ac > 1 ? av[1]: xdg_config_path("biboumi.cfg"); + cli_conf_filename.empty() ? xdg_config_path("biboumi.cfg"): cli_conf_filename; std::cout << "Using configuration file: " << conf_filename << std::endl; if (!Config::read_conf(conf_filename)) @@ -222,6 +228,12 @@ int main(int ac, char** av) const std::string hostname = Config::get("hostname", ""); if (hostname.empty()) return config_help("hostname"); + if (test_conf) + { + std::cout << "biboumi: the configuration file " << conf_filename + << " syntax is ok" << std::endl; + return 0; + } #ifdef USE_DATABASE try |