#!/usr/bin/env bash set -euo pipefail shopt -s dotglob IFS=$'\n\t' VERSION=2.0.1 VERBOSE=0 RECURSIVE=0 NOACTION=0 SYNC=1 FLAC_LEVEL=5 # Default FLAC compression level SELF="$(readlink -f "$0")" OPTS=$(getopt -o 012345678hnrsvV \ -l best,fast,help,no-action,no-sync,recursive,verbose,version \ -n reflac -- "$@") TMPDIR="$(mktemp --tmpdir -d reflac.XXXXXXXXXX)" eval set -- "$OPTS" trap "exit 1" INT cleanup() { rmdir "$TMPDIR" exit "$1" } usage() { cat <&2; cleanup 1 ;; esac done if [ -z "$*" ]; then usage fi if [ $VERBOSE -eq 0 ] && [ $NOACTION -eq 1 ]; then cleanup 0 fi for dir; do REFLAC_OPTS="${FLAC_LEVEL}" if [ $SYNC -eq 0 ]; then REFLAC_OPTS="${REFLAC_OPTS}s" fi if [ $RECURSIVE -eq 1 ] && [ $NOACTION -eq 1 ]; then find "$(readlink -f -- "$dir")" -type d -execdir "$SELF" -nv {} \; elif [ $RECURSIVE -eq 1 ]; then if [ $VERBOSE -eq 1 ]; then find "$(readlink -f -- "$dir")" -type d \ -execdir "$SELF" -v"$REFLAC_OPTS" {} \; elif [ $VERBOSE -ge 2 ]; then find "$(readlink -f -- "$dir")" -type d \ -execdir "$SELF" -vv"$REFLAC_OPTS" {} \; else find "$(readlink -f -- "$dir")" -type d \ -execdir "$SELF" -"$REFLAC_OPTS" {} \; fi else pushd -- "$dir" >/dev/null || cleanup $? if [ $VERBOSE -gt 0 ]; then readlink -f .; fi if [ -n "$(ls -- *.flac 2>/dev/null)" ]; then recompress fi popd >/dev/null fi done rmdir "$TMPDIR"