From ed6ac8436bab2f0b05d69cd48f439bac66f83b4d Mon Sep 17 00:00:00 2001 From: fdai7375 Date: Thu, 2 Feb 2023 19:42:20 +0100 Subject: [PATCH] feat: add more formatting options to time command --- src/builtins/time.rs | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/src/builtins/time.rs b/src/builtins/time.rs index e1623cb..58cc866 100644 --- a/src/builtins/time.rs +++ b/src/builtins/time.rs @@ -1,4 +1,4 @@ -use chrono::{DateTime, Local, TimeZone}; +use chrono::Local; use crate::error::ShellError; @@ -7,9 +7,20 @@ use super::{Builtin, BuiltinConfig}; pub struct Time; impl Builtin for Time { - fn execute(&mut self, _: &mut BuiltinConfig, _: Vec) -> Result<(), ShellError> { + fn execute(&mut self, _: &mut BuiltinConfig, args: Vec) -> Result<(), ShellError> { let time = Local::now(); - println!("{time}"); + + 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(), + }; + println!("{time_string}"); Ok(()) } }