From e418976107ed1581c108c82cd5b3b06c2f4ba9db Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Sun, 14 Jan 2007 12:32:44 +0000 Subject: * Option --argstr for passing string arguments easily. (NIX-75) --- src/libexpr/common-opts.cc | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 src/libexpr/common-opts.cc (limited to 'src/libexpr/common-opts.cc') diff --git a/src/libexpr/common-opts.cc b/src/libexpr/common-opts.cc new file mode 100644 index 000000000000..9e3f8f9614da --- /dev/null +++ b/src/libexpr/common-opts.cc @@ -0,0 +1,32 @@ +#include "common-opts.hh" +#include "../libmain/shared.hh" +#include "util.hh" +#include "parser.hh" + + +namespace nix { + + +bool parseOptionArg(const string & arg, Strings::iterator & i, + const Strings::iterator & argsEnd, EvalState & state, + ATermMap & autoArgs) +{ + if (arg != "--arg" && arg != "--argstr") return false; + + UsageError error(format("`%1%' requires two arguments") % arg); + + if (i == argsEnd) throw error; + string name = *i++; + if (i == argsEnd) throw error; + string value = *i++; + + Expr e = arg == "--arg" + ? parseExprFromString(state, value, absPath(".")) + : makeStr(value); + autoArgs.set(toATerm(name), e); + + return true; +} + + +} -- cgit 1.4.1