mirror of
https://github.com/NixOS/nix
synced 2025-07-06 00:51:47 +02:00
Pass lists/attrsets to bash as (associative) arrays
This commit is contained in:
parent
ac12517f3e
commit
2d5b1b24bf
10 changed files with 166 additions and 26 deletions
|
@ -440,15 +440,6 @@ static void opQuery(Strings opFlags, Strings opArgs)
|
|||
}
|
||||
|
||||
|
||||
static string shellEscape(const string & s)
|
||||
{
|
||||
string r;
|
||||
for (auto & i : s)
|
||||
if (i == '\'') r += "'\\''"; else r += i;
|
||||
return r;
|
||||
}
|
||||
|
||||
|
||||
static void opPrintEnv(Strings opFlags, Strings opArgs)
|
||||
{
|
||||
if (!opFlags.empty()) throw UsageError("unknown flag");
|
||||
|
@ -460,7 +451,7 @@ static void opPrintEnv(Strings opFlags, Strings opArgs)
|
|||
/* Print each environment variable in the derivation in a format
|
||||
that can be sourced by the shell. */
|
||||
for (auto & i : drv.env)
|
||||
cout << format("export %1%; %1%='%2%'\n") % i.first % shellEscape(i.second);
|
||||
cout << format("export %1%; %1%=%2%\n") % i.first % shellEscape(i.second);
|
||||
|
||||
/* Also output the arguments. This doesn't preserve whitespace in
|
||||
arguments. */
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue