feat: Add convert cli

This commit is contained in:
Guilhem 2022-07-26 18:23:41 +02:00
parent 51f2641804
commit 336a7c651b

50
src/cli.rs Normal file
View File

@ -0,0 +1,50 @@
use crate::lib::NotationKind;
use crate::lib::Tooth;
use clap::{Parser, Subcommand, ValueEnum};
#[derive(Copy, Clone, Debug, ValueEnum)]
enum NotationKindArg {
Iso,
Uns,
Alphanumeric,
}
#[derive(Debug, Subcommand)]
enum Action {
Convert {
#[clap(value_enum, short = 'f', long)]
from: NotationKindArg,
#[clap(value_enum, short = 't', long)]
to: NotationKindArg,
#[clap(value_parser)]
value: String,
},
}
#[derive(Parser, Debug)]
struct Args {
#[clap(subcommand)]
action: Action,
}
fn convert_kind(kind_arg: &NotationKindArg) -> NotationKind {
match kind_arg {
NotationKindArg::Iso => NotationKind::Iso,
NotationKindArg::Uns => NotationKind::Uns,
NotationKindArg::Alphanumeric => NotationKind::Alphanumeric,
}
}
pub fn run_cli() {
let args = Args::parse();
match &args.action {
Action::Convert { from, to, value } => {
let tooth_result = Tooth::convert(&convert_kind(from), &convert_kind(&to), value);
let output_string = match tooth_result {
Err(err) => err,
Ok(ok) => ok,
};
println!("{}", output_string);
}
};
}