shell/mpd/bin/cleanup-music.sh: ask for confirmation

This commit is contained in:
Henrik Lissner 2017-02-28 19:04:35 -05:00
parent e372294911
commit 78b6ced011

View file

@ -4,27 +4,50 @@
# it leaves behind.
set -e
shopt -s nullglob
playlistdir="$(grep playlist_directory $HOME/.config/mpd/mpd.conf | awk '{ print $2; }')"
playlistdir=$(grep playlist_directory "$HOME/.config/mpd/mpd.conf" | awk '{ print $2; }')
playlistdir="${playlistdir//\"/}"
playlistfile="$playlistdir/1-star.m3u"
songs=$(<"$playlistfile")
playlistfile="${playlistdir/#\~/$HOME}/1-star.m3u"
songs=$(cat "$playlistfile")
# Delete designated songs
IFS="
"
for song in ${songs[@]}; do
declare -a to_delete=()
for song in "${songs[@]}"; do
fpath="$HOME/music/$song"
if [[ -f $fpath ]]; then
echo "Deleting: $song"
rm -f "$fpath"
to_delete+=("$fpath")
# echo "Deleting: $song"
# rm -f "$fpath"
fi
done
if (( ${#to_delete[@]} == 0 )); then
echo "Nothing to delete"
exit
fi
printf "Deleting %s songs:\n\n%s\n\nConfirm? (y/n) " \
"${#to_delete[@]}" \
"$(IFS=$'\n'; printf "%s" "${to_delete[*]}")"
read -r confirm
case $confirm in
y|Y)
echo "Deleting..."
for file in ${to_delete[@]}; do
rm -fv "$file"
done
;;
n|N) echo "Aborted"; exit ;;
*) echo "Invalid" ;;
esac
:>"$playlistfile"
# Remove duplicates in playlists
for playlist in "$playlistdir"/*.m3u; do
awk '!seen[$0]++' "$playlist" > "${playlist}.tmp"
awk '!seen[$0]++' "${playlist}" > "${playlist}.tmp"
if [[ -f "${playlist}.tmp" ]]; then
rm -f "$playlist"
mv "${playlist}.tmp" "$playlist"