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
|
@ -13,7 +13,7 @@ rec {
|
|||
derivation ({
|
||||
inherit system;
|
||||
builder = shell;
|
||||
args = ["-e" args.builder or (builtins.toFile "builder.sh" "eval \"$buildCommand\"")];
|
||||
args = ["-e" args.builder or (builtins.toFile "builder.sh" "if [ -e .attrs.sh ]; then source .attrs.sh; fi; eval \"$buildCommand\"")];
|
||||
PATH = path;
|
||||
} // removeAttrs args ["builder" "meta"])
|
||||
// { meta = args.meta or {}; };
|
||||
|
|
|
@ -14,7 +14,8 @@ nix_tests = \
|
|||
placeholders.sh nix-shell.sh \
|
||||
linux-sandbox.sh \
|
||||
build-remote.sh \
|
||||
nar-index.sh
|
||||
nar-index.sh \
|
||||
structured-attrs.sh
|
||||
# parallel.sh
|
||||
|
||||
install-tests += $(foreach x, $(nix_tests), tests/$(x))
|
||||
|
|
47
tests/structured-attrs.nix
Normal file
47
tests/structured-attrs.nix
Normal file
|
@ -0,0 +1,47 @@
|
|||
with import ./config.nix;
|
||||
|
||||
mkDerivation {
|
||||
name = "structured";
|
||||
|
||||
__structuredAttrs = true;
|
||||
|
||||
buildCommand = ''
|
||||
set -x
|
||||
|
||||
[[ $int = 123456789 ]]
|
||||
[[ -z $float ]]
|
||||
[[ -n $boolTrue ]]
|
||||
[[ -z $boolFalse ]]
|
||||
[[ -n ''${hardening[format]} ]]
|
||||
[[ -z ''${hardening[fortify]} ]]
|
||||
[[ ''${#buildInputs[@]} = 7 ]]
|
||||
[[ ''${buildInputs[2]} = c ]]
|
||||
[[ -v nothing ]]
|
||||
[[ -z $nothing ]]
|
||||
|
||||
mkdir ''${outputs[out]}
|
||||
echo bar > $dest
|
||||
'';
|
||||
|
||||
buildInputs = [ "a" "b" "c" 123 "'" "\"" null ];
|
||||
|
||||
hardening.format = true;
|
||||
hardening.fortify = false;
|
||||
|
||||
outer.inner = [ 1 2 3 ];
|
||||
|
||||
int = 123456789;
|
||||
|
||||
float = 123.456;
|
||||
|
||||
boolTrue = true;
|
||||
boolFalse = false;
|
||||
|
||||
nothing = null;
|
||||
|
||||
dest = "${placeholder "out"}/foo";
|
||||
|
||||
"foo bar" = "BAD";
|
||||
"1foobar" = "BAD";
|
||||
"foo$" = "BAD";
|
||||
}
|
7
tests/structured-attrs.sh
Normal file
7
tests/structured-attrs.sh
Normal file
|
@ -0,0 +1,7 @@
|
|||
source common.sh
|
||||
|
||||
clearStore
|
||||
|
||||
outPath=$(nix-build structured-attrs.nix --no-out-link)
|
||||
|
||||
[[ $(cat $outPath/foo) = bar ]]
|
Loading…
Add table
Add a link
Reference in a new issue