/*] Copyright (c) 2009-2010, Charles McGarvey [************************** **] All rights reserved. * * vi:ts=4 sw=4 tw=75 * * Distributable under the terms and conditions of the 2-clause BSD license; * see the file COPYING for a complete text of the license. * **************************************************************************/ #include #include "log.hh" #include "settings.hh" namespace moof { settings::settings(int argc, char* argv[], const std::string& path) { script_.import_base_library(); log::import(script_); parse_args(argc, argv); load_files(path); } settings::~settings() { save(); } void settings::parse_args(int argc, char* argv[]) { for (int i = 1; i < argc; ++i) { if (script_.do_string(argv[i]) != script::success) { std::string str; script_[-1].get(str); log_warning("invalid option", argv[i], "returned", str); script_.clear_stack(); } } } void settings::load_files(const std::string& path) { std::vector paths; boost::split(paths, path, boost::is_any_of(":")); load_files(paths); } void settings::load_files(const std::vector& path) { std::string home = stlplus::folder_home(); std::vector::iterator it; std::vector copy(path); for (it = copy.begin(); it != copy.end(); ++it) { if (!home.empty()) { boost::replace_all(*it, "$HOME", home); //logDebug("Copying global settings..."); //mUserFile = *it; //mGlobals.push_copy(); //script_.set("globals", script::registry_index); } if (script_.do_file(*it) != script::success) { std::string str; script_[-1].get(str); log_warning(str); script_.clear_stack(); } } } void settings::clear() { script_.reset(); } void settings::save_as(const std::string& path) { mUserFile = path; save(); } void settings::save() const { // TODO saving settings not yet implemented } } // namepsace moof