diff --git a/Cargo.toml b/Cargo.toml index 8291a4b..c360204 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -5,15 +5,11 @@ edition = "2021" [dependencies] anyhow = "1.0" -cfg-if = "1.0.0" clap = { version = "4.5", features = ["derive"] } fasteval = "0.2.4" tinyaudio = { version = "0.1", optional = true } [features] -# default = [] -# default = ["save"] -# default = ["play"] default = ["play", "save"] play = ["dep:tinyaudio"] save = [] diff --git a/src/cli.rs b/src/cli.rs index e09a10b..0c6699a 100644 --- a/src/cli.rs +++ b/src/cli.rs @@ -1,54 +1,21 @@ use std::{fs::read_to_string, ops::Deref, path::Path, str::FromStr}; -cfg_if! { - if #[cfg(save)] { - use std::path::PathBuf; - } -} use anyhow::{Context, Error}; -use cfg_if::cfg_if; use clap::Parser; #[derive(Parser)] -#[cfg_attr(debug_assertions, derive(Debug))] pub(super) struct Args { #[arg(short, long, value_parser = Instrument::from_str)] - instrument: Option, - #[cfg(save)] - #[arg(short, long)] - output: Option, - #[cfg(play)] - #[arg(short, long)] - silent: bool, - score: Score, + instrument: Instrument, } -#[derive(Clone)] -#[cfg_attr(debug_assertions, derive(Debug))] -pub(super) struct Score(String); - -impl FromStr for Score { - type Err = Error; - fn from_str(value: &str) -> Result { - let maybe_a_path = Path::new(&value); - Ok(Score(if maybe_a_path.is_file() { - read_to_string(maybe_a_path) - .context("you gave me the path of a real file but reading it is hard!")? - } else { - value.to_owned() // hope it's a good one - })) - } -} - -impl Deref for Score { - type Target = ::Target; - fn deref(&self) -> &Self::Target { - &self.0 +impl Args { + pub(super) fn instrument(&self) -> &::Target { + &self.instrument } } #[derive(Clone)] -#[cfg_attr(debug_assertions, derive(Debug))] pub(super) struct Instrument(String); impl FromStr for Instrument { @@ -59,7 +26,7 @@ impl FromStr for Instrument { read_to_string(maybe_a_path) .context("you gave me the path of a real file but reading it is hard!")? } else { - value.to_owned() // hope it's a good one + value.to_owned() // hope it's good })) } } diff --git a/src/main.rs b/src/main.rs index d3528bf..75aa9ce 100644 --- a/src/main.rs +++ b/src/main.rs @@ -5,7 +5,6 @@ mod cli; fn main() -> Result<()> { let args = cli::Args::try_parse()?; - #[cfg(debug_assertions)] - println!("{:?}", args); + println!("got: {}", args.instrument()); Ok(()) }