dart_rip_log 0.1.0
dart_rip_log: ^0.1.0 copied to clipboard
Parses CD rip log files from EAC, XLD, and other rippers into structured, JSON-serialisable quality data (AccurateRip, CRCs, peaks, errors).
Changelog #
0.1.0 #
- Aggregate quality on
RipLog.quality— a singleRipLogQualityvalue (allVerified,partiallyVerified,mismatches,errors,unknown) derived from the track list with a documented precedence. Also emitted under thequalitykey in the JSON output — useful for dashboards. - Lineage metadata via new
LogSourceclass (byte size, line count, parser name, UTC parse timestamp) attached asRipLog.sourcewhen parsing throughparseRipLogFile.RipLog.withSource(...)returns a copy with a different source.compareRipLogsignoressourcesince its wall-clock timestamp is not a rip property. - Track timing fields on
RipLogTrack:startSector,lengthSectors,durationSeconds. Nullable, omitted from JSON when absent, tracked bycompareRipLogs. - All new fields fully covered by equality, hash,
fromJson, and golden tests. Total suite: 205 tests.
Deferred to 0.1.x parsers milestone #
Full parsers for whipper (#2), CUERipper (#3), and dBpoweramp (#4) still require real-world sample logs. Detection and stubs remain in place. Please open an issue on GitHub with a sample log to unblock these.
0.0.5 #
- CLI:
--format ndjson— streaming-friendly one-JSON-object-per-line output (useful with jq and log pipelines). - CLI:
--filter <mode>— hide non-problem tracks in--format text/--summaryoutput. Values:all(default),mismatch,errors,problems(mismatch or error counts). - CLI:
--fail-on <policy>— choose which conditions trigger exit 1. Values:any(default, current behaviour),mismatch,errors,never. Useful for tuning CI pipelines. - CLI:
-r/--recursive— walk directories for*.logfiles instead of requiring individual paths. - CLI:
--color <mode>—auto(default, based onstdout.hasTerminalandNO_COLOR),always,never. Colours AR status (verified → green, mismatch → red, notInDatabase → yellow, notChecked → dim) and theERRORSlabel. - CLI tests grown to 27 (all covered by the new flags). Total suite: 190.
0.0.4 #
- EAC: parse localised month names in the extraction date. Coverage for English, German, French, Spanish, Italian, Dutch, and Portuguese.
RipLog.testAndCopy— new field, derived from the presence of per-trackTest CRClines.nullwhen no tracks were parsed, otherwisetrueif any track recorded a test CRC (test + copy mode) orfalse(copy-only mode).RipLog.accurateRipDiscIdandRipLog.accurateRipTotalSubmissions— new fields populated from XLD'sAccurateRip Summary/DiscID:/Total submissions:lines. Serialised in the JSON output when present.- 178 tests (7 new covering localised dates, test+copy derivation, and the AR summary block).
0.0.3 #
- Added
fromJsonconstructors onRipLog,RipLogTrack,TrackErrors, andDriveInfo, completing the JSON round-trip. Unknown enum values degrade tounknown/notCheckedrather than throwing, so logs serialised by a newer library version remain readable on older versions. - Models now implement
==andhashCode(field-wise), so two parsed logs can be compared directly and used as map keys / in sets. - New diff utility
compareRipLogs(a, b)returns a structuredRipLogDiffwith per-field entries (tracks[N].copyCrc,tracks[N].errors.readErrors, etc.). Tracks present on only one side are reported astrackAdded/trackRemoved. Parser-level warnings inRipLog.errorsare intentionally ignored so re-parses on a newer library don't surface as diffs. Exported types:compareRipLogs,RipLogDiff,RipLogDiffEntry,RipLogDiffKind. - Test suite grown to 171 tests (round-trip, equality, diff).
0.0.2 #
- Relicensed from GPL-3.0 to Apache-2.0.
- Added GitHub Actions CI (analyze + test on Linux/macOS/Windows against
stable and beta Dart SDKs, plus a
dart pub publish --dry-rungate). - Added dartdoc generation to CI to keep the public API documented.
- Added a release workflow that publishes prebuilt
riplogbinaries for Linux x64, macOS arm64, and Windows x64 on everyv*tag. - README now carries CI, pub, and licence badges.
0.0.1 #
- Initial release.
- Full EAC parser: header metadata, per-track fields, AccurateRip v1 and optional v2 signature capture, full error-statistics block, summary and log-checksum footer, Range-rip (single-track whole-disc) logs.
- Full XLD parser: header, per-track CRC32/AR v1/v2, Statistics block.
- Format detection and scaffolded parsers for CUERipper, whipper, and dBpoweramp (tool version captured; full per-track parsing pending sample logs).
- Convenience helpers:
isFullyVerified,tracksWithErrors,tracksWithArMismatch,toJson. - Command-line tool
riplog:- JSON, text, and one-line summary output.
--help,--version,--quiet/-qflags.- Accepts multiple files (emits a JSON array) and reads from stdin
(
-or when piped). - Non-zero exit code on AR mismatch or track errors, for scripting / CI use.
- Tolerant of malformed input (truncated files, garbled lines, mixed line endings) — never throws on log content.
- Test suite: 155 tests covering unit parsing, CLI integration, JSON-shape goldens, Unicode filenames, and a parse-throughput smoke test.