use crate::{ common::{Content, Style, Toggle}, duration, }; #[cfg(feature = "sound")] use crate::{sound, sound::SoundError}; use clap::Parser; use std::path::PathBuf; use std::time::Duration; pub const LOG_DIRECTORY_DEFAULT_MISSING_VALUE: &str = " "; // empty string #[derive(Parser)] #[command(version)] pub struct Args { #[arg(long, short, value_parser = duration::parse_long_duration, help = "Countdown time to start from. Formats: 'Yy Dd hh:mm:ss', 'Dd hh:mm:ss', 'Yy mm:ss', 'Dd mm:ss', 'Yy ss', 'Dd ss', 'hh:mm:ss', 'mm:ss', 'ss'. Examples: '1y 5d 10:30:00', '2d 4:00', '1d 10', '5:03'." )] pub countdown: Option, #[arg(long, short, value_parser = duration::parse_duration, help = "Work time to count down from. Formats: 'ss', 'mm:ss', 'hh:mm:ss'" )] pub work: Option, #[arg(long, short, value_parser = duration::parse_duration, help = "Pause time to count down from. Formats: 'ss', 'mm:ss', 'hh:mm:ss'" )] pub pause: Option, #[arg(long, short = 'd', help = "Show deciseconds.")] pub decis: bool, #[arg(long, short = 'm', value_enum, help = "Mode to start with.")] pub mode: Option, #[arg(long, short = 's', value_enum, help = "Style to display time with.")] pub style: Option