mirror of
				https://github.com/Zygo/bees.git
				synced 2025-11-03 19:50:34 +01:00 
			
		
		
		
	This commit is contained in:
		@@ -15,8 +15,8 @@ UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
 | 
			
		||||
# BEESHOME="$MNT_DIR/.beeshome"
 | 
			
		||||
# BEESSTATUS="$WORK_DIR/$UUID.status"
 | 
			
		||||
 | 
			
		||||
## Default options to apply, see --help for details
 | 
			
		||||
# OPTIONS="--relative-paths --notimestamps"
 | 
			
		||||
## Options to apply, see `beesd --help` for details
 | 
			
		||||
# OPTIONS="--strip-paths --no-timestamps"
 | 
			
		||||
 | 
			
		||||
## Bees DB size
 | 
			
		||||
# Hash Table Sizing
 | 
			
		||||
 
 | 
			
		||||
@@ -14,50 +14,82 @@ export UUID AL16M
 | 
			
		||||
readonly AL16M="$((16*1024*1024))"
 | 
			
		||||
readonly CONFIG_DIR=@ETC_PREFIX@/bees/
 | 
			
		||||
 | 
			
		||||
## Pre checks
 | 
			
		||||
{
 | 
			
		||||
    [ ! -d "$CONFIG_DIR" ] && ERRO "Missing: $CONFIG_DIR"
 | 
			
		||||
    [ "$UID" == "0" ] || ERRO "Must be run as root"
 | 
			
		||||
readonly bees_bin=$(realpath @LIBEXEC_PREFIX@/bees)
 | 
			
		||||
 | 
			
		||||
command -v "$bees_bin" &> /dev/null || ERRO "Missing 'bees' agent"
 | 
			
		||||
 | 
			
		||||
uuid_valid(){
 | 
			
		||||
    if uuidparse -n -o VARIANT $1 | grep -i -q invalid; then
 | 
			
		||||
        false
 | 
			
		||||
    fi
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
command -v @LIBEXEC_PREFIX@/bees &> /dev/null || ERRO "Missing 'bees' agent"
 | 
			
		||||
help(){
 | 
			
		||||
    echo "Usage: beesd [options] <btrfs_uuid>"
 | 
			
		||||
    echo "- - -"
 | 
			
		||||
    exec "$bees_bin" --help
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
## Parse args
 | 
			
		||||
get_bees_supp_opts(){
 | 
			
		||||
    "$bees_bin" --help |& awk '/--../ { gsub( ",", "" ); print $1 " " $2}'
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
SUPPORTED_ARGS=(
 | 
			
		||||
    $(get_bees_supp_opts)
 | 
			
		||||
)
 | 
			
		||||
NOT_SUPPORTED_ARGS=()
 | 
			
		||||
ARGUMENTS=()
 | 
			
		||||
while [ $# -gt 0 ]; do
 | 
			
		||||
    case "$1" in
 | 
			
		||||
        -*)
 | 
			
		||||
            ARGUMENTS+=($1)
 | 
			
		||||
        ;;
 | 
			
		||||
        *)
 | 
			
		||||
            if [ -z "$UUID" ]; then
 | 
			
		||||
                UUID="$1"
 | 
			
		||||
            else
 | 
			
		||||
                ERRO "Only one filesystem may be supplied"
 | 
			
		||||
 | 
			
		||||
for arg in "${@}"; do
 | 
			
		||||
    supp=false
 | 
			
		||||
    for supp_arg in "${SUPPORTED_ARGS[@]}"; do
 | 
			
		||||
        if [ "$arg" == "$supp_arg" ]; then
 | 
			
		||||
            supp=true
 | 
			
		||||
            break
 | 
			
		||||
        fi
 | 
			
		||||
    done
 | 
			
		||||
    if $supp; then
 | 
			
		||||
        ARGUMENTS+=($arg)
 | 
			
		||||
    else
 | 
			
		||||
        NOT_SUPPORTED_ARGS+=($arg)
 | 
			
		||||
    fi
 | 
			
		||||
        ;;
 | 
			
		||||
    esac
 | 
			
		||||
    shift
 | 
			
		||||
done
 | 
			
		||||
 | 
			
		||||
case "$UUID" in
 | 
			
		||||
    *-*-*-*-*)
 | 
			
		||||
for arg in "${ARGUMENTS[@]}"; do
 | 
			
		||||
    case $arg in
 | 
			
		||||
        -h) help;;
 | 
			
		||||
        --help) help;;
 | 
			
		||||
    esac
 | 
			
		||||
done
 | 
			
		||||
 | 
			
		||||
for arg in "${NOT_SUPPORTED_ARGS[@]}"; do
 | 
			
		||||
    if uuid_valid $arg; then
 | 
			
		||||
        [ ! -z "$UUID" ] && help
 | 
			
		||||
        UUID=$arg
 | 
			
		||||
    fi
 | 
			
		||||
done
 | 
			
		||||
 | 
			
		||||
[ -z "$UUID" ] && help
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FILE_CONFIG=""
 | 
			
		||||
for file in "$CONFIG_DIR"/*.conf; do
 | 
			
		||||
    [ ! -f "$file" ] && continue
 | 
			
		||||
            if grep -q "$UUID" "$file"; then
 | 
			
		||||
        if grep -q 'UUID=' "$file" | grep -q -- "$UUID"; then
 | 
			
		||||
            INFO "Find $UUID in $file, use as conf"
 | 
			
		||||
            FILE_CONFIG="$file"
 | 
			
		||||
        fi
 | 
			
		||||
done
 | 
			
		||||
[ ! -f "$FILE_CONFIG" ] && ERRO "No config for $UUID"
 | 
			
		||||
source "$FILE_CONFIG"
 | 
			
		||||
    ;;
 | 
			
		||||
    *)
 | 
			
		||||
        echo "beesd [options] <btrfs_uuid>"
 | 
			
		||||
        exit 1
 | 
			
		||||
    ;;
 | 
			
		||||
esac
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
## Pre checks
 | 
			
		||||
{
 | 
			
		||||
    [ ! -d "$CONFIG_DIR" ] && ERRO "Missing: $CONFIG_DIR"
 | 
			
		||||
    [ "$UID" == "0" ] || ERRO "Must be run as root"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
WORK_DIR="${WORK_DIR:-/run/bees/}"
 | 
			
		||||
MNT_DIR="${MNT_DIR:-$WORK_DIR/mnt/$UUID}"
 | 
			
		||||
@@ -113,7 +145,7 @@ fi
 | 
			
		||||
    chmod 700 "$DB_PATH"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
MNT_DIR="${MNT_DIR//\/\//\/}"
 | 
			
		||||
MNT_DIR="$(realpath $MNT_DIR)"
 | 
			
		||||
 | 
			
		||||
cd "$MNT_DIR"
 | 
			
		||||
@LIBEXEC_PREFIX@/bees "${ARGUMENTS[@]}" $OPTIONS "$MNT_DIR"
 | 
			
		||||
"$bees_bin" "${ARGUMENTS[@]}" $OPTIONS "$MNT_DIR"
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user