diff options
author | metamuffin <yvchraiqi@protonmail.com> | 2022-06-10 15:50:28 +0200 |
---|---|---|
committer | metamuffin <yvchraiqi@protonmail.com> | 2022-06-10 15:50:28 +0200 |
commit | ee1116ffb12887d1ad985b67887c910f58202c1f (patch) | |
tree | 1dc0638edaa9fe98ccb31ae23224975efe127318 /karlc | |
parent | 4e964dbb135655794d570d61f8f2587474aaead4 (diff) | |
download | karlender-ee1116ffb12887d1ad985b67887c910f58202c1f.tar karlender-ee1116ffb12887d1ad985b67887c910f58202c1f.tar.bz2 karlender-ee1116ffb12887d1ad985b67887c910f58202c1f.tar.zst |
nice display for tasks
Diffstat (limited to 'karlc')
-rw-r--r-- | karlc/src/main.rs | 4 | ||||
-rw-r--r-- | karlc/src/pretty.rs | 37 |
2 files changed, 40 insertions, 1 deletions
diff --git a/karlc/src/main.rs b/karlc/src/main.rs index bfd433e..c69f1b2 100644 --- a/karlc/src/main.rs +++ b/karlc/src/main.rs @@ -8,6 +8,8 @@ use client::Client; use karlcommon::{socket_path, version, ClientboundPacket, ServerboundPacket}; use log::{error, info}; +use crate::pretty::Pretty; + /// CLI interface for karld #[derive(Parser)] #[clap(about, author, version)] @@ -56,7 +58,7 @@ fn main() { client.send(ServerboundPacket::Download); if let ClientboundPacket::DownloadResponse(tasks) = client.receiver.recv().unwrap() { for t in tasks { - println!("{:?}", t) + println!("{}", Pretty(t)) } } } diff --git a/karlc/src/pretty.rs b/karlc/src/pretty.rs index 139597f..ceb1bde 100644 --- a/karlc/src/pretty.rs +++ b/karlc/src/pretty.rs @@ -1,2 +1,39 @@ +use std::fmt::Display; +use karlcommon::{Condition, Task}; +pub struct Pretty<T>(pub T); + +impl Display for Pretty<Task> { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + f.write_fmt(format_args!( + "- \x1b[4m\x1b[1mTASK {}\x1b[0m + \x1b[38;2;100;255;100mName:\x1b[0m {} + \x1b[38;2;100;255;100mDescription:\x1b[0m {} + \x1b[38;2;100;255;100mOccurence:\x1b[0m {}", + self.0.id, + self.0.name, + self.0.description, + Pretty(self.0.occurence.clone()) + )) + } +} + +impl<T> Display for Pretty<Option<T>> +where + T: Clone, + Pretty<T>: Display, +{ + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + match &self.0 { + Some(v) => Pretty(v.clone()).fmt(f), + None => Ok(()), + } + } +} + +impl Display for Pretty<Condition> { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + f.write_fmt(format_args!("{:?}", self.0)) + } +} |