370 lines
13 KiB
Bash
370 lines
13 KiB
Bash
# The code below is used together with `scripts/build.sh`to internalize the awk
|
|
# scripts. See the awk sources for more information.
|
|
|
|
if [ ! "${AWK_LOADED:-}" ]; then
|
|
AWK_ARTISTS=$(
|
|
cat <<'EOF'
|
|
@@include awk/artists.awk
|
|
EOF
|
|
)
|
|
export AWK_ARTISTS
|
|
|
|
AWK_RELEASES=$(
|
|
cat <<'EOF'
|
|
@@include awk/releases.awk
|
|
EOF
|
|
)
|
|
export AWK_RELEASES
|
|
|
|
AWK_RELEASEGROUPS=$(
|
|
cat <<'EOF'
|
|
@@include awk/releasegroups.awk
|
|
EOF
|
|
)
|
|
export AWK_RELEASEGROUPS
|
|
|
|
AWK_RECORDINGS=$(
|
|
cat <<'EOF'
|
|
@@include awk/recordings.awk
|
|
EOF
|
|
)
|
|
export AWK_RECORDINGS
|
|
|
|
AWK_PREVIEW_ARTIST=$(
|
|
cat <<'EOF'
|
|
@@include awk/preview_artist.awk
|
|
EOF
|
|
)
|
|
export AWK_PREVIEW_ARTIST
|
|
|
|
export AWK_LOADED=1
|
|
fi
|
|
|
|
# Themed awk script to generate list of artists
|
|
#
|
|
# @argument $1: Sort specification (may be one of SORT_NO, SORT_NAME,
|
|
# SORT_SORTNAME)
|
|
awk_artists() {
|
|
case "${1:-}" in
|
|
"$SORT_ARTIST" | "$SORT_ARTIST_SORTNAME") s="$SORT_ALPHA" ;;
|
|
*) s="$SORT_NO" ;;
|
|
esac
|
|
cat |
|
|
awk \
|
|
-F "\t" \
|
|
-v sortby="${1:-}" \
|
|
-v flagfile="${LOCALDATA_ARTISTS:-}" \
|
|
-v format="$AV_FMT" \
|
|
-v flag_local="$AV_FMT_FLAG_LOCAL" \
|
|
-v flag_nolocal="$AV_FMT_FLAG_NO_LOCAL" \
|
|
-v type_person="$AV_FMT_TYPE_PERSON" \
|
|
-v type_group="$AV_FMT_TYPE_GROUP" \
|
|
-v fmtname="$AV_FMT_NAME" \
|
|
-v fmtdisambiguation="$AV_FMT_DISAMBIGUATION" \
|
|
"$AWK_ARTISTS" |
|
|
column -t -s "$(printf '\t')" -R "$AV_FMT_RIGHTALIGN" -l "$AV_FMT_CNT" |
|
|
sort_list "$s"
|
|
}
|
|
|
|
# Themed awk script to generate artist header
|
|
awk_artist_header() {
|
|
cat |
|
|
awk \
|
|
-F "\t" \
|
|
-v flagfile="${LOCALDATA_ARTISTS:-}" \
|
|
-v format="$HEADER_ARTIST_FMT" \
|
|
-v flag_local="$HEADER_ARTIST_FMT_FLAG_LOCAL" \
|
|
-v flag_nolocal="$HEADER_ARTIST_FMT_FLAG_NO_LOCAL" \
|
|
-v type_person="$HEADER_ARTIST_FMT_TYPE_PERSON" \
|
|
-v type_group="$HEADER_ARTIST_FMT_TYPE_GROUP" \
|
|
-v fmtname="$HEADER_ARTIST_FMT_NAME" \
|
|
-v fmtdisambiguation="$HEADER_ARTIST_FMT_DISAMBIGUATION" \
|
|
"$AWK_ARTISTS" |
|
|
column -t -s "$(printf '\t')" -R "$HEADER_ARTIST_FMT_RIGHTALIGN" -l "$HEADER_ARTIST_FMT_CNT" |
|
|
cut -d "$(printf '\t')" -f 1
|
|
}
|
|
|
|
# Themed awk script to generate list of release groups
|
|
#
|
|
# @argument $1: Sort specification (may be one of SORT_NO, SORT_RG_TITLE,
|
|
# SORT_RG_YEAR)
|
|
# @argument $2: MusicBrainz artist ID (optional)
|
|
# @argument $3: Artist credit name (optional)
|
|
awk_releasegroups() {
|
|
case "${1:-}" in
|
|
"$SORT_RG_TITLE") s="$SORT_ALPHA" ;;
|
|
"$SORT_RG_YEAR") s="$SORT_NUMERIC" ;;
|
|
*) s="$SORT_NO" ;;
|
|
esac
|
|
cat |
|
|
awk \
|
|
-F "\t" \
|
|
-v sortby="${1:-}" \
|
|
-v artistid="${2:-}" \
|
|
-v origartist="${3:-}" \
|
|
-v flagfile="${LOCALDATA_RELEASEGROUPS:-}" \
|
|
-v format="$RGV_FMT" \
|
|
-v flag_local="$RGV_FMT_FLAG_LOCAL" \
|
|
-v flag_nolocal="$RGV_FMT_FLAG_NO_LOCAL" \
|
|
-v type_single="$RGV_FMT_TYPE_SINGLE" \
|
|
-v type_album="$RGV_FMT_TYPE_ALBUM" \
|
|
-v type_ep="$RGV_FMT_TYPE_EP" \
|
|
-v type_broadcast="$RGV_FMT_TYPE_BROADCAST" \
|
|
-v type_other="$RGV_FMT_TYPE_OTHER" \
|
|
-v type_unknown="$RGV_FMT_TYPE_UNKNOWN" \
|
|
-v hassecondary_yes="$RGV_FMT_HASSECONDARY_YES" \
|
|
-v hassecondary_no="$RGV_FMT_HASSECONDARY_NO" \
|
|
-v fmtsecondary="$RGV_FMT_SECONDARY" \
|
|
-v secondary_soundtrack="$RGV_FMT_SECONDARY_SOUNDTRACK" \
|
|
-v secondary_spokenword="$RGV_FMT_SECONDARY_SPOKENWORD" \
|
|
-v secondary_interview="$RGV_FMT_SECONDARY_INTERVIEW" \
|
|
-v secondary_audiobook="$RGV_FMT_SECONDARY_AUDIOBOOK" \
|
|
-v secondary_audiodrama="$RGV_FMT_SECONDARY_AUDIODRAMA" \
|
|
-v secondary_live="$RGV_FMT_SECONDARY_LIVE" \
|
|
-v secondary_remix="$RGV_FMT_SECONDARY_REMIX" \
|
|
-v secondary_djmix="$RGV_FMT_SECONDARY_DJMIX" \
|
|
-v secondary_mixtape="$RGV_FMT_SECONDARY_MIXTAPE" \
|
|
-v secondary_demo="$RGV_FMT_SECONDARY_DEMO" \
|
|
-v secondary_fieldrec="$RGV_FMT_SECONDARY_FIELDREC" \
|
|
-v fmttitle="$RGV_FMT_TITLE" \
|
|
-v fmtartist="$RGV_FMT_ARTIST" \
|
|
-v fmtyear="$RGV_FMT_YEAR" \
|
|
"$AWK_RELEASEGROUPS" |
|
|
column -t -s "$(printf '\t')" -R "$RGV_FMT_RIGHTALIGN" -l "$RGV_FMT_CNT" |
|
|
sort_list "$s"
|
|
}
|
|
|
|
# Themed awk script to generate release-group header
|
|
awk_releasegroup_header() {
|
|
cat |
|
|
awk \
|
|
-F "\t" \
|
|
-v flagfile="${LOCALDATA_RELEASEGROUPS:-}" \
|
|
-v format="$HEADER_RG_FMT" \
|
|
-v flag_local="$HEADER_RG_FMT_FLAG_LOCAL" \
|
|
-v flag_nolocal="$HEADER_RG_FMT_FLAG_NO_LOCAL" \
|
|
-v type_single="$HEADER_RG_FMT_TYPE_SINGLE" \
|
|
-v type_album="$HEADER_RG_FMT_TYPE_ALBUM" \
|
|
-v type_ep="$HEADER_RG_FMT_TYPE_EP" \
|
|
-v type_broadcast="$HEADER_RG_FMT_TYPE_BROADCAST" \
|
|
-v type_other="$HEADER_RG_FMT_TYPE_OTHER" \
|
|
-v type_unknown="$HEADER_RG_FMT_TYPE_UNKNOWN" \
|
|
-v hassecondary_yes="$HEADER_RG_FMT_HASSECONDARY_YES" \
|
|
-v hassecondary_no="$HEADER_RG_FMT_HASSECONDARY_NO" \
|
|
-v fmtsecondary="$HEADER_RG_FMT_SECONDARY" \
|
|
-v secondary_soundtrack="$HEADER_RG_FMT_SECONDARY_SOUNDTRACK" \
|
|
-v secondary_spokenword="$HEADER_RG_FMT_SECONDARY_SPOKENWORD" \
|
|
-v secondary_interview="$HEADER_RG_FMT_SECONDARY_INTERVIEW" \
|
|
-v secondary_audiobook="$HEADER_RG_FMT_SECONDARY_AUDIOBOOK" \
|
|
-v secondary_audiodrama="$HEADER_RG_FMT_SECONDARY_AUDIODRAMA" \
|
|
-v secondary_live="$HEADER_RG_FMT_SECONDARY_LIVE" \
|
|
-v secondary_remix="$HEADER_RG_FMT_SECONDARY_REMIX" \
|
|
-v secondary_djmix="$HEADER_RG_FMT_SECONDARY_DJMIX" \
|
|
-v secondary_mixtape="$HEADER_RG_FMT_SECONDARY_MIXTAPE" \
|
|
-v secondary_demo="$HEADER_RG_FMT_SECONDARY_DEMO" \
|
|
-v secondary_fieldrec="$HEADER_RG_FMT_SECONDARY_FIELDREC" \
|
|
-v fmttitle="$HEADER_RG_FMT_TITLE" \
|
|
-v fmtartist="$HEADER_RG_FMT_ARTIST" \
|
|
-v fmtyear="$HEADER_RG_FMT_YEAR" \
|
|
"$AWK_RELEASEGROUPS" |
|
|
column -t -s "$(printf '\t')" -R "$HEADER_RG_FMT_RIGHTALIGN" -l "$HEADER_RG_FMT_CNT" |
|
|
cut -d "$(printf '\t')" -f 1
|
|
}
|
|
|
|
# Themed awk script to generate list of releases
|
|
#
|
|
# @argument $1: MusicBrainz release-group ID (optional)
|
|
# @argument $2: Title of release group (optional)
|
|
# @argument $3: Artist credit name of release group
|
|
awk_releases() {
|
|
cat |
|
|
awk \
|
|
-F "\t" \
|
|
-v releasegroupid="${1:-}" \
|
|
-v origtitle="${2:-}" \
|
|
-v origartist="${3:-}" \
|
|
-v flagfile="${LOCALDATA_RELEASES:-}" \
|
|
-v format="$RV_FMT" \
|
|
-v flag_local="$RV_FMT_FLAG_LOCAL" \
|
|
-v flag_nolocal="$RV_FMT_FLAG_NO_LOCAL" \
|
|
-v status_official="$RV_FMT_STATUS_OFFICIAL" \
|
|
-v status_promo="$RV_FMT_STATUS_PROMO" \
|
|
-v status_bootleg="$RV_FMT_STATUS_BOOTLEG" \
|
|
-v status_pseudo="$RV_FMT_STATUS_PSEUDO" \
|
|
-v status_withdrawn="$RV_FMT_STATUS_WITHDRAWN" \
|
|
-v status_expunged="$RV_FMT_STATUS_EXPUNGED" \
|
|
-v status_cancelled="$RV_FMT_STATUS_CANCELLED" \
|
|
-v status_unknown="$RV_FMT_STATUS_UNKNOWN" \
|
|
-v fmttracks="$RV_FMT_TRACKS" \
|
|
-v fmtmedia="$RV_FMT_MEDIA" \
|
|
-v fmtyear="$RV_FMT_YEAR" \
|
|
-v fmtcountry="$RV_FMT_COUNTRY" \
|
|
-v fmtlabel="$RV_FMT_LABEL" \
|
|
-v fmttitle="$RV_FMT_TITLE" \
|
|
-v fmtartist="$RV_FMT_ARTIST" \
|
|
"$AWK_RELEASES" |
|
|
column -t -s "$(printf '\t')" -R "$RV_FMT_RIGHTALIGN" -l "$RV_FMT_CNT" |
|
|
sort -t "$(printf '\t')" -k 2,2
|
|
}
|
|
|
|
# Themed awk script to generate release header
|
|
awk_release_header() {
|
|
cat |
|
|
awk \
|
|
-F "\t" \
|
|
-v flagfile="${LOCALDATA_RELEASES:-}" \
|
|
-v format="$HEADER_R_FMT" \
|
|
-v flag_local="$HEADER_R_FMT_FLAG_LOCAL" \
|
|
-v flag_nolocal="$HEADER_R_FMT_FLAG_NO_LOCAL" \
|
|
-v status_official="$HEADER_R_FMT_STATUS_OFFICIAL" \
|
|
-v status_promo="$HEADER_R_FMT_STATUS_PROMO" \
|
|
-v status_bootleg="$HEADER_R_FMT_STATUS_BOOTLEG" \
|
|
-v status_pseudo="$HEADER_R_FMT_STATUS_PSEUDO" \
|
|
-v status_withdrawn="$HEADER_R_FMT_STATUS_WITHDRAWN" \
|
|
-v status_expunged="$HEADER_R_FMT_STATUS_EXPUNGED" \
|
|
-v status_cancelled="$HEADER_R_FMT_STATUS_CANCELLED" \
|
|
-v status_unknown="$HEADER_R_FMT_STATUS_UNKNOWN" \
|
|
-v fmttracks="$HEADER_R_FMT_TRACKS" \
|
|
-v fmtmedia="$HEADER_R_FMT_MEDIA" \
|
|
-v fmtyear="$HEADER_R_FMT_YEAR" \
|
|
-v fmtcountry="$HEADER_R_FMT_COUNTRY" \
|
|
-v fmtlabel="$HEADER_R_FMT_LABEL" \
|
|
-v fmttitle="$HEADER_R_FMT_TITLE" \
|
|
-v fmtartist="$HEADER_R_FMT_ARTIST" \
|
|
"$AWK_RELEASES" |
|
|
column -t -s "$(printf '\t')" -R "$HEADER_R_FMT_RIGHTALIGN" -l "$HEADER_R_FMT_CNT" |
|
|
cut -d "$(printf '\t')" -f 1
|
|
}
|
|
|
|
# Themed awk script to generate list of tracks
|
|
#
|
|
# @argument $1: Path to file with MusicBrainz track IDs "tab" decoration file
|
|
# of locally playable audio tracks (optional)
|
|
awk_recordings() {
|
|
cat |
|
|
awk \
|
|
-F "\t" \
|
|
-v flagfile="${1:-}" \
|
|
-v format="$REC_FMT" \
|
|
-v flag_local="$REC_FMT_FLAG_LOCAL" \
|
|
-v flag_nolocal="$REC_FMT_FLAG_NO_LOCAL" \
|
|
-v fmtmedia="$REC_FMT_MEDIA" \
|
|
-v fmtnr="$REC_FMT_NR" \
|
|
-v fmttitle="$REC_FMT_TITLE" \
|
|
-v fmtartist="$REC_FMT_ARTIST" \
|
|
-v fmtduration="$REC_FMT_DURATION" \
|
|
"$AWK_RECORDINGS" |
|
|
column -t -s "$(printf '\t')" -R "$REC_FMT_RIGHTALIGN" -l "$REC_FMT_CNT"
|
|
}
|
|
|
|
# Themed awk script to generate list of tracks for playlist view
|
|
awk_playlist() {
|
|
cat |
|
|
awk \
|
|
-F "\t" \
|
|
-v format="$PLYLST_FMT" \
|
|
-v playing_yes="$PLYLST_FMT_PLAYING_YES" \
|
|
-v playing_no="$PLYLST_FMT_PLAYING_NO" \
|
|
-v fmttitle="$PLYLST_FMT_TITLE" \
|
|
-v fmtartist="$PLYLST_FMT_ARTIST" \
|
|
-v fmtduration="$PLYLST_FMT_DURATION" \
|
|
"$AWK_RECORDINGS" |
|
|
column -t -s "$(printf '\t')" -R "$PLYLST_FMT_RIGHTALIGN" -l "$PLYLST_FMT_CNT"
|
|
}
|
|
|
|
# Themed awk scrtip to preview single-person artist
|
|
#
|
|
# @argument $1: Artist name
|
|
# @argument $2: Artist sort name
|
|
# @argument $3: Artist disambiguation
|
|
# @argument $4: Artist biography
|
|
# @argument $5: Artist aliases
|
|
# @argument $6: Birthdate
|
|
# @argument $7: Birth place
|
|
# @argument $8: Date when died
|
|
# @argument $9: Place where died
|
|
# @argument $10: Artist urls
|
|
awk_preview_artist_person() {
|
|
awk \
|
|
-v name="${1:-}" \
|
|
-v sortname="${2:-}" \
|
|
-v disamb="${3:-}" \
|
|
-v bio="${4:-}" \
|
|
-v alias="${5:-}" \
|
|
-v startdate="${6:-}" \
|
|
-v startplace="${7:-}" \
|
|
-v enddate="${8:-}" \
|
|
-v endplace="${9:-}" \
|
|
-v url="${10:-}" \
|
|
-v format="$PREVIEW_ARTIST_PERSON_FMT" \
|
|
-v fmtname="$PREVIEW_ARTIST_PERSON_NAME" \
|
|
-v fmtsortname="$PREVIEW_ARTIST_PERSON_SORTNAME" \
|
|
-v fmtbio="$PREVIEW_ARTIST_PERSON_BIO" \
|
|
-v fmtdisamb="$PREVIEW_ARTIST_PERSON_DISAMB" \
|
|
-v fmtalias="$PREVIEW_ARTIST_PERSON_ALIAS" \
|
|
-v join_alias="$PREVIEW_ARTIST_PERSON_ALIAS_JOIN" \
|
|
-v format_start="$PREVIEW_ARTIST_PERSON_START_FMT" \
|
|
-v fmtstart="$PREVIEW_ARTIST_PERSON_START" \
|
|
-v fmtstart_startdate="$PREVIEW_ARTIST_PERSON_START_STARTDATE" \
|
|
-v fmtstart_startplace="$PREVIEW_ARTIST_PERSON_START_STARTPLACE" \
|
|
-v format_end="$PREVIEW_ARTIST_PERSON_END_FMT" \
|
|
-v fmtend="$PREVIEW_ARTIST_PERSON_END" \
|
|
-v fmtend_enddate="$PREVIEW_ARTIST_PERSON_END_ENDDATE" \
|
|
-v fmtend_endplace="$PREVIEW_ARTIST_PERSON_END_ENDPLACE" \
|
|
-v fmturl="$PREVIEW_ARTIST_PERSON_URL" \
|
|
-v format_url="$PREVIEW_ARTIST_PERSON_URL_FMT" \
|
|
-v join_url="$PREVIEW_ARTIST_PERSON_URL_JOIN" \
|
|
-v fmturl_urlindex="$PREVIEW_ARTIST_PERSON_URL_URLINDEX" \
|
|
-v fmturl_urlname="$PREVIEW_ARTIST_PERSON_URL_URLNAME" \
|
|
-v fmturl_urllink="$PREVIEW_ARTIST_PERSON_URL_URLLINK" \
|
|
"$AWK_PREVIEW_ARTIST"
|
|
}
|
|
|
|
# Themed awk scrtip to preview artist group
|
|
#
|
|
# @argument $1: Artist name
|
|
# @argument $2: Artist sort name
|
|
# @argument $3: Artist disambiguation
|
|
# @argument $4: Artist biography
|
|
# @argument $5: Artist aliases
|
|
# @argument $6: Founding date
|
|
# @argument $7: Founding place
|
|
# @argument $8: Date when dissolved
|
|
# @argument $9: Place where dissovled
|
|
# @argument $10: Artist urls
|
|
awk_preview_artist_group() {
|
|
awk \
|
|
-v name="${1:-}" \
|
|
-v sortname="${2:-}" \
|
|
-v disamb="${3:-}" \
|
|
-v bio="${4:-}" \
|
|
-v alias="${5:-}" \
|
|
-v startdate="${6:-}" \
|
|
-v startplace="${7:-}" \
|
|
-v enddate="${8:-}" \
|
|
-v endplace="${9:-}" \
|
|
-v url="${10:-}" \
|
|
-v format="$PREVIEW_ARTIST_GROUP_FMT" \
|
|
-v fmtname="$PREVIEW_ARTIST_GROUP_NAME" \
|
|
-v fmtsortname="$PREVIEW_ARTIST_GROUP_SORTNAME" \
|
|
-v fmtbio="$PREVIEW_ARTIST_GROUP_BIO" \
|
|
-v fmtdisamb="$PREVIEW_ARTIST_GROUP_DISAMB" \
|
|
-v fmtalias="$PREVIEW_ARTIST_GROUP_ALIAS" \
|
|
-v join_alias="$PREVIEW_ARTIST_GROUP_ALIAS_JOIN" \
|
|
-v format_start="$PREVIEW_ARTIST_GROUP_START_FMT" \
|
|
-v fmtstart="$PREVIEW_ARTIST_GROUP_START" \
|
|
-v fmtstart_startdate="$PREVIEW_ARTIST_GROUP_START_STARTDATE" \
|
|
-v fmtstart_startplace="$PREVIEW_ARTIST_GROUP_START_STARTPLACE" \
|
|
-v format_end="$PREVIEW_ARTIST_GROUP_END_FMT" \
|
|
-v fmtend="$PREVIEW_ARTIST_GROUP_END" \
|
|
-v fmtend_enddate="$PREVIEW_ARTIST_GROUP_END_ENDDATE" \
|
|
-v fmtend_endplace="$PREVIEW_ARTIST_GROUP_END_ENDPLACE" \
|
|
-v fmturl="$PREVIEW_ARTIST_GROUP_URL" \
|
|
-v format_url="$PREVIEW_ARTIST_GROUP_URL_FMT" \
|
|
-v join_url="$PREVIEW_ARTIST_GROUP_URL_JOIN" \
|
|
-v fmturl_urlindex="$PREVIEW_ARTIST_GROUP_URL_URLINDEX" \
|
|
-v fmturl_urlname="$PREVIEW_ARTIST_GROUP_URL_URLNAME" \
|
|
-v fmturl_urllink="$PREVIEW_ARTIST_GROUP_URL_URLLINK" \
|
|
"$AWK_PREVIEW_ARTIST"
|
|
}
|