diff options
author | tv <tv@krebsco.de> | 2017-07-23 01:03:53 +0200 |
---|---|---|
committer | tv <tv@krebsco.de> | 2017-07-23 01:36:02 +0200 |
commit | 2d932fd5d3a44918d280e5d6f3ff2168e008c73a (patch) | |
tree | 931beaf174a89705d9ae605dcf4ef46601cded4d | |
parent | 35ecd8bb2fb97c2150639bd1df54b532de34ef0b (diff) |
shell: add quote command
-rw-r--r-- | shell.nix | 32 |
1 files changed, 20 insertions, 12 deletions
@@ -67,6 +67,18 @@ let exec ${pkgs.jq}/bin/jq -enrf "$script" --arg target "$1" \ ''; + # usage: quote [ARGS...] + cmds.quote = pkgs.writeDash "cmds.quote" '' + set -efu + prefix= + for x; do + y=$(${pkgs.jq}/bin/jq -nr --arg x "$x" '$x | @sh "\(.)"') + echo -n "$prefix$y" + prefix=' ' + done + echo + ''; + init.args = pkgs.writeText "init.args" /* sh */ '' args=$(${pkgs.utillinux}/bin/getopt -n "$command" -s sh \ -o s:t:u: \ @@ -117,21 +129,17 @@ let ''; proxy = pkgs.writeDash "init.env.proxy" '' set -efu - q() { - ${pkgs.jq}/bin/jq -nr --arg x "$*" '$x | @sh "\(.)"' - } exec ${pkgs.openssh}/bin/ssh \ "$target_user@$target_host" -p "$target_port" \ cd "$target_path/stockholm" \; \ - NIX_PATH=$(q "$target_path") \ - STOCKHOLM_VERSION=$STOCKHOLM_VERSION \ - nix-shell \ - --run $(q \ - system=$system \ - target=$target \ - using_proxy=true \ - "$*" - ) + NIX_PATH=$(quote "$target_path") \ + STOCKHOLM_VERSION=$(quote "$STOCKHOLM_VERSION") \ + nix-shell --run "$(quote " + system=$(quote "$system") \ + target=$(quote "$target") \ + using_proxy=true \ + $(quote "$@") + ")" ''; }; |