summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authortv <tv@krebsco.de>2017-09-19 21:00:32 +0200
committertv <tv@krebsco.de>2017-09-19 21:06:22 +0200
commit3005faecd4f1bbd7fc8d001e8f57d5ac8b38d462 (patch)
tree78ff65cfb3e0e72f06cd73e7e80bce25c4d1a6dc
parent16e6046544378bd5cdac73a9099b1d9d22a712cb (diff)
shell: use withGetopts for parse-target
-rw-r--r--shell.nix20
1 files changed, 7 insertions, 13 deletions
diff --git a/shell.nix b/shell.nix
index 661ac81a..4b8abed5 100644
--- a/shell.nix
+++ b/shell.nix
@@ -111,19 +111,13 @@ let
# usage: parse-target [--default=TARGET] TARGET
# TARGET = [USER@]HOST[:PORT][/PATH]
- cmds.parse-target = pkgs.writeDash "cmds.parse-target" ''
+ cmds.parse-target = pkgs.withGetopt {
+ default_target = {
+ long = "default";
+ short = "d";
+ };
+ } (opts: pkgs.writeDash "cmds.parse-target" ''
set -efu
- args=$(${pkgs.utillinux}/bin/getopt -n "$0" -s sh \
- -o d: \
- -l default: \
- -- "$@")
- if \test $? != 0; then exit 1; fi
- eval set -- "$args"
- default_target=
- while :; do case $1 in
- -d|--default) default_target=$2; shift 2;;
- --) shift; break;;
- esac; done
target=$1; shift
for arg; do echo "$0: bad argument: $arg" >&2; done
if \test $# != 0; then exit 2; fi
@@ -142,7 +136,7 @@ let
($default_target | parse) + ($target | parse | sanitize) |
. + { local: (.user == env.LOGNAME and .host == env.HOSTNAME) }
''}
- '';
+ '');
# usage: quote [ARGS...]
cmds.quote = pkgs.writeDash "cmds.quote" ''