diff options
Diffstat (limited to 'third_party/nix/src/libmain/common-args.cc')
-rw-r--r-- | third_party/nix/src/libmain/common-args.cc | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/third_party/nix/src/libmain/common-args.cc b/third_party/nix/src/libmain/common-args.cc new file mode 100644 index 000000000000..729e026f1990 --- /dev/null +++ b/third_party/nix/src/libmain/common-args.cc @@ -0,0 +1,56 @@ +#include "libmain/common-args.hh" + +#include <glog/logging.h> + +#include "libstore/globals.hh" + +namespace nix { + +MixCommonArgs::MixCommonArgs(const std::string& programName) + : programName(programName) { + mkFlag() + .longName("verbose") + .shortName('v') + .description("increase verbosity level") + .handler([]() { + FLAGS_stderrthreshold = google::GLOG_INFO; + FLAGS_v += 1; + }); + + mkFlag() + .longName("quiet") + .description("silence all log output") + .handler([]() { FLAGS_stderrthreshold = google::GLOG_FATAL; }); + + mkFlag() + .longName("option") + .labels({"name", "value"}) + .description("set a Nix configuration option (overriding nix.conf)") + .arity(2) + .handler([](std::vector<std::string> ss) { + try { + globalConfig.set(ss[0], ss[1]); + } catch (UsageError& e) { + LOG(WARNING) << e.what(); + } + }); + + mkFlag() + .longName("max-jobs") + .shortName('j') + .label("jobs") + .description("maximum number of parallel builds") + .handler([=](const std::string& s) { settings.set("max-jobs", s); }); + + std::string cat = "config"; + globalConfig.convertToArgs(*this, cat); + + // Backward compatibility hack: nix-env already had a --system flag. + if (programName == "nix-env") { + longFlags.erase("system"); + } + + hiddenCategories.insert(cat); +} + +} // namespace nix |