Merge pull request #17 from tsion/install-cmd
Add :i command to install a derivation to the current profile.
This commit is contained in:
commit
2bfb00c66e
13
nix-repl.cc
13
nix-repl.cc
|
@ -19,9 +19,6 @@ using namespace std;
|
||||||
using namespace nix;
|
using namespace nix;
|
||||||
|
|
||||||
|
|
||||||
string programId = "nix-repl";
|
|
||||||
|
|
||||||
|
|
||||||
struct NixRepl
|
struct NixRepl
|
||||||
{
|
{
|
||||||
string curDir;
|
string curDir;
|
||||||
|
@ -297,6 +294,7 @@ bool NixRepl::processLine(string line)
|
||||||
<< " <x> = <expr> Bind expression to variable\n"
|
<< " <x> = <expr> Bind expression to variable\n"
|
||||||
<< " :a <expr> Add attributes from resulting set to scope\n"
|
<< " :a <expr> Add attributes from resulting set to scope\n"
|
||||||
<< " :b <expr> Build derivation\n"
|
<< " :b <expr> Build derivation\n"
|
||||||
|
<< " :i <expr> Build derivation, then install result into current profile\n"
|
||||||
<< " :l <path> Load Nix expression and add it to scope\n"
|
<< " :l <path> Load Nix expression and add it to scope\n"
|
||||||
<< " :p <expr> Evaluate and print expression recursively\n"
|
<< " :p <expr> Evaluate and print expression recursively\n"
|
||||||
<< " :q Exit nix-repl\n"
|
<< " :q Exit nix-repl\n"
|
||||||
|
@ -327,12 +325,12 @@ bool NixRepl::processLine(string line)
|
||||||
std::cout << showType(v) << std::endl;
|
std::cout << showType(v) << std::endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
else if (command == ":b" || command == ":s") {
|
else if (command == ":b" || command == ":i" || command == ":s") {
|
||||||
Value v;
|
Value v;
|
||||||
evalString(arg, v);
|
evalString(arg, v);
|
||||||
DrvInfo drvInfo(state);
|
DrvInfo drvInfo(state);
|
||||||
if (!getDerivation(state, v, drvInfo, false))
|
if (!getDerivation(state, v, drvInfo, false))
|
||||||
throw Error("expression does not evaluation to a derivation, so I can't build it");
|
throw Error("expression does not evaluate to a derivation, so I can't build it");
|
||||||
Path drvPath = drvInfo.queryDrvPath();
|
Path drvPath = drvInfo.queryDrvPath();
|
||||||
if (drvPath == "" || !state.store->isValidPath(drvPath))
|
if (drvPath == "" || !state.store->isValidPath(drvPath))
|
||||||
throw Error("expression did not evaluate to a valid derivation");
|
throw Error("expression did not evaluate to a valid derivation");
|
||||||
|
@ -347,9 +345,12 @@ bool NixRepl::processLine(string line)
|
||||||
for (auto & i : drv.outputs)
|
for (auto & i : drv.outputs)
|
||||||
std::cout << format(" %1% -> %2%") % i.first % i.second.path << std::endl;
|
std::cout << format(" %1% -> %2%") % i.first % i.second.path << std::endl;
|
||||||
}
|
}
|
||||||
} else
|
} else if (command == ":i") {
|
||||||
|
runProgram("nix-env", Strings{"-i", drvPath});
|
||||||
|
} else {
|
||||||
runProgram("nix-shell", Strings{drvPath});
|
runProgram("nix-shell", Strings{drvPath});
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
else if (command == ":p" || command == ":print") {
|
else if (command == ":p" || command == ":print") {
|
||||||
Value v;
|
Value v;
|
||||||
|
|
Loading…
Reference in a new issue