49 lines
1 KiB
Bash
Executable file
49 lines
1 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
REPO_ROOT="$(cd "$(dirname "$0")/.." && pwd)"
|
|
MANIFEST="${MANIFEST:-$REPO_ROOT/content/audio.yaml}"
|
|
OUT="${OUT:-$REPO_ROOT/web/src/lib/artists.json}"
|
|
|
|
for tool in yq jq; do
|
|
if ! command -v "$tool" >/dev/null; then
|
|
echo "error: $tool not in PATH (try: nix develop)" >&2
|
|
exit 1
|
|
fi
|
|
done
|
|
|
|
yq -o=json '.' "$MANIFEST" | jq '
|
|
def render_artist:
|
|
. as $a |
|
|
{
|
|
id: $a.id,
|
|
name: $a.name,
|
|
slug: $a.slug,
|
|
description: ($a.description // "" | rtrimstr("\n")),
|
|
images: [
|
|
($a.images // []) | to_entries[] |
|
|
("/images/" + $a.slug + "-" + ((.key + 1) | tostring) + ".webp")
|
|
],
|
|
shows: [
|
|
$a.shows[] | . as $s | {
|
|
caption: $s.caption,
|
|
slug: $s.slug,
|
|
sides: [
|
|
$s.sides[] | {
|
|
id: .id,
|
|
label: .label,
|
|
audio: ("/audio/" + $a.slug + "-" + $s.slug + "-" + .id + ".opus")
|
|
}
|
|
]
|
|
}
|
|
]
|
|
};
|
|
|
|
{
|
|
exhibit: .exhibit,
|
|
artists: [ .artists[] | render_artist ]
|
|
}
|
|
' > "$OUT.tmp"
|
|
|
|
mv "$OUT.tmp" "$OUT"
|
|
echo "wrote $OUT ($(jq '.artists | length' "$OUT") artists)"
|