From ccb75b97ea5d99a41d3d415b63acf19eb6a4def6 Mon Sep 17 00:00:00 2001 From: Tim Byrne Date: Thu, 23 Jan 2020 08:11:19 -0600 Subject: [PATCH] Escape space in YADM_HOOK_FULL_COMMAND (#187) Backslashes are used to escape spaces, tabs, and backslashes. This allows hooks to identify separate parameters (which are space delimited). --- yadm | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/yadm b/yadm index 278fcec..a88c985 100755 --- a/yadm +++ b/yadm @@ -70,7 +70,16 @@ function main() { require_git # capture full command, for passing to hooks - FULL_COMMAND="$*" + # the parameters will be space delimited and + # spaces, tabs, and backslashes will be escaped + _tab=$'\t' + for param in "$@"; do + param="${param//\\/\\\\}" + param="${param//$_tab/\\$_tab}" + param="${param// /\\ }" + _fc+=( "$param" ) + done + FULL_COMMAND="${_fc[*]}" # create the YADM_DIR if it doesn't exist yet [ -d "$YADM_DIR" ] || mkdir -p "$YADM_DIR"