//! Thin entry point. The suite lives in the library so the binary needs no //! access to the player internals — one exported function rather than a public //! module tree. //! //! player-conformance [mpv|legacy] //! //! `legacy` drives the old `PlayerBackend` through the same cases, so the //! difference between the two designs is demonstrated on one engine and one //! file rather than argued. //! //! TRACES: UR-081 | DR-244, DR-245 use std::process::ExitCode; use jellytau_lib::conformance_runner::{run_engine, Engine}; fn main() -> ExitCode { let mut args = std::env::args().skip(1); let Some(url) = args.next() else { eprintln!("usage: player-conformance [mpv|legacy]"); return ExitCode::from(2); }; let engine = match args.next().as_deref() { None | Some("mpv") => Engine::Mpv, Some("legacy") => Engine::Legacy, Some(other) => { eprintln!("unknown engine {other:?} - expected mpv or legacy"); return ExitCode::from(2); } }; if run_engine(&url, engine) == 0 { ExitCode::SUCCESS } else { ExitCode::FAILURE } }