1
0
Fork 0
mirror of https://github.com/LnL7/nix-darwin.git synced 2025-03-13 20:30:02 +00:00

darwin-option: improve default/example printing

This commit is contained in:
Daiderd Jordan 2018-03-29 22:34:35 +02:00
parent eb1a841b4f
commit a8847b28e7
No known key found for this signature in database
GPG key ID: D02435D05B810C96

View file

@ -4,20 +4,25 @@ set -o pipefail
export PATH=@path@:$PATH
evalNix() {
nix-instantiate --eval --strict -E "with import <darwin> {}; $@"
nix-instantiate --eval --strict -E "with import <darwin> {}; $*"
}
evalAttrs() {
evalNix "builtins.concatStringsSep \"\n\" (builtins.attrNames $@)"
evalNix "builtins.concatStringsSep \"\\n\" (builtins.attrNames $*)"
}
evalOpt() {
evalNix "options.$option.$@" 2>/dev/null
evalNix "options.$option.$*" 2>/dev/null
}
evalOptText() {
eval printf "$(evalNix "options.$option.$*" 2>/dev/null)" 2>/dev/null
echo
}
showSyntax() {
echo "$0: <option>" >&2
eval printf $(evalAttrs "options")
eval printf "$(evalAttrs "options")"
echo
exit 1
}
@ -45,15 +50,19 @@ if [ "$(evalOpt "_type")" = '"option"' ]; then
evalOpt "value" || echo "no value"
echo
echo "Default:"
evalOpt "default" || echo "no default"
evalOpt "default" || evalOptText "defaultText" || echo "no default"
echo
echo "Example:"
evalOpt "example" || echo "no example"
if [ "$(evalOpt "example._type")" = '"literalExample"' ]; then
evalOptText "example.text" || echo "no example"
else
evalOpt "example" || echo "no example"
fi
echo
echo "Description:"
eval printf $(evalOpt "description") || echo "no description"
evalOptText "description" || echo "no description"
echo
else
eval printf $(evalAttrs "options.$option")
eval printf "$(evalAttrs "options.$option")" 2>/dev/null
echo
fi