From c853dfcf24881ee67c357891621e89c283bab6d2 Mon Sep 17 00:00:00 2001 From: Riyyi Date: Mon, 7 Feb 2022 21:37:15 +0100 Subject: [PATCH] Manager: Search config file recursively from the working directory --- src/config.cpp | 19 +++++++++++++++++++ src/config.h | 4 ++++ 2 files changed, 23 insertions(+) diff --git a/src/config.cpp b/src/config.cpp index 82ad2fa..3c6fa20 100644 --- a/src/config.cpp +++ b/src/config.cpp @@ -12,8 +12,27 @@ Config::Config(s) : m_workingDirectory(std::filesystem::current_path()) , m_workingDirectorySize(m_workingDirectory.string().size()) { + findConfigFile(); } Config::~Config() { } + +// ----------------------------------------- + +void Config::findConfigFile() +{ + std::string configFileName = "manafiles.json"; + + for (const auto& path : std::filesystem::recursive_directory_iterator { m_workingDirectory }) { + const auto& file = path.path().string(); + if (file.find(configFileName) + configFileName.size() == file.size()) { + m_config = file; + } + } + +#ifndef NDEBUG + printf("Found config file @ %s\n", m_config.c_str() + m_workingDirectorySize + 1); +#endif +} diff --git a/src/config.h b/src/config.h index 7a324ae..7b98f56 100644 --- a/src/config.h +++ b/src/config.h @@ -24,10 +24,14 @@ public: bool verbose() const { return m_verbose; } private: + void findConfigFile(); + bool m_verbose { false }; std::filesystem::path m_workingDirectory {}; size_t m_workingDirectorySize { 0 }; + + std::filesystem::path m_config; }; #endif // CONFIG_H