diff --git a/src/builtins/time.rs b/src/builtins/time.rs index 58cc866..0e79262 100644 --- a/src/builtins/time.rs +++ b/src/builtins/time.rs @@ -1,4 +1,4 @@ -use chrono::Local; +use chrono::{DateTime, Local}; use crate::error::ShellError; @@ -10,17 +10,17 @@ impl Builtin for Time { fn execute(&mut self, _: &mut BuiltinConfig, args: Vec) -> Result<(), ShellError> { let time = Local::now(); - if args.is_empty() { - println!("{}", time.format("%T")); - return Ok(()); - } - - let time_string = match args[0].as_str() { - "RFC2822" => time.to_rfc2822(), - "RFC3339" => time.to_rfc3339(), - _ => time.format("%T").to_string(), - }; + let formatting = args.get(0).cloned().unwrap_or_default(); + let time_string = format_time(time, &formatting); println!("{time_string}"); Ok(()) } } + +fn format_time(time: DateTime, formatting: &str) -> String { + match formatting { + "RFC2822" => time.to_rfc2822(), + "RFC3339" => time.to_rfc3339(), + _ => time.format("%T").to_string(), + } +}