Files
fuzic/src/sh/sort.sh

45 lines
1.2 KiB
Bash

# Sort methods for generated lists
if [ ! "${SORT_LOADED:-}" ]; then
# Sort specifications
#
# - No sort
# - Alphabetic sort
# - Numeric sort
SORT_NO="no-sort"
SORT_ALPHA="sort-alpha"
SORT_NUMERIC="sort-numeric"
# Artists may be sorted according to the name or the sort-name taken from
# MusicBrainz
SORT_ARTIST="sort-artist"
SORT_ARTIST_SORTNAME="sort-artist-sortname"
# Release-groups may be sorted according to the release year or the title
SORT_RG_TITLE="sort-rg-title"
SORT_RG_YEAR="sort-rg-year"
export SORT_NO SORT_ALPHA SORT_NUMERIC SORT_ARTIST SORT_ARTIST_SORTNAME \
SORT_RG_TITLE SORT_RG_YEAR
# Configurable default sort
SORT_ARTIST_DEFAULT="${SORT_ARTIST_DEFAULT:-"$SORT_ARTIST"}"
SORT_RG_DEFAULT="${SORT_RG_DEFAULT:-"$SORT_RG_YEAR"}"
export SORT_ARTIST_DEFAULT SORT_RG_DEFAULT
export SORT_LOADED=1
fi
# Sorting switches
#
# @argument $1: Sort specification (may be one of SORT_NO, SORT_ALPHA,
# SORT_NUMERIC)
#
# This method sorts the stream read from stdin.
sort_list() {
case "${1:-}" in
"$SORT_ALPHA") cat | sort -t "$(printf '\t')" -k 2,2 ;;
"$SORT_NUMERIC") cat | sort -t "$(printf '\t')" -k 2,2 -n ;;
*) cat ;;
esac
}