diff options
-rw-r--r-- | src/libstore/globals.cc | 6 | ||||
-rw-r--r-- | src/libutil/config.cc | 6 | ||||
-rw-r--r-- | src/libutil/config.hh | 6 |
3 files changed, 12 insertions, 6 deletions
diff --git a/src/libstore/globals.cc b/src/libstore/globals.cc index 4fa02f92085a..d3c96ddd6e61 100644 --- a/src/libstore/globals.cc +++ b/src/libstore/globals.cc @@ -116,17 +116,17 @@ template<> void BaseSetting<SandboxMode>::convertToArg(Args & args, const std::s args.mkFlag() .longName(name) .description("Enable sandboxing.") - .handler([=](std::vector<std::string> ss) { value = smEnabled; }) + .handler([=](std::vector<std::string> ss) { override(smEnabled); }) .category(category); args.mkFlag() .longName("no-" + name) .description("Disable sandboxing.") - .handler([=](std::vector<std::string> ss) { value = smDisabled; }) + .handler([=](std::vector<std::string> ss) { override(smDisabled); }) .category(category); args.mkFlag() .longName("relaxed-" + name) .description("Enable sandboxing, but allow builds to disable it.") - .handler([=](std::vector<std::string> ss) { value = smRelaxed; }) + .handler([=](std::vector<std::string> ss) { override(smRelaxed); }) .category(category); } diff --git a/src/libutil/config.cc b/src/libutil/config.cc index 14c4cca031bb..d46ca65a3863 100644 --- a/src/libutil/config.cc +++ b/src/libutil/config.cc @@ -152,7 +152,7 @@ void BaseSetting<T>::convertToArg(Args & args, const std::string & category) .longName(name) .description(description) .arity(1) - .handler([=](std::vector<std::string> ss) { set(ss[0]); }) + .handler([=](std::vector<std::string> ss) { overriden = true; set(ss[0]); }) .category(category); } @@ -201,12 +201,12 @@ template<> void BaseSetting<bool>::convertToArg(Args & args, const std::string & args.mkFlag() .longName(name) .description(description) - .handler([=](std::vector<std::string> ss) { value = true; }) + .handler([=](std::vector<std::string> ss) { override(true); }) .category(category); args.mkFlag() .longName("no-" + name) .description(description) - .handler([=](std::vector<std::string> ss) { value = false; }) + .handler([=](std::vector<std::string> ss) { override(false); }) .category(category); } diff --git a/src/libutil/config.hh b/src/libutil/config.hh index 99850c1cdfd5..9a32af528ec7 100644 --- a/src/libutil/config.hh +++ b/src/libutil/config.hh @@ -142,6 +142,12 @@ public: void set(const std::string & str) override; + virtual void override(const T & v) + { + overriden = true; + value = v; + } + std::string to_string() override; void convertToArg(Args & args, const std::string & category) override; |