From 00a2d2b91e98fc2dd0c228c97fd4d422a57af1f0 Mon Sep 17 00:00:00 2001 From: Denis Isidoro Date: Fri, 27 Sep 2019 10:59:56 -0300 Subject: [PATCH] Escape subshells in cheatsheets (#90) Fix #85 --- src/arg.sh | 13 ++++--------- src/ui.sh | 2 +- 2 files changed, 5 insertions(+), 10 deletions(-) diff --git a/src/arg.sh b/src/arg.sh index 422d5bd..308e0f2 100644 --- a/src/arg.sh +++ b/src/arg.sh @@ -2,6 +2,7 @@ ARG_REGEX="<[0-9a-zA-Z_]+>" ARG_DELIMITER="\f" +ARG_DELIMITER_2="\v" arg::dict() { local -r input="$(cat | sed 's/\\n/\\f/g')" @@ -27,15 +28,9 @@ arg::next() { } arg::deserialize() { - local -r arg="$1" - - if [ ${arg:0:1} = "'" ]; then - local -r out="$(echo "${arg:1:${#arg}-2}")" - else - local -r out="$arg" - fi - - echo "$out" | tr "${ARG_DELIMITER}" " " + local arg="$1" + arg="${arg:1:${#arg}-2}" + echo "$arg" | tr "${ARG_DELIMITER}" " " | tr "${ARG_DELIMITER_2}" "'" } # TODO: separation of concerns diff --git a/src/ui.sh b/src/ui.sh index 77f7572..1775ca4 100644 --- a/src/ui.sh +++ b/src/ui.sh @@ -19,7 +19,7 @@ ui::select() { local -r cheats="$1" local -r script_path="${SCRIPT_DIR}/navi" - local -r preview_cmd="echo \"{}\" | tr ' ' '${ARG_DELIMITER}' | xargs -I% \"${script_path}\" preview %" + local -r preview_cmd="echo \'{}\' | tr \"'\" '${ARG_DELIMITER_2}' | tr ' ' '${ARG_DELIMITER}' | xargs -I% \"${script_path}\" preview %" local -r query="$(dict::get "$OPTIONS" query)" local -r entry_point="$(dict::get "$OPTIONS" entry_point)"