summaryrefslogtreecommitdiff
path: root/server/src/modules_handler.cpp
diff options
context:
space:
mode:
authorGluzskiy Alexandr <sss@sss.chaoslab.ru>2015-03-29 00:06:35 +0300
committerGluzskiy Alexandr <sss@sss.chaoslab.ru>2015-03-29 00:06:35 +0300
commit42646fc776ff938a4440af5d1cc7be41160a3dbb (patch)
treefb50bf44186f150ec651015e1ca3dea25ac2fd48 /server/src/modules_handler.cpp
parent264fee4fb3b5ad1c4682a9f233ef781318f74cc8 (diff)
work in progress
Diffstat (limited to 'server/src/modules_handler.cpp')
-rw-r--r--server/src/modules_handler.cpp43
1 files changed, 38 insertions, 5 deletions
diff --git a/server/src/modules_handler.cpp b/server/src/modules_handler.cpp
index a6dbcef..1626d91 100644
--- a/server/src/modules_handler.cpp
+++ b/server/src/modules_handler.cpp
@@ -19,14 +19,23 @@
*/
#include "modules_handler.h"
+#include "main.h"
#include <unistd.h>
#include <dlfcn.h>
#include <string>
#include <boost/filesystem.hpp>
+#include <iostream>
+
+
+
-#include <iostream>
+
+namespace bpt = boost::property_tree;
+
+extern runtime_config_s runtime_config;
+
extern core_api *module_api;
@@ -55,6 +64,7 @@ void modules_handler::load_metadata_modules(const std::string &path)
//TODO: aditional sanity checks
module_metadata_storage *m = static_cast<module_metadata_storage*>(f());
m->load(module_api);
+ sync_module_settings(m);
metadata_modules.push_back(m);
}
}
@@ -84,6 +94,7 @@ void modules_handler::load_downloader_modules(const std::string &path)
//TODO: aditional sanity checks
module_metadata_storage *m = static_cast<module_metadata_storage*>(f());
m->load(module_api);
+ sync_module_settings(m);
metadata_modules.push_back(m);
}
}
@@ -98,16 +109,27 @@ std::string modules_handler::get_self_path()
return s;
}
-std::string modules_handler::list_modules()
+std::string modules_handler::list_modules(short verbose_level)
{
std::string buf;
buf += "Installed metadata modules:\n";
for(auto i = metadata_modules.begin(), end = metadata_modules.end(); i != end; ++i)
{
- buf += "\t";
+ buf += "\tName: ";
buf += (*i)->get_module_info().name;
- buf += " (" + (*i)->get_module_info().description + ") ";
- buf += "v" + (*i)->get_module_info().version;
+ buf += "\n\tDescription: " +(*i)->get_module_info().description;
+ buf += "\n\tVersion: " + (*i)->get_module_info().version;
+ if(runtime_config.verbosity >= 1)
+ {
+ buf += "\n\tAvailable options:";
+ for(auto i1 = (*i)->get_module_info().default_settings.begin(), end = (*i)->get_module_info().default_settings.end(); i1 != end; ++i1)
+ {
+ buf += "\n\t\t";
+ buf += i1->first;
+ buf += " = ";
+ buf += i1->second;
+ }
+ }
buf += "\n";
}
buf += "Installed downloader modules:\n";
@@ -122,6 +144,17 @@ std::string modules_handler::list_modules()
return buf;
}
+void modules_handler::sync_module_settings(module_base *m)
+{
+ for(auto i = m->get_module_info().default_settings.begin(), end = m->get_module_info().default_settings.end(); i != end; ++i)
+ {
+ std::string setting = "modules." + m->get_module_info().name + "." + i->first;
+ std::string current_val = runtime_config.config_file.get<std::string>(setting, "not set"), default_val = i->second;
+ if(current_val == "not set" || current_val != default_val)
+ runtime_config.config_file.put(setting, i->second);
+ }
+}
+
modules_handler::modules_handler()
{