From 89f9c0d41b29d18e2804677da856e84c86c83b45 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Tue, 26 Aug 2014 20:03:12 +0200 Subject: [PATCH] Fix building against current Nix master --- default.nix | 2 ++ nix-repl.cc | 30 +++++++++++++++++++++++------- 2 files changed, 25 insertions(+), 7 deletions(-) diff --git a/default.nix b/default.nix index e7cdc2358..8690325e5 100644 --- a/default.nix +++ b/default.nix @@ -2,6 +2,8 @@ with import nixpkgs { inherit system; }; +let nix = nixUnstable; in + runCommand "nix-repl" { buildInputs = [ readline nix boehmgc ]; } '' diff --git a/nix-repl.cc b/nix-repl.cc index fadaf079a..bff54aa14 100644 --- a/nix-repl.cc +++ b/nix-repl.cc @@ -39,7 +39,7 @@ struct NixRepl StringSet::iterator curCompletion; NixRepl(); - void mainLoop(const Strings & args); + void mainLoop(const Strings & files); void completePrefix(string prefix); bool getLine(string & line); bool processLine(string line); @@ -73,7 +73,7 @@ string removeWhitespace(string s) NixRepl::NixRepl() - : state(Strings()) + : state(Strings()) , staticEnv(false, &state.staticBaseEnv) { curDir = absPath("."); @@ -82,11 +82,11 @@ NixRepl::NixRepl() } -void NixRepl::mainLoop(const Strings & args) +void NixRepl::mainLoop(const Strings & files) { std::cout << "Welcome to Nix version " << NIX_VERSION << ". Type :? for help." << std::endl << std::endl; - foreach (Strings::const_iterator, i, args) + foreach (Strings::const_iterator, i, files) loadedFiles.push_back(*i); reloadFiles(); @@ -590,8 +590,24 @@ std::ostream & NixRepl::printValue(std::ostream & str, Value & v, unsigned int m } -void run(Strings args) +int main(int argc, char * * argv) { - NixRepl repl; - repl.mainLoop(args); + return handleExceptions(argv[0], [&]() { + initNix(); + + Strings files; + + parseCmdLine(argc, argv, [&](Strings::iterator & arg, const Strings::iterator & end) { + if (*arg == "--version") + printVersion("nix-repl"); + else if (*arg != "" && arg->at(0) == '-') + return false; + else + files.push_back(*arg); + return true; + }); + + NixRepl repl; + repl.mainLoop(files); + }); }