state sep
This commit is contained in:
57
src/main.sh
57
src/main.sh
@@ -44,6 +44,9 @@ set -eu
|
||||
# Load list-generating methods
|
||||
. "sh/lists.sh"
|
||||
|
||||
# State management
|
||||
. "sh/state.sh"
|
||||
|
||||
# FZF handlers
|
||||
. "sh/fzf.sh"
|
||||
|
||||
@@ -133,10 +136,16 @@ tmpdir=$(mktemp -d)
|
||||
LOCKFILE="$tmpdir/lock"
|
||||
RESULTS="$tmpdir/results"
|
||||
PIDFILE="$tmpdir/pid"
|
||||
STATEFILE="$tmpdir/state"
|
||||
ARGSFILE="$tmpdir/state-args"
|
||||
trap 'rm -rf "$tmpdir"' EXIT INT
|
||||
export LOCKFILE RESULTS PIDFILE STATEFILE ARGSFILE
|
||||
export LOCKFILE RESULTS PIDFILE
|
||||
|
||||
statedir=$(mktemp -d)
|
||||
STATEFILE="$statedir/state"
|
||||
ARGSFILE="$statedir/state-args"
|
||||
STATEFILE_LAST="$statedir/state2"
|
||||
ARGSFILE_LAST="$statedir/state-args2"
|
||||
touch "$STATEFILE" "$ARGSFILE" "$STATEFILE_LAST" "$ARGSFILE_LAST"
|
||||
export STATEFILE ARGSFILE STATEFILE_LAST ARGSFILE_LAST
|
||||
|
||||
if [ "${1:-}" = "--ni-search-artist" ]; then
|
||||
$0 --internal-search "artist" "$2"
|
||||
@@ -167,35 +176,20 @@ export VIEW_ARTIST VIEW_RELEASEGROUP VIEW_RELEASE VIEW_SEARCH_ARTIST \
|
||||
case "${1:-}" in
|
||||
"--artist")
|
||||
[ ! "${2:-}" ] && err "MusicBrainz Artist ID not specified (see --help)" && exit 1
|
||||
printf "%s#%s" "$VIEW_ARTIST" "$MODE_NORMAL" >"$STATEFILE"
|
||||
printf "%s" "$2" >"$ARGSFILE"
|
||||
state_init "$VIEW_ARTIST" "$MODE_NORMAL" "$2"
|
||||
;;
|
||||
"--releasegroup")
|
||||
[ ! "${2:-}" ] && err "MusicBrainz Release-Group ID not specified (see --help)" && exit 1
|
||||
printf "%s#%s" "$VIEW_RELEASEGROUP" "$MODE_NORMAL" >"$STATEFILE"
|
||||
printf "%s" "$2" >"$ARGSFILE"
|
||||
state_init "$VIEW_RELEASEGROUP" "$MODE_NORMAL" "$2"
|
||||
;;
|
||||
"--release")
|
||||
[ ! "${2:-}" ] && err "MusicBrainz Release ID not specified (see --help)" && exit 1
|
||||
printf "%s#%s" "$VIEW_RELEASE" "$MODE_NORMAL" >"$STATEFILE"
|
||||
printf "%s" "$2" >"$ARGSFILE"
|
||||
;;
|
||||
"--search-artist")
|
||||
printf "%s#%s" "$VIEW_SEARCH_ARTIST" "$MODE_INSERT" >"$STATEFILE"
|
||||
printf "%s" "${2:-}" >"$ARGSFILE"
|
||||
;;
|
||||
"--search-album")
|
||||
printf "%s#%s" "$VIEW_SEARCH_ALBUM" "$MODE_INSERT" >"$STATEFILE"
|
||||
printf "%s" "${2:-}" >"$ARGSFILE"
|
||||
;;
|
||||
"--artists" | "")
|
||||
printf "%s#%s" "$VIEW_LIST_ARTISTS" "$MODE_NORMAL" >"$STATEFILE"
|
||||
printf "%s" "" >"$ARGSFILE"
|
||||
;;
|
||||
"--albums")
|
||||
printf "%s#%s" "$VIEW_LIST_ALBUMS" "$MODE_NORMAL" >"$STATEFILE"
|
||||
printf "%s" "" >"$ARGSFILE"
|
||||
state_init "$VIEW_RELEASE" "$MODE_NORMAL" "$2"
|
||||
;;
|
||||
"--search-artist") state_init "$VIEW_SEARCH_ARTIST" "$MODE_INSERT" "${2:-}" ;;
|
||||
"--search-album") state_init "$VIEW_SEARCH_ALBUM" "$MODE_INSERT" "${2:-}" ;;
|
||||
"--artists" | "") state_init "$VIEW_LIST_ARTISTS" "$MODE_NORMAL" "" ;;
|
||||
"--albums") state_init "$VIEW_LIST_ALBUMS" "$MODE_NORMAL" "" ;;
|
||||
*)
|
||||
err "Unknown option $1 (see --help)"
|
||||
exit 1
|
||||
@@ -207,9 +201,9 @@ mpv_start
|
||||
|
||||
# $KEYS_PLAY main loop
|
||||
while true; do
|
||||
view=$(cut -d "#" -f 1 "$STATEFILE")
|
||||
mode=$(cut -d "#" -f 2 "$STATEFILE")
|
||||
args=$(cat "$ARGSFILE")
|
||||
view=$(state_get_view)
|
||||
mode=$(state_get_mode)
|
||||
args=$(state_get_args)
|
||||
case "$view" in
|
||||
"$VIEW_SELECT_ARTIST")
|
||||
sel=$(
|
||||
@@ -219,7 +213,7 @@ while true; do
|
||||
--bind="$KEYS_HALFPAGE_DOWN,$KEYS_HALFPAGE_UP,\
|
||||
$KEYS_BROWSE,\
|
||||
$KEYS_FILTER_LOCAL:transform:$0 --fzf-key {2} {3} {4}" \
|
||||
-1 \
|
||||
-0 -1 \
|
||||
--border="bold" \
|
||||
--border-label="Select artist" \
|
||||
--delimiter="\t" \
|
||||
@@ -227,10 +221,9 @@ $KEYS_FILTER_LOCAL:transform:$0 --fzf-key {2} {3} {4}" \
|
||||
--margin="5%,20%" \
|
||||
--bind="$KEYS_FILTER_LOCAL:change-query($FORMAT_LOCAL )" \
|
||||
--accept-nth="{3}" \
|
||||
--with-nth="{1}"
|
||||
--with-nth="{1}" || true
|
||||
)
|
||||
printf "%s#%s" "$VIEW_ARTIST" "$mode" >"$STATEFILE"
|
||||
printf "%s" "$sel" >"$ARGSFILE"
|
||||
[ "$sel" ] && state_update "$VIEW_ARTIST" "$mode" "$sel" || state_revert
|
||||
;;
|
||||
"$VIEW_PLAYLIST")
|
||||
list_playlist |
|
||||
|
Reference in New Issue
Block a user