From 0c60c486c1813150bafaef02c0b1b3ef91459aaa Mon Sep 17 00:00:00 2001 From: pvincent Date: Wed, 8 Apr 2026 22:39:39 +0400 Subject: [PATCH] refactored miaou-exec --- tools/miaou-exec | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/tools/miaou-exec b/tools/miaou-exec index 4fa11a4..cb66507 100755 --- a/tools/miaou-exec +++ b/tools/miaou-exec @@ -4,7 +4,7 @@ BASEDIR=$(dirname "$0") CONTAINER='' -COMMAND='' +COMMAND_LINE=() # FUNCTIONS @@ -25,30 +25,32 @@ function parse_options { usage && exit 0 ;; --) - # don't care with -- + shift 1 + COMMAND_LINE+=("$@") + break ;; *) - if [[ -z $CONTAINER ]]; then + if [[ $1 =~ ^- ]]; then + # options if any + echo >&2 "Unknown option: $1" && usage && exit 2 + elif [[ -z $CONTAINER ]]; then CONTAINER=$1 - elif [[ -z $COMMAND ]]; then - # FIXME: quite tricky - COMMAND=("$@") - for i in "${!COMMAND[@]}"; do - local value=${COMMAND[$i]} - [[ $value == *" "* ]] && COMMAND[$i]="'$value'" || true # add quote when space detected! - done - break + else + COMMAND_LINE+=("$1") fi ;; esac shift 1 done - [[ -n $CONTAINER ]] || [[ -n $COMMAND ]] || (usage && exit 1) + # echo "CONTAINER=$CONTAINER" + # echo "COMMAND_LINE=(${COMMAND_LINE[@]})" + + ([[ -z $CONTAINER ]] || [[ ${#COMMAND_LINE[@]} == 0 ]]) && usage && exit 1 || true } function exec { - eval "incus exec $CONTAINER -- ${COMMAND[@]}" + incus exec "$CONTAINER" -- "${COMMAND_LINE[@]}" } # MAIN