Bottle::load_config now checks ~/.local/share/cellar.json and compiled defaults (this commit is correct)

This commit is contained in:
Nicholas O'Connor 2017-07-05 14:39:48 -07:00
parent e2400b2908
commit d2f83c0d0f
2 changed files with 12 additions and 8 deletions

View File

@ -9,6 +9,9 @@ using nlohmann::json;
namespace cellar { namespace cellar {
namespace config { namespace config {
json get_default_config(); json get_default_config();
extern json global_config;
extern json compiled_config;
} }
} }

View File

@ -7,6 +7,7 @@
#include "json.hpp" #include "json.hpp"
#include "cellar.hpp" #include "cellar.hpp"
#include "config.hpp"
#include "bottles.hpp" #include "bottles.hpp"
#include "output.hpp" #include "output.hpp"
@ -18,8 +19,8 @@ namespace fs = boost::filesystem;
using json = nlohmann::json; using json = nlohmann::json;
json cellar::global_config; json cellar::config::global_config;
json cellar::compiled_config; json cellar::config::compiled_config;
bool Bottle::load_config() { bool Bottle::load_config() {
bool globalconfig = false; bool globalconfig = false;
@ -51,14 +52,14 @@ bool Bottle::load_config() {
sstr_globalpath << "/cellar.json"; sstr_globalpath << "/cellar.json";
// see src/config/defaults.cpp.cog // see src/config/defaults.cpp.cog
compiled_config = cellar::config::get_default_config(); config::compiled_config = config::get_default_config();
string globaljsonpath = sstr_globalpath.str(); string globaljsonpath = sstr_globalpath.str();
if (fs::exists(globaljsonpath)) { if (fs::exists(globaljsonpath)) {
ifstream configstream(globaljsonpath); ifstream configstream(globaljsonpath);
stringstream sstr_config; stringstream sstr_config;
sstr_config << configstream.rdbuf(); sstr_config << configstream.rdbuf();
cellar::global_config = json::parse(sstr_config.str()); config::global_config = json::parse(sstr_config.str());
globalconfig = true; globalconfig = true;
} else { } else {
@ -93,10 +94,10 @@ bool Bottle::save_config() {
string Bottle::get_config(string key) { string Bottle::get_config(string key) {
if (this->config.find(key) != this->config.end()) { if (this->config.find(key) != this->config.end()) {
return this->config[key]; return this->config[key];
} else if (cellar::global_config.find(key) != cellar::global_config.end()) { } else if (config::global_config.find(key) != config::global_config.end()) {
return cellar::global_config[key]; return config::global_config[key];
} else if (cellar::compiled_config.find(key) != cellar::compiled_config.end()) { } else if (config::compiled_config.find(key) != config::compiled_config.end()) {
return cellar::compiled_config[key]; return config::compiled_config[key];
} else { } else {
return ""; return "";
} }