From 37b1071a952ce6541bcac00f2acec0f085aa49ea Mon Sep 17 00:00:00 2001 From: pvincent Date: Mon, 24 Aug 2026 12:25:00 +0400 Subject: [PATCH] fixed miaou-create template --- tools/miaou-create | 51 +++++++++++++++++++--------------------------- 1 file changed, 21 insertions(+), 30 deletions(-) diff --git a/tools/miaou-create b/tools/miaou-create index dc760bf..d3da6ff 100755 --- a/tools/miaou-create +++ b/tools/miaou-create @@ -2,15 +2,11 @@ # CONSTANTS -BASEDIR=$(dirname "$0") MIAOU_IMAGE=images:debian/13 -APT_ARCHIVES=/var/cache/apt/archives PROJECT_SANDBOX=sandbox TEMPLATE_SANDBOX=miaou-debian13-template -TEMPLATE_REFRESH_DELAY="7 days" - +TEMPLATE_REFRESH_DELAY='7 days' BARE_MINIMAL=false -CONTAINER= # FUNCTIONS @@ -43,51 +39,47 @@ function humanize_ago { function parse_options { while [[ $# -gt 0 ]]; do case "$1" in - --help | -h) - usage && exit 0 - ;; - --bare-minimal) - BARE_MINIMAL=true - ;; + --help | -h) usage && exit 0 ;; + --bare-minimal) BARE_MINIMAL=true ;; *) - if [[ -z $CONTAINER ]]; then + if [[ ! -v CONTAINER ]]; then CONTAINER=$1 else echo >&2 "Unknown option: $1" && usage && exit 2 fi ;; esac - - shift 1 # Move to the next argument + shift done - [[ -n $CONTAINER ]] || (usage && exit 1) + if [[ ! -v CONTAINER ]]; then + usage + exit 1 + fi } function mount_miaou_bash { - printenv MIAOU_BASH_DIR >/dev/null || (echo >&2 "Warn: environment variable MIAOU_BASH_DIR is missing!" && return) - local target="$1" - local optional_project=${2:-} - [[ -n $optional_project ]] && optional_project="--project $optional_project" + local options=() + [[ -v 2 ]] && options+=(--project "$2") - incus $optional_project config device add $target MIAOU-BASH disk source=$MIAOU_BASH_DIR path=/opt/miaou-bash readonly=true | grep -q 'Device MIAOU-BASH added' + incus "${options[@]}" config device add "$target" MIAOU-BASH disk \ + source="$MIAOU_BASH_DIR" path=/opt/miaou-bash readonly=true | + grep -q 'Device MIAOU-BASH added' } function assign_host_zoneinfo { local target="$1" - local optional_project=${2:-} - [[ -n $optional_project ]] && optional_project="--project $optional_project" + local options=() + [ -v 2 ] && options+=(--project "$2") local host_zoneinfo host_zoneinfo=$(realpath /etc/localtime) echo "assign ZONEINFO from host: $host_zoneinfo" - # TODO:optional_project might be an array, "${optional_project[@]}" - incus exec $optional_project "$target" -- bash <<-EOF - ln -fs "$host_zoneinfo" /etc/localtime - dpkg-reconfigure -f noninteractive tzdata + incus exec "${options[@]}" "$target" -- bash <<-EOF +ln -fs "$host_zoneinfo" /etc/localtime +dpkg-reconfigure -f noninteractive tzdata EOF - } function build_sandbox_project { @@ -107,14 +99,13 @@ function refresh_template { cat <