89 lines
3.2 KiB
Bash
Executable File
89 lines
3.2 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
#
|
|
# make-fixtures.sh — generate a deterministic music library for E2E tests.
|
|
#
|
|
# Creates 2 FLAC + 2 MP3 files with known tags and embedded cover art under
|
|
# target/e2e/music/. The tags drive the FUSE virtual directory layout, so
|
|
# the directory names below are also the expected mount-point paths.
|
|
#
|
|
set -euo pipefail
|
|
|
|
MUSIC_DIR="${1:-$(pwd)/target/e2e/music}"
|
|
|
|
log() { printf '\033[1;34m[fixtures]\033[0m %s\n' "$*" >&2; }
|
|
die() { printf '\033[1;31m[fixtures error]\033[0m %s\n' "$*" >&2; exit 1; }
|
|
|
|
command -v ffmpeg >/dev/null || die "ffmpeg not found (run inside devenv shell)"
|
|
command -v metaflac >/dev/null || die "metaflac not found (run inside devenv shell)"
|
|
|
|
rm -rf "$MUSIC_DIR"
|
|
mkdir -p "$MUSIC_DIR"
|
|
|
|
# ── cover art ──────────────────────────────────────────────────────────
|
|
COVER="$MUSIC_DIR/.cover.png"
|
|
COVER2="$MUSIC_DIR/.cover2.png"
|
|
ffmpeg -hide_banner -loglevel error -y \
|
|
-f lavfi -i "color=c=0x884422:s=200x200:d=0.04" -frames:v 1 "$COVER"
|
|
ffmpeg -hide_banner -loglevel error -y \
|
|
-f lavfi -i "color=c=0x224488:s=200x200:d=0.04" -frames:v 1 "$COVER2"
|
|
|
|
# ── FLAC: E2E Artist A / E2E Album X ──────────────────────────────────
|
|
FLAC_DIR="$MUSIC_DIR/E2E Artist A/E2E Album X"
|
|
mkdir -p "$FLAC_DIR"
|
|
|
|
log "generating FLAC Alpha …"
|
|
ffmpeg -hide_banner -loglevel error -y \
|
|
-f lavfi -i "sine=frequency=440:duration=3" -c:a flac \
|
|
-metadata title="Alpha" \
|
|
-metadata artist="E2E Artist A" \
|
|
-metadata album_artist="E2E Artist A" \
|
|
-metadata album="E2E Album X" \
|
|
-metadata tracknumber=1 \
|
|
-metadata date=2024 \
|
|
"$FLAC_DIR/01 - Alpha.flac"
|
|
metaflac --import-picture-from="3||||$COVER" "$FLAC_DIR/01 - Alpha.flac"
|
|
|
|
log "generating FLAC Beta …"
|
|
ffmpeg -hide_banner -loglevel error -y \
|
|
-f lavfi -i "sine=frequency=330:duration=3" -c:a flac \
|
|
-metadata title="Beta" \
|
|
-metadata artist="E2E Artist A" \
|
|
-metadata album_artist="E2E Artist A" \
|
|
-metadata album="E2E Album X" \
|
|
-metadata tracknumber=2 \
|
|
-metadata date=2024 \
|
|
"$FLAC_DIR/02 - Beta.flac"
|
|
|
|
# ── MP3: E2E Artist B / E2E Album Y ───────────────────────────────────
|
|
MP3_DIR="$MUSIC_DIR/E2E Artist B/E2E Album Y"
|
|
mkdir -p "$MP3_DIR"
|
|
|
|
log "generating MP3 Gamma …"
|
|
ffmpeg -hide_banner -loglevel error -y \
|
|
-f lavfi -i "sine=frequency=392:duration=3" -i "$COVER2" \
|
|
-c:a libmp3lame -q:a 4 -id3v2_version 3 \
|
|
-metadata title="Gamma" \
|
|
-metadata artist="E2E Artist B" \
|
|
-metadata album_artist="E2E Artist B" \
|
|
-metadata album="E2E Album Y" \
|
|
-metadata tracknumber=1 \
|
|
-metadata date=2023 \
|
|
-map 0:a -map 1:v -disposition:v attached_pic \
|
|
"$MP3_DIR/01 - Gamma.mp3"
|
|
|
|
log "generating MP3 Delta …"
|
|
ffmpeg -hide_banner -loglevel error -y \
|
|
-f lavfi -i "sine=frequency=294:duration=3" \
|
|
-c:a libmp3lame -q:a 4 -id3v2_version 3 \
|
|
-metadata title="Delta" \
|
|
-metadata artist="E2E Artist B" \
|
|
-metadata album_artist="E2E Artist B" \
|
|
-metadata album="E2E Album Y" \
|
|
-metadata tracknumber=2 \
|
|
-metadata date=2023 \
|
|
"$MP3_DIR/02 - Delta.mp3"
|
|
|
|
rm -f "$COVER" "$COVER2"
|
|
|
|
log "done — 4 files under $MUSIC_DIR"
|