mirror of
https://github.com/NixOS/nix
synced 2025-07-06 21:41:48 +02:00
Fix and extend nix-shell baseDir test
This commit is contained in:
parent
d5854f33e2
commit
f5b59fbc64
6 changed files with 20 additions and 2 deletions
|
@ -202,7 +202,7 @@ Bindings * MixEvalArgs::getAutoArgs(EvalState & state)
|
|||
auto v = state.allocValue();
|
||||
std::visit(overloaded {
|
||||
[&](const AutoArgExpr & arg) {
|
||||
state.mkThunk_(*v, state.parseExprFromString(arg.expr, state.rootPath(".")));
|
||||
state.mkThunk_(*v, state.parseExprFromString(arg.expr, true ? state.rootPath(absPath(getCommandBaseDir())) : state.rootPath(".")));
|
||||
},
|
||||
[&](const AutoArgString & arg) {
|
||||
v->mkString(arg.s);
|
||||
|
|
|
@ -29,6 +29,7 @@ struct Completions final : AddCompletions
|
|||
*/
|
||||
class RootArgs : virtual public Args
|
||||
{
|
||||
protected:
|
||||
/**
|
||||
* @brief The command's "working directory", but only set when top level.
|
||||
*
|
||||
|
|
|
@ -183,6 +183,9 @@ static void main_nix_build(int argc, char * * argv)
|
|||
struct MyArgs : LegacyArgs, MixEvalArgs
|
||||
{
|
||||
using LegacyArgs::LegacyArgs;
|
||||
void setBaseDir(Path baseDir) {
|
||||
commandBaseDir = baseDir;
|
||||
}
|
||||
};
|
||||
|
||||
MyArgs myArgs(myName, [&](Strings::iterator & arg, const Strings::iterator & end) {
|
||||
|
@ -290,6 +293,9 @@ static void main_nix_build(int argc, char * * argv)
|
|||
state->repair = myArgs.repair;
|
||||
if (myArgs.repair) buildMode = bmRepair;
|
||||
|
||||
if (inShebang) {
|
||||
myArgs.setBaseDir(absPath(dirOf(script)));
|
||||
}
|
||||
auto autoArgs = myArgs.getAutoArgs(*state);
|
||||
|
||||
auto autoArgsWithInNixShell = autoArgs;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue