From a564dcced0cc64983689f126c2d465467c41efb1 Mon Sep 17 00:00:00 2001 From: pvincent Date: Wed, 26 Nov 2025 22:10:17 +0400 Subject: [PATCH] miaou-exec --- tools/miaou-exec | 52 ++++++++++++++++++++++++++++++++++++++++++++++++ tools/miaou-push | 49 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 101 insertions(+) create mode 100755 tools/miaou-exec create mode 100755 tools/miaou-push diff --git a/tools/miaou-exec b/tools/miaou-exec new file mode 100755 index 0000000..ef58dfa --- /dev/null +++ b/tools/miaou-exec @@ -0,0 +1,52 @@ +#!/usr/bin/env bash + +# CONSTANTS + +BASEDIR=$(dirname "$0") +CONTAINER='' +COMMAND='' + +# FUNCTIONS + +function usage { + echo "$(basename "$0") " +} + +function parse_options { + while [[ $# -gt 0 ]]; do + case "$1" in + --help | -h) + usage && exit 0 + ;; + --) + # don't care with -- + ;; + *) + if [[ -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 + fi + ;; + esac + shift 1 + done + + [[ -n $CONTAINER ]] || [[ -n $COMMAND ]] || (usage && exit 1) +} + +function exec { + eval "incus exec $CONTAINER -- ${COMMAND[@]}" +} + +# MAIN + +set -Eue +parse_options "$@" +exec diff --git a/tools/miaou-push b/tools/miaou-push new file mode 100755 index 0000000..c9d873f --- /dev/null +++ b/tools/miaou-push @@ -0,0 +1,49 @@ +#!/usr/bin/env bash + +# CONSTANTS + +BASEDIR=$(dirname "$0") +CONTAINER='' +SOURCE_FILE='' +DESTINATION_FOLDER='' + +# FUNCTIONS + +function usage { + echo "$(basename "$0") " +} + +function parse_options { + while [[ $# -gt 0 ]]; do + case "$1" in + --help | -h) + usage && exit 0 + ;; + *) + if [[ -z $CONTAINER ]]; then + CONTAINER=$1 + elif [[ -z $SOURCE_FILE ]]; then + SOURCE_FILE=$1 + elif [[ -z $DESTINATION_FOLDER ]]; then + DESTINATION_FOLDER=$1 + else + echo >&2 "Unknown option: $1" && usage && exit 2 + fi + ;; + esac + + shift 1 # Move to the next argument + done + + [[ -n $CONTAINER ]] || [[ -n $SOURCE_FILE ]] || [[ -n $DESTINATION_FOLDER ]] || (usage && exit 1) +} + +function copy { + incus file push "$SOURCE_FILE" "$CONTAINER/$DESTINATION_FOLDER" --uid 0 --gid 0 --create-dirs +} + +# MAIN + +set -Eue +parse_options $* +copy