diff options
author | Maximilian Bosch <maximilian@mbosch.me> | 2018-10-10 13:19:52 +0200 |
---|---|---|
committer | Maximilian Bosch <maximilian@mbosch.me> | 2018-10-10 13:19:52 +0200 |
commit | 76cc15a3640940aa5866a3fc573e8089f6b336c9 (patch) | |
tree | a8d9b63dc95f48709f32949ed0792b2c3746efa7 /nixos | |
parent | fc847785d89255fb34c32fb28212a66044f655f3 (diff) | |
download | nixpkgs-76cc15a3640940aa5866a3fc573e8089f6b336c9.tar nixpkgs-76cc15a3640940aa5866a3fc573e8089f6b336c9.tar.gz nixpkgs-76cc15a3640940aa5866a3fc573e8089f6b336c9.tar.bz2 nixpkgs-76cc15a3640940aa5866a3fc573e8089f6b336c9.tar.lz nixpkgs-76cc15a3640940aa5866a3fc573e8089f6b336c9.tar.xz nixpkgs-76cc15a3640940aa5866a3fc573e8089f6b336c9.tar.zst nixpkgs-76cc15a3640940aa5866a3fc573e8089f6b336c9.zip |
nixos-option: don't abort with shell failures if options are not existant
`nixos-option` basically handles two cases: the given option is either a valid option defined using `mkOption` or an attribute set which contains a set of options. If none of the above cases is valid, `$1` is invalid. Unfortunatley the script interpreted invalid options as an attribute set which rendered shell failures when trying to evaluate the arguments. First of all, `if names=$(attrNames ...)` resulted in `<PRIMOP>` as `attrNames` simply evaluated `builtins.attrNames $result` which results in a non-applied function with `$result` being empty. Trying to map over this string using `nixMap` while applying `escapeQuotes` causes the bash error as `eval echo "<PRIMOP>"` is invalid syntax. Explicitly checking if `$result' contains a value (do we have an attribute set?) and otherwise returning a warning and asking if $option exists fixes the problem. Fixes #48060
Diffstat (limited to 'nixos')
-rw-r--r-- | nixos/modules/installer/tools/nixos-option.sh | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/nixos/modules/installer/tools/nixos-option.sh b/nixos/modules/installer/tools/nixos-option.sh index 327e3e6989f..76db778da27 100644 --- a/nixos/modules/installer/tools/nixos-option.sh +++ b/nixos/modules/installer/tools/nixos-option.sh @@ -314,13 +314,13 @@ else # echo 1>&2 "Warning: This value is not an option." result=$(evalCfg "") - if names=$(attrNames "$result" 2> /dev/null); then + if [ ! -z "$result" ]; then + names=$(attrNames "$result" 2> /dev/null) echo 1>&2 "This attribute set contains:" escapeQuotes () { eval echo "$1"; } nixMap escapeQuotes "$names" else - echo 1>&2 "An error occurred while looking for attribute names." - echo $result + echo 1>&2 "An error occurred while looking for attribute names. Are you sure that \`$option' exists?" fi fi |