29 lines
868 B
Rust
29 lines
868 B
Rust
|
|
use super::calendar::create_timetable;
|
||
|
|
use clap::Parser;
|
||
|
|
|
||
|
|
#[derive(Parser, Debug)]
|
||
|
|
#[command(version, about, long_about = None)]
|
||
|
|
pub struct Args {
|
||
|
|
#[arg(short, long)]
|
||
|
|
pub timezone: Vec<String>,
|
||
|
|
|
||
|
|
#[arg(short, long)]
|
||
|
|
pub date: Option<String>,
|
||
|
|
|
||
|
|
pub time: String,
|
||
|
|
}
|
||
|
|
|
||
|
|
pub fn print_timezones(timezones: &Vec<String>, time: &String, date: &String) {
|
||
|
|
let max_len = timezones.iter().map(|t| t.len()).max().unwrap_or(0) as u32;
|
||
|
|
for timezone in timezones {
|
||
|
|
let name_padding = (0..(max_len - timezone.len() as u32))
|
||
|
|
.map(|_| " ".to_string())
|
||
|
|
.collect::<Vec<String>>()
|
||
|
|
.join("");
|
||
|
|
match create_timetable(time, date, timezone, 5) {
|
||
|
|
Ok(timetable) => println!("{}:{}\t{}", timezone, name_padding, timetable.join("\t")),
|
||
|
|
Err(error) => panic!("Failed: {}", error),
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|