From da7d8daa77c2cce5805947a012060b02be9e4a43 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Na=C3=AFm=20Favier?= Date: Sat, 19 Feb 2022 16:59:52 +0100 Subject: Add shell completion for --override-flake Requires moving the MixEvalArgs class from libexpr to libcmd because that's where completeFlakeRef is. --- src/libexpr/common-eval-args.cc | 101 ---------------------------------------- src/libexpr/common-eval-args.hh | 27 ----------- 2 files changed, 128 deletions(-) delete mode 100644 src/libexpr/common-eval-args.cc delete mode 100644 src/libexpr/common-eval-args.hh (limited to 'src/libexpr') diff --git a/src/libexpr/common-eval-args.cc b/src/libexpr/common-eval-args.cc deleted file mode 100644 index e50ff244c..000000000 --- a/src/libexpr/common-eval-args.cc +++ /dev/null @@ -1,101 +0,0 @@ -#include "common-eval-args.hh" -#include "shared.hh" -#include "filetransfer.hh" -#include "util.hh" -#include "eval.hh" -#include "fetchers.hh" -#include "registry.hh" -#include "flake/flakeref.hh" -#include "store-api.hh" - -namespace nix { - -MixEvalArgs::MixEvalArgs() -{ - auto category = "Common evaluation options"; - - addFlag({ - .longName = "arg", - .description = "Pass the value *expr* as the argument *name* to Nix functions.", - .category = category, - .labels = {"name", "expr"}, - .handler = {[&](std::string name, std::string expr) { autoArgs[name] = 'E' + expr; }} - }); - - addFlag({ - .longName = "argstr", - .description = "Pass the string *string* as the argument *name* to Nix functions.", - .category = category, - .labels = {"name", "string"}, - .handler = {[&](std::string name, std::string s) { autoArgs[name] = 'S' + s; }}, - }); - - addFlag({ - .longName = "include", - .shortName = 'I', - .description = "Add *path* to the list of locations used to look up `<...>` file names.", - .category = category, - .labels = {"path"}, - .handler = {[&](std::string s) { searchPath.push_back(s); }} - }); - - addFlag({ - .longName = "impure", - .description = "Allow access to mutable paths and repositories.", - .category = category, - .handler = {[&]() { - evalSettings.pureEval = false; - }}, - }); - - addFlag({ - .longName = "override-flake", - .description = "Override the flake registries, redirecting *original-ref* to *resolved-ref*.", - .category = category, - .labels = {"original-ref", "resolved-ref"}, - .handler = {[&](std::string _from, std::string _to) { - auto from = parseFlakeRef(_from, absPath(".")); - auto to = parseFlakeRef(_to, absPath(".")); - fetchers::Attrs extraAttrs; - if (to.subdir != "") extraAttrs["dir"] = to.subdir; - fetchers::overrideRegistry(from.input, to.input, extraAttrs); - }} - }); - - addFlag({ - .longName = "eval-store", - .description = "The Nix store to use for evaluations.", - .category = category, - .labels = {"store-url"}, - .handler = {&evalStoreUrl}, - }); -} - -Bindings * MixEvalArgs::getAutoArgs(EvalState & state) -{ - auto res = state.buildBindings(autoArgs.size()); - for (auto & i : autoArgs) { - auto v = state.allocValue(); - if (i.second[0] == 'E') - state.mkThunk_(*v, state.parseExprFromString(i.second.substr(1), absPath("."))); - else - v->mkString(((std::string_view) i.second).substr(1)); - res.insert(state.symbols.create(i.first), v); - } - return res.finish(); -} - -Path lookupFileArg(EvalState & state, std::string_view s) -{ - if (isUri(s)) { - return state.store->toRealPath( - fetchers::downloadTarball( - state.store, resolveUri(s), "source", false).first.storePath); - } else if (s.size() > 2 && s.at(0) == '<' && s.at(s.size() - 1) == '>') { - Path p(s.substr(1, s.size() - 2)); - return state.findFile(p); - } else - return absPath(std::string(s)); -} - -} diff --git a/src/libexpr/common-eval-args.hh b/src/libexpr/common-eval-args.hh deleted file mode 100644 index 03fa226aa..000000000 --- a/src/libexpr/common-eval-args.hh +++ /dev/null @@ -1,27 +0,0 @@ -#pragma once - -#include "args.hh" - -namespace nix { - -class Store; -class EvalState; -class Bindings; - -struct MixEvalArgs : virtual Args -{ - MixEvalArgs(); - - Bindings * getAutoArgs(EvalState & state); - - Strings searchPath; - - std::optional evalStoreUrl; - -private: - std::map autoArgs; -}; - -Path lookupFileArg(EvalState & state, std::string_view s); - -} -- cgit v1.2.3