#!/usr/bin/env sh

m() { rofi -theme -dmenu -config ~/SudacodeRice/rofi/dracula.rasi -l 24 -i "$@"; }
mb() { rofi -dmenu -config ~/SudacodeRice/rofi/dracula.rasi -l 24 -i -kb-custom-1 "Alt+q" "$@"; }

artist() {
	lines="$(mpc list artist | wc -l)"
	[ "$lines" -gt 30 ] && lines=30
	mpc list artist | sort -f | m -p "Artists" -l $lines
}

a_album() {
	artist="$1"
	lines="$(mpc list album artist "$artist" | wc -l)"
	[ "$lines" -gt 30 ] && lines=30
	mpc list album artist "$artist" | sort -f | mb -p "Albums" -l $lines
}

album() {
	lines="$(mpc list album | wc -l)"
	[ "$lines" -gt 30 ] && lines=30
	mpc list album | sort -f | mb -p "Album" -l $lines
}

song() {
	lines="$(mpc list title | wc -l)"
	[ "$lines" -gt 30 ] && lines=30
	mpc list title | sort -f | mb -p "Song" -l 30
}

case "$1" in
	-l | --library) mode=Library ;;
	-A | --album) mode=Album ;;
	-s | --song) mode=Song ;;
	-a | --ask)
		MODE=$(printf "Library\nAlbum\nSong" | m -p "Choose mode" -l 3)
		mode=$MODE
		;;
	-h | --help)
		echo "
  usage: rofi-mpd [-h] [-l] [-s] [-a]

  arguments:
  -h, --help        show this message and exit
  -l, --library     library mode (artist -> album)
  -A, --album       album mode
  -s, --song        song mode (select one song)
  -a, --ask         ask for mode

  bindings:
  enter             play song/album now
  Alt+q             add song/album to queue
    "
		exit
		;;
esac

case "$mode" in
	Library)
		artist=$(artist)
		[ ! "$artist" ] && exit
		album=$(a_album "$artist")
		cod=$?
		[ ! "$album" ] && exit
		[ "$cod" -eq 10 ] || mpc clear
		mpc find artist "$artist" album "$album" | mpc add
		mpc play > /dev/null
		;;
	Song)
		song=$(song)
		cod=$?
		[ ! "$song" ] && exit
		[ "$cod" -eq 10 ] || mpc clear
		mpc search "(title==\"$song\")" | mpc add
		mpc play > /dev/null
		;;
	Album)
		album=$(album)
		cod=$?
		[ ! "$album" ] && exit
		[ "$cod" -eq 10 ] || mpc clear
		mpc find album "$album" | mpc add
		mpc play > /dev/null
		;;
esac