Add subcommands to main command
The main command now supports subcommands for the various puzzles. The first subcommand is `sonar`, for working with the sonar data from the Day 1 puzzles.master
parent
40f77c94ac
commit
733813e719
20
src/main.rs
20
src/main.rs
|
@ -5,8 +5,22 @@ use argh::FromArgs;
|
||||||
mod sonar;
|
mod sonar;
|
||||||
|
|
||||||
#[derive(FromArgs)]
|
#[derive(FromArgs)]
|
||||||
/// Elvish Submarine Sonar Tracker
|
/// Elvish Submarine Control
|
||||||
struct Arguments {
|
struct Arguments {
|
||||||
|
#[argh(subcommand)]
|
||||||
|
command: SubCommand,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(FromArgs)]
|
||||||
|
#[argh(subcommand)]
|
||||||
|
enum SubCommand {
|
||||||
|
Sonar(SonarTracker),
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(FromArgs)]
|
||||||
|
/// sonar data reader
|
||||||
|
#[argh(subcommand, name = "sonar")]
|
||||||
|
struct SonarTracker {
|
||||||
/// path to input data file
|
/// path to input data file
|
||||||
#[argh(positional)]
|
#[argh(positional)]
|
||||||
input: String,
|
input: String,
|
||||||
|
@ -18,7 +32,11 @@ struct Arguments {
|
||||||
|
|
||||||
fn main() -> io::Result<()> {
|
fn main() -> io::Result<()> {
|
||||||
let args: Arguments = argh::from_env();
|
let args: Arguments = argh::from_env();
|
||||||
|
match args.command {
|
||||||
|
SubCommand::Sonar(args) => {
|
||||||
let count_incr = sonar::count_increases(&args.input, args.window)?;
|
let count_incr = sonar::count_increases(&args.input, args.window)?;
|
||||||
println!("number of increases: {}", count_incr);
|
println!("number of increases: {}", count_incr);
|
||||||
|
}
|
||||||
|
}
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
Reference in New Issue