From 657db232361f645f71da824f7196c6ae50dec204 Mon Sep 17 00:00:00 2001 From: Nicholas Chambers Date: Sat, 2 May 2020 15:48:15 -0500 Subject: [PATCH] Add extra processing of special commands --- lib/cli.sh | 10 +++++----- lib/serv.sh | 4 ++++ redish-cli | 9 ++++++++- 3 files changed, 17 insertions(+), 6 deletions(-) diff --git a/lib/cli.sh b/lib/cli.sh index e0b6491..31e653c 100644 --- a/lib/cli.sh +++ b/lib/cli.sh @@ -6,10 +6,9 @@ get_cmd() { parse_cmd() { local cmd=( ) arg - declare -n cmd_sent=$1 - declare -n serialized=$2 + declare -n serialized=$1 - route_cmd "$3" + route_cmd "$2" serialized=*${#cmd[@]}$'\r\n' @@ -56,9 +55,10 @@ parse_word() { done if ! (( ${#cmd[@]} )); then - cmd_sent=${arg^^} - cmd+=( "\$${#arg}"$'\r\n'"$cmd_sent"$'\r\n' ) + redis_cmd=( "${arg^^}" ) + cmd=( "\$${#arg}"$'\r\n'"${arg^^}"$'\r\n' ) else + redis_cmd+=( "$arg" ) cmd+=( "\$${#arg}"$'\r\n'"$arg"$'\r\n' ) fi diff --git a/lib/serv.sh b/lib/serv.sh index e6878cb..5e731d0 100644 --- a/lib/serv.sh +++ b/lib/serv.sh @@ -25,6 +25,10 @@ parse_res() { parse_simple() { (( lines_left -= 1 )) printf '%s\n' "${1:1}" + + if [[ ${redis_cmd[0]} = SELECT && ${1:1} = OK ]]; then + table=${redis_cmd[1]} + fi } parse_int() { diff --git a/redish-cli b/redish-cli index 6b07ff3..0803183 100755 --- a/redish-cli +++ b/redish-cli @@ -28,7 +28,14 @@ fi ### while get_cmd line; do - parse_cmd redis_cmd redis_line "$line" + redis_cmd=( ) + + parse_cmd redis_line "$line" + + if [[ ${redis_cmd[0]} = EXIT ]]; then + exit 0 + fi + redis_send "$redis_line" lines_left=1