aboutsummaryrefslogtreecommitdiff
path: root/karlc
diff options
context:
space:
mode:
authormetamuffin <yvchraiqi@protonmail.com>2022-06-10 15:50:28 +0200
committermetamuffin <yvchraiqi@protonmail.com>2022-06-10 15:50:28 +0200
commitee1116ffb12887d1ad985b67887c910f58202c1f (patch)
tree1dc0638edaa9fe98ccb31ae23224975efe127318 /karlc
parent4e964dbb135655794d570d61f8f2587474aaead4 (diff)
downloadkarlender-ee1116ffb12887d1ad985b67887c910f58202c1f.tar
karlender-ee1116ffb12887d1ad985b67887c910f58202c1f.tar.bz2
karlender-ee1116ffb12887d1ad985b67887c910f58202c1f.tar.zst
nice display for tasks
Diffstat (limited to 'karlc')
-rw-r--r--karlc/src/main.rs4
-rw-r--r--karlc/src/pretty.rs37
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))
+ }
+}