From d56b48437ece38e85714e61405908a42f1a6d761 Mon Sep 17 00:00:00 2001
From: Anna Wellmann <a.wellmann@tu-bs.de>
Date: Mon, 17 Apr 2023 08:23:46 +0000
Subject: [PATCH] Add helper function for loading the config

---
 src/basics/config/ConfigurationFile.h | 22 ++++++++++++++++++++++
 1 file changed, 22 insertions(+)

diff --git a/src/basics/config/ConfigurationFile.h b/src/basics/config/ConfigurationFile.h
index 3bf9e8072..c0cd06ca8 100644
--- a/src/basics/config/ConfigurationFile.h
+++ b/src/basics/config/ConfigurationFile.h
@@ -1,6 +1,8 @@
 #ifndef BASICS_CONFIGURATIONFILE_H
 #define BASICS_CONFIGURATIONFILE_H
 
+#include "Logger.h"
+#include <filesystem>
 #include <map>
 #include <vector>
 #include <sstream>
@@ -68,6 +70,26 @@ public:
    template<class T>
    T getValue(const std::string& key, T defaultValue) const;
 
+   static ConfigurationFile loadConfig(int argc, char *argv[], std::filesystem::path configPath, std::string defaultConfigName = "config.txt")
+   {
+      // the config file's default name can be replaced by passing a command line argument
+
+      std::string configName = defaultConfigName;
+
+      if (argc > 1) 
+      {
+         configName = argv[1];
+         VF_LOG_INFO("Using configFile command line argument: {}", configName);
+      } else {
+         VF_LOG_INFO("Using default config name: {}", configName);
+      }
+
+      configPath.replace_filename(configName);
+      vf::basics::ConfigurationFile config;
+      config.load(configPath.string());
+      return config;
+   }
+
 private:
    //! the container
    std::map<std::string, std::string> data;
-- 
GitLab