summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/cfg.cc16
-rw-r--r--src/cfg.hh13
2 files changed, 18 insertions, 11 deletions
diff --git a/src/cfg.cc b/src/cfg.cc
index 0196bde..b65246f 100644
--- a/src/cfg.cc
+++ b/src/cfg.cc
@@ -182,16 +182,18 @@ std::optional<bool> Config::get_bool(std::string_view name) const {
return std::nullopt;
}
-std::unique_ptr<Config> Config::load(std::string_view name,
- std::vector<std::string>& errors) {
- if (name.empty() || name.front() == '/') {
- auto ret = std::make_unique<ConfigSingleImpl>();
- ret->load(name, errors);
- return ret;
- }
+std::unique_ptr<Config> load_all(std::string_view name,
+ std::vector<std::string>& errors) {
auto ret = std::make_unique<ConfigXdgImpl>();
ret->load(name, errors);
return ret;
}
+std::unique_ptr<Config> load_one(std::filesystem::path const& path,
+ std::vector<std::string>& errors) {
+ auto ret = std::make_unique<ConfigSingleImpl>();
+ ret->load(path, errors);
+ return ret;
+}
+
} // namespace cfg
diff --git a/src/cfg.hh b/src/cfg.hh
index a4a7865..3be9a00 100644
--- a/src/cfg.hh
+++ b/src/cfg.hh
@@ -1,6 +1,7 @@
#ifndef CFG_HH
#define CFG_HH
+#include <filesystem>
#include <memory>
#include <optional>
#include <string_view>
@@ -24,10 +25,6 @@ class Config {
[[nodiscard]]
std::optional<bool> get_bool(std::string_view name) const;
- [[nodiscard]]
- static std::unique_ptr<Config> load(std::string_view name,
- std::vector<std::string>& errors);
-
protected:
Config() = default;
@@ -35,6 +32,14 @@ class Config {
Config& operator=(Config const&) = delete;
};
+[[nodiscard]]
+std::unique_ptr<Config> load_all(std::string_view name,
+ std::vector<std::string>& errors);
+
+[[nodiscard]]
+std::unique_ptr<Config> load_one(std::filesystem::path const& path,
+ std::vector<std::string>& errors);
+
} // namespace cfg
#endif // CFG_HH