diff options
author | Nicholas Johnson <nick@nicholasjohnson.ch> | 2024-04-22 00:00:00 +0000 |
---|---|---|
committer | Nicholas Johnson <nick@nicholasjohnson.ch> | 2024-04-22 00:00:00 +0000 |
commit | c10eedb6af1c8e77fcd4d584d3783f92dfaf85f2f9ec3a1317eb44ae40ec6293 (patch) | |
tree | 6d5e29e605b01a245e1cb01bb326e644cd2d4d437078e9e73e2d68b3cf69f53b /src/main.rs | |
parent | f62de034d486fcd4ba43517c24bed7e91579498a94418d91ad0a811dc158f3f2 (diff) | |
download | hitomezashi-rs-c10eedb6af1c8e77fcd4d584d3783f92dfaf85f2f9ec3a1317eb44ae40ec6293.tar.gz hitomezashi-rs-c10eedb6af1c8e77fcd4d584d3783f92dfaf85f2f9ec3a1317eb44ae40ec6293.zip |
Move cli functionality out of main.rs
Diffstat (limited to 'src/main.rs')
-rw-r--r-- | src/main.rs | 57 |
1 files changed, 1 insertions, 56 deletions
diff --git a/src/main.rs b/src/main.rs index c936dc1..f516586 100644 --- a/src/main.rs +++ b/src/main.rs @@ -16,28 +16,9 @@ along with this program. If not, see <https://www.gnu.org/licenses/>. */ -use clap::Parser; -use std::ops::RangeInclusive; - use hitomezashi_rs; -#[derive(Parser)] -#[command(version, about, long_about = None)] // Read from `Cargo.toml` -struct Cli { - /// Pattern width - #[arg(value_parser = dimension_in_range)] - width: usize, - - /// Pattern height - #[arg(value_parser = dimension_in_range)] - height: usize, - - /// Set skew - #[arg(short, long)] - #[arg(default_value_t = 0.5)] - #[arg(value_parser = skew_in_range)] - skew: f64, -} +include!("cli.rs"); // CLI for hitomezashi fn main() { @@ -45,39 +26,3 @@ fn main() { hitomezashi_rs::generate(cli.width, cli.height, Some(cli.skew)); } - -const DIMENSION_RANGE: RangeInclusive<usize> = 1..=std::usize::MAX; - -fn dimension_in_range(s: &str) -> Result<usize, String> { - let dimension: usize = s - .parse() - .map_err(|_| format!("`{s}` isn't a dimension value!"))?; - - if DIMENSION_RANGE.contains(&dimension) { - Ok(dimension) - } else { - Err(format!( - "Dimension not in range {}-{}", - DIMENSION_RANGE.start(), - DIMENSION_RANGE.end() - )) - } -} - -const SKEW_RANGE: RangeInclusive<f64> = 0.0..=1.0; - -fn skew_in_range(s: &str) -> Result<f64, String> { - let skew: f64 = s - .parse() - .map_err(|_| format!("`{s}` isn't a skew value!"))?; - - if SKEW_RANGE.contains(&skew) { - Ok(skew) - } else { - Err(format!( - "Skew not in range {}-{}", - SKEW_RANGE.start(), - SKEW_RANGE.end() - )) - } -} |