57 lines
1.2 KiB
Bash
Executable File
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."
|