From 227d6bcec3de0224a9f0981a3564bd96d3eaa42e Mon Sep 17 00:00:00 2001 From: Breval Ferrari Date: Mon, 12 May 2025 20:23:55 +0200 Subject: [PATCH] CLI UML --- doc/uml/cli/class.puml | 105 +++++++++++++++++++++++++++++++++++++++-- 1 file changed, 102 insertions(+), 3 deletions(-) diff --git a/doc/uml/cli/class.puml b/doc/uml/cli/class.puml index 636526a..e821d7b 100644 --- a/doc/uml/cli/class.puml +++ b/doc/uml/cli/class.puml @@ -6,10 +6,109 @@ component clap { interface Parser } -component cli { - struct Cli {} +component fasteval { + enum Instruction } -Cli ..|> Parser +component mp3lame-encoder { + enum Quality + enum Bitrate +} + +component hound { + enum SampleFormat +} + +component cli { + struct Cli { + mode: Mode + } + enum Mode { + Play(PlayOpts) + Export(ExportOpts) + Help(HelpOpts) + } + Cli --> Mode + struct PlayOpts { + input: Input + instrument: Instruction [-i, --instrument] + length: Instruction [-l, --length] + variables: HashMap [-v, --variable] + macros: HashMap [-m, --macro] + slopes: HashMap [-s, --slope] + } + Mode --> PlayOpts + enum Input { + File(File) + Stdin(Stdin) [default] + String(String) [-c] + } + PlayOpts --> Input + struct ExportOpts { + playopts: PlayOpts + format: Format + output: Output [-c] + } + Mode --> ExportOpts + enum Format { + Mp3 {bitrate: Bitrate, quality: Quality} + Wav {bps: u16, sample_format: SampleFormat} + Flac {bps: usize} + Raw(RawFormat) + } + enum RawFormat { + ALaw + F32Be + F32Le + F64Be + F64Le + MuLaw + S8 + S16Be + S16Le + S24Be + S24Le + S32Be + S32Le + U8 + U16Be + U16Le + U24Be + U24Le + U32Be + U32Le + } + Format --> RawFormat: "feature = "raw"" + ExportOpts --> Format + enum Output { + File(File) + Stdout(Stdout) [default] + } + ExportOpts --> Output + PlayOpts <-- ExportOpts + enum HelpOpts { + Syntax + Examples + Example(u8) + Format + } + Mode --> HelpOpts +} + +component flacenc-rs { + +} + +component raw_audio { + +} + +cli ..|> Parser: derive +PlayOpts --> Instruction +Format --> Bitrate: "feature = "mp3"" +Format --> Quality: "feature = "mp3"" +Format --> SampleFormat: "feature = "wav"" +Format ..> "flacenc-rs": "feature = "flac"" +Format ..> raw_audio: "feature = "raw"" @enduml \ No newline at end of file