Releases: b0bbywan/go-disc-cuer
Release list
v0.4.0 — the refactor
v0.4.0 — the refactor 🧹
go-disc-cuer is a CLI tool and reusable Go package to generate CUE files from audio CDs, with metadata enrichment from GNUDB and MusicBrainz.
This release delivers the internals cleanup promised in v0.3.0: a new injectable Generator API, a testable disc seam, full CI, and a proper release pipeline — with no change to the CLI surface.
✨ Highlights
- New
GeneratorAPI —cue.New(cfg, ...Option).Generate(Options)replaces the old generate variants. Dependencies (drive, metadata source) are now injected per-Generatorinstead of through package-level vars, so the whole flow is testable without hardware or network. - Disc access abstracted behind the
utils.Discinterface, enabling end-to-end tests that driveGeneratefrom a canned TOC (no drive required). - Stampable version —
config.AppVersionis now a var (default"dev") that builds can set via-ldflags -X; library consumers keep overriding it throughNewConfig.
🐛 Fixes
- gnudb: rejoin
TTITLElines wrapped across multiple lines (#9). - musicbrainz: guard
convertReleaseToDiscInfoagainst empty data. - log: trace request URLs and redact the email-bearing
hello=param from GNUDB URLs before logging.
🏗️ Tooling
- Makefile (
deps/build/dist/test/lint/ …) with a git-stamped version. - GitHub Actions: CI running build,
go test -raceandgolangci-linton every push and PR, plus a release workflow that publishes thelinux/amd64artifact on tag push.
🎛️ CLI flags (unchanged)
--overwrite— regenerate the CUE file even if it already exists--musicbrainz <release_id>— force a specific MusicBrainz release for metadata--disc-id <disc_id>— supply a custom disc ID (requires--musicbrainz)--device <device>— override the disc drive (default/dev/sr0)
📦 Install
git clone https://github.com/b0bbywan/go-disc-cuer.git
cd go-disc-cuer
# Debian/Ubuntu
sudo apt install libdiscid0 libdiscid-dev
# Fedora
sudo dnf install libdiscid libdiscid-devel
make build # or: go build -o disc-cuer .A prebuilt disc-cuer-linux-amd64 binary is attached below.
Full changelog: v0.3.0...v0.4.0
v0.4.0-beta.1
What's Changed
- Bump go.uploadedlobster.com/discid from 0.7.0 to 0.9.0 by @dependabot[bot] in #11
- Bump github.com/spf13/viper from 1.19.0 to 1.21.0 by @dependabot[bot] in #12
New Contributors
- @dependabot[bot] made their first contribution in #11
Full Changelog: v0.3.0...v0.4.0-beta.1
v0.3.0 — first stable release
v0.3.0 — first stable release 🎉
go-disc-cuer is a CLI tool and reusable Go package to generate CUE files from audio CDs, with metadata enrichment from GNUDB and MusicBrainz.
⚠️ Heads up: this is not my best code — the internals grew organically and a significant refactor is planned. The public surface (CLI flags,config.NewConfig/NewDefaultConfig) is usable today, but expect package-level churn in a future major version.
✨ Features
- Disc ID calculation via
libdiscid(C binding, no shelling out) — produces both MusicBrainz and GNUDB-compatible disc IDs. - Metadata enrichment from GNUDB and MusicBrainz, with concurrent release + cover fetch.
- Cover art download and cache with status check before overwrite.
- Force / fix mode: point the tool at a specific MusicBrainz release ID to correct or regenerate a broken CUE.
- Flexible configuration via viper — config file, environment variables (
DISC_CUER_*), or CLI flags, in priority order. - Reusable as a library:
config.NewConfig(appName, appVersion, baseCacheFolder)andNewDefaultConfig()let other projects embedgo-disc-cuerwith their own app identity and cache layout.
🎛️ CLI flags
--overwrite— regenerate the CUE file even if it already exists--musicbrainz <release_id>— force a specific MusicBrainz release for metadata--disc-id <disc_id>— supply a custom disc ID (requires--musicbrainz)--device <device>— override the disc drive (default/dev/sr0)
🏗️ Architecture
Split into focused packages: cue/, discinfo/, gnudb/, musicbrainz/, config/, utils/ — each one independently importable. Internals are due for a cleanup pass.
📦 Install
git clone https://github.com/b0bbywan/go-cd-cuer.git
cd go-cd-cuer
# Debian/Ubuntu
sudo apt install libdiscid0 libdiscid-dev
# Fedora
sudo dnf install libdiscid libdiscid-devel
go build -o disc-cuer .Full changelog: https://github.com/b0bbywan/go-cd-cuer/commits/v0.3.0