use crate::errors::Result;
use crate::time::parse_duration;
use clap::Parser;
use std::thread;
#[derive(Parser)]
pub struct SleepArgs {
pub duration: String,
}
pub fn execute(args: SleepArgs) -> Result<()> {
let duration = parse_duration(&args.duration)?;
if duration.is_infinite() {
loop {
thread::sleep(std::time::Duration::from_secs(1));
}
}
let std_duration = duration.to_std_duration();
thread::sleep(std_duration);
Ok(())
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_parse_sleep_args() {
let args = SleepArgs {
duration: "5".to_string(),
};
assert_eq!(args.duration, "5");
}
}