@@ -23,20 +23,6 @@ spdlog::level::level_enum parseLogLevel(const std::string& level) {
2323 return spdlog::level::level_enum::off;
2424}
2525
26- std::string getEnv (const std::string& key) {
27- const auto value = std::getenv (key.c_str ());
28- if (value) {
29- if (key.find (" PASSWORD" ) == std::string::npos) {
30- Logger::info (LABEL, " read env variable, key: {}, value: {}" , colored (GREEN, " {}" , key), colored (GREEN, " {}" , value));
31- } else {
32- Logger::info (LABEL, " read env variable, key: {}, value: {}" , colored (GREEN, " {}" , key), colored (GREEN, " {}" , " *****" ));
33- }
34- return {value};
35- } else {
36- throw std::runtime_error (fmt::format (" key not found in env: {}" , key));
37- }
38- }
39-
4026template <typename T>
4127T readKey (const nlohmann::json& json, const std::vector<std::string>& keys) {
4228 std::string key;
@@ -69,8 +55,9 @@ std::vector<FrequencyRange> readIgnoredRanges(const nlohmann::json& json) {
6955 }
7056}
7157
72- Config::Config (const nlohmann::json& json)
58+ Config::Config (const nlohmann::json& json, const ArgConfig& argConfig )
7359 : m_json(json),
60+ m_argConfig(argConfig),
7461 m_devices(SdrDeviceReader::readDevices(json)),
7562 m_isColorLogEnabled(readKey<bool >(json, {" output" , " color_log_enabled" })),
7663 m_consoleLogLevel(parseLogLevel(readKey<std::string>(json, {" output" , " console_log_level" }))),
@@ -80,12 +67,9 @@ Config::Config(const nlohmann::json& json)
8067 m_recordingMinTime(std::chrono::milliseconds(readKey<int >(json, {" recording" , " min_time_ms" }))),
8168 m_recordingTimeout(std::chrono::milliseconds(readKey<int >(json, {" recording" , " max_noise_time_ms" }))),
8269 m_recordingTuningStep(readKey<Frequency>(json, {" recording" , " step" })),
83- m_workers(readKey<int >(json, {" workers" })),
84- m_mqttUrl(getEnv(" MQTT_URL" )),
85- m_mqttUsername(getEnv(" MQTT_USER" )),
86- m_mqttPassword(getEnv(" MQTT_PASSWORD" )) {}
70+ m_workers(readKey<int >(json, {" workers" })) {}
8771
88- Config Config::loadFromFile (const std::string& path) {
72+ Config Config::loadFromFile (const std::string& path, const ArgConfig& argConfig ) {
8973 constexpr auto BUFFER_SIZE = 1024 * 1024 ;
9074 FILE* file = fopen (path.c_str (), " r" );
9175
@@ -98,7 +82,7 @@ Config Config::loadFromFile(const std::string& path) {
9882 ConfigMigrator::update (json);
9983 SdrDeviceReader::scanSoapyDevices (json);
10084 ConfigMigrator::sort (json);
101- return Config (json);
85+ return Config (json, argConfig );
10286 } catch (const nlohmann::json::parse_error& exception) {
10387 throw std::runtime_error (fmt::format (" can not parse config file, invalid json format: {}" , path));
10488 }
@@ -123,7 +107,7 @@ void Config::saveToFile(const std::string& path, const nlohmann::json& json) {
123107}
124108
125109nlohmann::json Config::json () const { return m_json; }
126- std::string Config::mqtt () const { return fmt::format (" {}@{}" , m_mqttUsername, m_mqttUrl ); };
110+ std::string Config::mqtt () const { return fmt::format (" {}@{}" , m_argConfig. mqttUser , m_argConfig. mqttUrl ); };
127111
128112std::vector<Device> Config::devices () const { return m_devices; }
129113
@@ -142,6 +126,6 @@ std::chrono::milliseconds Config::recordingMinTime() const { return m_recordingM
142126std::chrono::milliseconds Config::recordingTimeout () const { return m_recordingTimeout; }
143127Frequency Config::recordingTuningStep () const { return m_recordingTuningStep; }
144128
145- std::string Config::mqttUrl () const { return m_mqttUrl ; }
146- std::string Config::mqttUsername () const { return m_mqttUsername ; }
147- std::string Config::mqttPassword () const { return m_mqttPassword ; }
129+ std::string Config::mqttUrl () const { return m_argConfig. mqttUrl ; }
130+ std::string Config::mqttUsername () const { return m_argConfig. mqttUser ; }
131+ std::string Config::mqttPassword () const { return m_argConfig. mqttPassword ; }
0 commit comments