summaryrefslogtreecommitdiffstats
path: root/shell.nix
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
commitcf6f320210b200f9186050674967caaa38ffb6c6 (patch)
tree93bd9af7de9a6977dc984e0826121f0e39835e61 /shell.nix
parenta68f3df85a6e2e2776562c75226a7ef403262c50 (diff)
shell: use withGetopts for parse-target
Diffstat (limited to 'shell.nix')
-rw-r--r--shell.nix20
1 files changed, 7 insertions, 13 deletions
diff --git a/shell.nix b/shell.nix
index 661ac81..4b8abed 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" ''