mirror of
https://github.com/TheLocehiliosan/yadm
synced 2024-10-27 20:34:27 +00:00
27 lines
1021 B
Bash
Executable File
27 lines
1021 B
Bash
Executable File
#!/bin/bash
|
|
|
|
# yadm exposes all parameters of the command which triggers a hook. Those
|
|
# parameters are exported as the environment variable YADM_HOOK_FULL_COMMAND.
|
|
# Any spaces, tabs, or backslashes in those parameters are escaped with a
|
|
# backslash. The function `parse_full_command()` is a demonstration of parsing
|
|
# those values which may be escaped.
|
|
|
|
function parse_full_command() {
|
|
local delim=$'\x1e' # ASCII Record Separator
|
|
local space=$'\x1f' # ASCII Unit Separator
|
|
local tab=$'\t' # ASCII TAB
|
|
local cmd
|
|
cmd="$YADM_HOOK_FULL_COMMAND"
|
|
cmd="${cmd//\\ /$space}" # swap escaped spaces for `1f`
|
|
cmd="${cmd//\\\\/\\}" # fix escaped backslashes
|
|
cmd="${cmd//\\$tab/$tab}" # fix escaped tabs
|
|
cmd="${cmd// /$delim}" # convert space delimiters to `1c`
|
|
cmd="${cmd//$space/ }" # convert `1f` back to spaces
|
|
# parse data into an array
|
|
IFS=$delim read -r -a full_cmd <<< "$cmd"
|
|
}
|
|
parse_full_command
|
|
for param in "${full_cmd[@]}"; do
|
|
echo "Parameter: '$param'"
|
|
done
|