From fd03743340447b7dee990877019277742b36a0f0 Mon Sep 17 00:00:00 2001 From: pvincent Date: Mon, 24 Aug 2026 12:09:07 +0400 Subject: [PATCH] miaou-exec can call miaou-bash --- tools/miaou-exec | 59 +++++++++++++++++++++++++++++------------------- 1 file changed, 36 insertions(+), 23 deletions(-) diff --git a/tools/miaou-exec b/tools/miaou-exec index d41ccef..e491342 100755 --- a/tools/miaou-exec +++ b/tools/miaou-exec @@ -2,52 +2,65 @@ # CONSTANTS -BASEDIR=$(dirname "$0") -CONTAINER= -COMMAND_LINE=() - # FUNCTIONS function usage { + local basename + basename=$(basename "$0") echo Usage: - echo -e "\t$(basename "$0") [--] " + echo -e "\t$basename [--] " + echo -e "\t(PIPE or HEREDOC are allowed too)" echo echo "Examples:" - echo -e "\t$(basename "$0") container1 uptime" - echo -e "\t$(basename "$0") container1 -- ls -la" - echo -e "\t$(basename "$0") container1 -- bash <&2 "Unknown option: $1" && usage && exit 2 - ;; + -*) echo >&2 "Unknown option: $1" && usage && exit 2 ;; *) - [[ -z $CONTAINER ]] && CONTAINER=$1 || COMMAND_LINE+=("$1") + if [[ ! -v CONTAINER ]]; then + CONTAINER=$1 + else + COMMAND_LINE+=("$1") + fi ;; esac - shift 1 + shift done + [[ ! -v CONTAINER ]] && usage && exit 1 + if [[ -t 0 ]]; then + ((${#COMMAND_LINE[@]} == 0)) && usage && exit 2 + else + HEREDOC=true + fi - # echo "CONTAINER=$CONTAINER" - # echo "COMMAND_LINE=(${COMMAND_LINE[@]})" - - ([[ -z $CONTAINER ]] || [[ ${#COMMAND_LINE[@]} == 0 ]]) && usage && exit 1 || true } function exec { - incus exec "$CONTAINER" -- "${COMMAND_LINE[@]}" + if [[ -v HEREDOC ]]; then + # TODO: test whether miaou-bash mounted within container + script="miaou-bash <