use clap::{App, Arg, SubCommand};
use us_time_parser::*;
fn main() {
let current_version = env!("CARGO_PKG_VERSION");
let matches = App::new("Time Parser")
.version(current_version)
.author("Yaroslav Fetisov")
.about("Parses different time components")
.subcommand(
SubCommand::with_name("parse_time")
.about("Parses complete time")
.arg(
Arg::with_name("time")
.help("Sets the input time to parse")
.required(true),
),
)
.subcommand(
SubCommand::with_name("parse_hour")
.about("Parses hour")
.arg(
Arg::with_name("hour")
.help("Sets the input hour to parse")
.required(true),
),
)
.subcommand(
SubCommand::with_name("parse_minute")
.about("Parses minute")
.arg(
Arg::with_name("minute")
.help("Sets the input minute to parse")
.required(true),
),
)
.subcommand(
SubCommand::with_name("parse_second")
.about("Parses second")
.arg(
Arg::with_name("second")
.help("Sets the input second to parse")
.required(true),
),
)
.subcommand(
SubCommand::with_name("parse_am_pm")
.about("Parses AM/PM")
.arg(
Arg::with_name("am_pm")
.help("Sets the input AM/PM to parse")
.required(true),
),
)
.subcommand(SubCommand::with_name("help").about("Displays help and credits information"))
.get_matches();
match matches.subcommand() {
("parse_time", Some(parse_matches)) => {
let time = parse_matches.value_of("time").unwrap(); match parse_time(time) {
Ok(parsed_data) => {
println!("Parsed time: {:?}", parsed_data);
}
Err(e) => {
eprintln!("Error parsing time: {}", e);
}
}
}
("parse_hour", Some(parse_matches)) => {
let hour = parse_matches.value_of("hour").unwrap(); match parse_hour(hour) {
Ok(parsed_data) => {
println!("Parsed hour: {:?}", parsed_data);
}
Err(e) => {
eprintln!("Error parsing hour: {}", e);
}
}
}
("parse_minute", Some(parse_matches)) => {
let minute = parse_matches.value_of("minute").unwrap(); match parse_minute(minute) {
Ok(parsed_data) => {
println!("Parsed minute: {:?}", parsed_data);
}
Err(e) => {
eprintln!("Error parsing minute: {}", e);
}
}
}
("parse_second", Some(parse_matches)) => {
let second = parse_matches.value_of("second").unwrap(); match parse_second(second) {
Ok(parsed_data) => {
println!("Parsed second: {:?}", parsed_data);
}
Err(e) => {
eprintln!("Error parsing second: {}", e);
}
}
}
("parse_am_pm", Some(parse_matches)) => {
let am_pm = parse_matches.value_of("am_pm").unwrap(); match parse_am_pm(am_pm) {
Ok(parsed_data) => {
println!("Parsed AM/PM: {:?}", parsed_data);
}
Err(e) => {
eprintln!("Error parsing AM/PM: {}", e);
}
}
}
("help", _) => {
println!("=== Help Information ===");
println!("This command-line tool parses time from a file.");
println!("Command usage:");
println!(" parse -f <file_path> : Parses time from the specified file");
println!(" help : Displays help and credits information\n");
println!("{:?}", current_version);
println!("Author: Yaroslav Fetisov");
}
_ => println!("Use 'help' for usage information"),
}
}