Skip to content

Releases: b0bbywan/go-disc-cuer

v0.4.0 — the refactor

Choose a tag to compare

@github-actions github-actions released this 08 Jul 21:37
8b5967c

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 Generator APIcue.New(cfg, ...Option).Generate(Options) replaces the old generate variants. Dependencies (drive, metadata source) are now injected per-Generator instead of through package-level vars, so the whole flow is testable without hardware or network.
  • Disc access abstracted behind the utils.Disc interface, enabling end-to-end tests that drive Generate from a canned TOC (no drive required).
  • Stampable versionconfig.AppVersion is now a var (default "dev") that builds can set via -ldflags -X; library consumers keep overriding it through NewConfig.

🐛 Fixes

  • gnudb: rejoin TTITLE lines wrapped across multiple lines (#9).
  • musicbrainz: guard convertReleaseToDiscInfo against 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 -race and golangci-lint on every push and PR, plus a release workflow that publishes the linux/amd64 artifact 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

v0.4.0-beta.1 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 25 Jun 17:03

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

Full Changelog: v0.3.0...v0.4.0-beta.1

v0.3.0 — first stable release

Choose a tag to compare

@b0bbywan b0bbywan released this 18 Apr 10:36
6f1bae0

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) and NewDefaultConfig() let other projects embed go-disc-cuer with 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