shell: use getopt
This commit is contained in:
parent
aa8fb19044
commit
babbed38df
29
shell.nix
29
shell.nix
@ -3,7 +3,7 @@
|
|||||||
inherit (nixpkgs) lib pkgs;
|
inherit (nixpkgs) lib pkgs;
|
||||||
slib = import ./lib;
|
slib = import ./lib;
|
||||||
|
|
||||||
# usage: deploy system=SYSTEM [target=TARGET]
|
# usage: deploy --system=SYSTEM [--target=TARGET]
|
||||||
cmds.deploy = pkgs.writeDash "cmds.deploy" ''
|
cmds.deploy = pkgs.writeDash "cmds.deploy" ''
|
||||||
set -efu
|
set -efu
|
||||||
|
|
||||||
@ -15,7 +15,7 @@
|
|||||||
exec ${utils.deploy}
|
exec ${utils.deploy}
|
||||||
'';
|
'';
|
||||||
|
|
||||||
# usage: test system=SYSTEM target=TARGET
|
# usage: test --system=SYSTEM --target=TARGET
|
||||||
cmds.test = pkgs.writeDash "cmds.test" /* sh */ ''
|
cmds.test = pkgs.writeDash "cmds.test" /* sh */ ''
|
||||||
set -efu
|
set -efu
|
||||||
|
|
||||||
@ -28,18 +28,19 @@
|
|||||||
'';
|
'';
|
||||||
|
|
||||||
init.args = pkgs.writeText "init.args" /* sh */ ''
|
init.args = pkgs.writeText "init.args" /* sh */ ''
|
||||||
fail=
|
args=$(${pkgs.utillinux}/bin/getopt -n "$command" -s sh \
|
||||||
for arg; do
|
-o s:t: \
|
||||||
case $arg in
|
-l system:,target: \
|
||||||
system=*) system=''${arg#*=};;
|
-- "$@")
|
||||||
target=*) target=''${arg#*=};;
|
if \test $? != 0; then exit 1; fi
|
||||||
*) echo "$command: bad argument: $arg" >&2; fail=1
|
eval set -- "$args"
|
||||||
esac
|
while :; do case $1 in
|
||||||
done
|
-s|--system) system=$2; shift 2;;
|
||||||
if \test -n "$fail"; then
|
-t|--target) target=$2; shift 2;;
|
||||||
exit 1
|
--) shift; break;;
|
||||||
fi
|
esac; done
|
||||||
unset fail
|
for arg; do echo "$command: bad argument: $arg" >&2; done
|
||||||
|
if \test $# != 0; then exit 2; fi
|
||||||
'';
|
'';
|
||||||
|
|
||||||
init.env = pkgs.writeText "init.env" /* sh */ ''
|
init.env = pkgs.writeText "init.env" /* sh */ ''
|
||||||
|
Loading…
Reference in New Issue
Block a user