From c9a3ebd623bf2f968f7fbdf5bb2d7dda480b9f1c Mon Sep 17 00:00:00 2001 From: Eugen Wissner Date: Sun, 18 Jan 2026 18:44:22 +0100 Subject: Parse command line with boost program_options --- cli/configuration.cpp | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) (limited to 'cli/configuration.cpp') diff --git a/cli/configuration.cpp b/cli/configuration.cpp index 45669b3..4ca36c1 100644 --- a/cli/configuration.cpp +++ b/cli/configuration.cpp @@ -7,6 +7,7 @@ module; #include #include +#include #include @@ -15,8 +16,6 @@ import katja.repository; export module katja.configuration; -import katja.component; - export namespace katja { struct repository_configuration @@ -58,17 +57,30 @@ export namespace katja return this->repositories.cend(); } }; + + class configuration_error : public std::runtime_error + { + public: + configuration_error() + : std::runtime_error("Configuration is expected to be a table of repositories.") + { + } + }; } TOML11_DEFINE_CONVERSION_NON_INTRUSIVE(katja::repository_configuration, path); export namespace katja { - configuration read_configuration() + configuration read_configuration(const std::string& configuration_file) { - auto raw_root = toml::parse("katja.toml"); + auto raw_root = toml::parse(configuration_file); configuration result; + if (!raw_root.is_table()) + { + throw configuration_error(); + } for (const auto& [root_name, root_value] : raw_root.as_table()) { auto repository_value = toml::get(root_value); -- cgit v1.2.3