From f0b82e5caa0666bcb7c7d4d1ee418a87c610b04c Mon Sep 17 00:00:00 2001 From: pvincent Date: Sun, 22 Mar 2026 11:07:08 +0400 Subject: [PATCH] miaou-pull --- tools/miaou-pull | 58 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100755 tools/miaou-pull diff --git a/tools/miaou-pull b/tools/miaou-pull new file mode 100755 index 0000000..56a1e6b --- /dev/null +++ b/tools/miaou-pull @@ -0,0 +1,58 @@ +#!/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 pull { + local vmid=$($BASEDIR/../bin/pct-lookup "$CONTAINER") + pct pull $vmid "$SOURCE_FILE" "$DESTINATION_FOLDER/$(basename $SOURCE_FILE)" +} + +function normalize_source_file { + local directory=$(dirname $SOURCE_FILE) + [[ $directory =~ ^\.$ ]] && SOURCE_FILE="/root/$SOURCE_FILE" + + [[ -z $DESTINATION_FOLDER ]] && DESTINATION_FOLDER=. +} + +# MAIN + +set -Eue +parse_options $* +normalize_source_file +pull