/* * This file is part of smolbote. It's copyrighted by the contributors recorded * in the version control history of the file, available from its original * location: https://neueland.iserlohn-fortress.net/smolbote.hg * * SPDX-License-Identifier: GPL-3.0 */ #ifndef CONFIGURATION_H #define CONFIGURATION_H #include #include #include #include #include #include class Configuration { public: explicit Configuration(const QStringList &options = QStringList()); ~Configuration(); bool read(const QString &path); template std::optional value(const char *path) const { // if setting doesn't exist, we crash // in debug builds, check if setting exists #ifdef QT_DEBUG if(vm.count(path) == 0) { qWarning("value(%s) does not exist, probably crashing now", path); } #endif if constexpr(std::is_same_v) { std::string r = vm[path].as(); // check if it's a path if(r.front() == '~') { r.replace(0, 1, m_homePath); } return std::optional(r); } else return std::optional(vm[path].as()); } private: boost::program_options::options_description desc; boost::program_options::variables_map vm; std::string m_homePath; }; #endif // CONFIGURATION_H