Files
beets-setup/scripts/unsorted/convert/convert-fresh.sh

57 lines
1.2 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
CONVERTED_LIBRARY="/music/opus-library"
BEETS_VENV="/music/beets/venv"
# Extra args passed directly to beet convert.
# -a = album mode
# -y = yes/noninteractive
CONVERT_ARGS=(-a -y -d "$CONVERTED_LIBRARY")
activated_own_venv=0
cleanup() {
if [[ "$activated_own_venv" == "1" ]]; then
deactivate || true
fi
}
trap cleanup EXIT
die() {
echo "ERROR: $*" >&2
exit 1
}
safe_dest_check() {
local path="$1"
[[ -n "$path" ]] || die "empty converted library path"
[[ "$path" != "/" ]] || die "refusing to delete /"
[[ "$path" == /music/* ]] || die "refusing to delete outside /music: $path"
}
safe_dest_check "$CONVERTED_LIBRARY"
if [[ -z "${VIRTUAL_ENV:-}" ]]; then
[[ -f "$BEETS_VENV/bin/activate" ]] || die "beets venv not found at $BEETS_VENV"
# shellcheck disable=SC1091
source "$BEETS_VENV/bin/activate"
activated_own_venv=1
fi
echo "Hard rebuilding converted library:"
echo "Destination: $CONVERTED_LIBRARY"
echo
mkdir -p "$CONVERTED_LIBRARY"
echo "Deleting existing converted library contents..."
find "$CONVERTED_LIBRARY" -mindepth 1 -maxdepth 1 -exec rm -rf -- {} +
echo
echo "Running beet convert..."
beet convert "${CONVERT_ARGS[@]}"
echo
echo "Hard sync complete."