aboutsummaryrefslogtreecommitdiff
path: root/src/libexpr/common-opts.cc
diff options
context:
space:
mode:
authorEelco Dolstra <e.dolstra@tudelft.nl>2011-08-06 16:05:24 +0000
committerEelco Dolstra <e.dolstra@tudelft.nl>2011-08-06 16:05:24 +0000
commit1ecc97b6bdb27e56d832ca48cdafd3dbb5185a04 (patch)
tree4de27ee42f04bb50766f33a58d830677bd8fa80b /src/libexpr/common-opts.cc
parent54945a2950174ded83d58336061b4a9990cdbbfd (diff)
* Add a Nix expression search path feature. Paths between angle
brackets, e.g. import <nixpkgs/pkgs/lib> are resolved by looking them up relative to the elements listed in the search path. This allows us to get rid of hacks like import "${builtins.getEnv "NIXPKGS_ALL"}/pkgs/lib" The search path can be specified through the ‘-I’ command-line flag and through the colon-separated ‘NIX_PATH’ environment variable, e.g., $ nix-build -I /etc/nixos ... If a file is not found in the search path, an error message is lazily thrown.
Diffstat (limited to 'src/libexpr/common-opts.cc')
-rw-r--r--src/libexpr/common-opts.cc12
1 files changed, 11 insertions, 1 deletions
diff --git a/src/libexpr/common-opts.cc b/src/libexpr/common-opts.cc
index bab31f493..d029d2ec3 100644
--- a/src/libexpr/common-opts.cc
+++ b/src/libexpr/common-opts.cc
@@ -33,5 +33,15 @@ bool parseOptionArg(const string & arg, Strings::iterator & i,
return true;
}
-
+
+bool parseSearchPathArg(const string & arg, Strings::iterator & i,
+ const Strings::iterator & argsEnd, EvalState & state)
+{
+ if (arg != "-I") return false;
+ if (i == argsEnd) throw UsageError(format("`%1%' requires an argument") % arg);;
+ state.addToSearchPath(*i++);
+ return true;
+}
+
+
}