summaryrefslogtreecommitdiffstats
path: root/src/log
diff options
context:
space:
mode:
authorMatthias Beyer <mail@beyermatthias.de>2020-11-04 15:09:55 +0100
committerMatthias Beyer <mail@beyermatthias.de>2020-11-04 16:43:27 +0100
commitb3549535bf00a54910f375a6d7ed547c04f67f1b (patch)
tree574cf44dbc44d451e18feef0a561399415171d5b /src/log
parent3ff4fee49963d461fd5dcc896a0ea10ed63759eb (diff)
Add LogItem::display(), which crafts a displayable object from the LogItem
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
Diffstat (limited to 'src/log')
-rw-r--r--src/log/filesink.rs2
-rw-r--r--src/log/item.rs24
2 files changed, 16 insertions, 10 deletions
diff --git a/src/log/filesink.rs b/src/log/filesink.rs
index 6052254..d48e393 100644
--- a/src/log/filesink.rs
+++ b/src/log/filesink.rs
@@ -31,7 +31,7 @@ impl FileSink {
impl LogSink for FileSink {
fn log_item(&mut self, item: LogItem) -> Result<()> {
- let s: String = item.try_into()?;
+ let s = item.display()?;
writeln!(self.file, "{}", s)?;
Ok(())
}
diff --git a/src/log/item.rs b/src/log/item.rs
index 1e5d62a..9130045 100644
--- a/src/log/item.rs
+++ b/src/log/item.rs
@@ -19,17 +19,23 @@ pub enum LogItem {
State(Result<String, String>),
}
-impl TryInto<String> for LogItem {
- type Error = anyhow::Error;
-
- fn try_into(self) -> Result<String> {
+impl LogItem {
+ pub fn display(&self) -> Result<Display> {
match self {
- LogItem::Line(v) => String::from_utf8(v).map_err(Error::from),
- LogItem::Progress(u) => Ok(format!("#BUTIDO:PROGRESS:{}", u)),
- LogItem::CurrentPhase(p) => Ok(format!("#BUTIDO:PHASE:{}", p)),
- LogItem::State(Ok(s)) => Ok(format!("#BUTIDO:STATE:OK:{}", s)),
- LogItem::State(Err(s)) => Ok(format!("#BUTIDO:STATE:ERR:{}", s)),
+ LogItem::Line(s) => Ok(Display(String::from_utf8(s.to_vec())?)),
+ LogItem::Progress(u) => Ok(Display(format!("#BUTIDO:PROGRESS:{}", u))),
+ LogItem::CurrentPhase(p) => Ok(Display(format!("#BUTIDO:PHASE:{}", p))),
+ LogItem::State(Ok(s)) => Ok(Display(format!("#BUTIDO:STATE:OK:{}", s))),
+ LogItem::State(Err(s)) => Ok(Display(format!("#BUTIDO:STATE:ERR:{}", s))),
}
}
}
+pub struct Display(String);
+
+impl std::fmt::Display for Display {
+ fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::result::Result<(), std::fmt::Error> {
+ write!(f, "{}", self.0)
+ }
+}
+