diff options
author | Lars Wirzenius <liw@liw.fi> | 2021-08-06 09:41:34 +0300 |
---|---|---|
committer | Lars Wirzenius <liw@liw.fi> | 2021-08-06 10:21:58 +0300 |
commit | a54cbbb7f3d3750f4c3fea3ba999dac978ec394a (patch) | |
tree | ab941b542ff104664af5feb174e97eb271bbfc54 /src/progress.rs | |
parent | 6fc3ad8a6758bb6c764ba208d814c1ab82d764ac (diff) | |
download | vmadm-a54cbbb7f3d3750f4c3fea3ba999dac978ec394a.tar.gz |
feat: add progress reporting
Sponsored-by: author
Diffstat (limited to 'src/progress.rs')
-rw-r--r-- | src/progress.rs | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/src/progress.rs b/src/progress.rs new file mode 100644 index 0000000..52ade35 --- /dev/null +++ b/src/progress.rs @@ -0,0 +1,40 @@ +//! Show progress, or not. + +#[derive(Debug, Clone, Copy)] +pub enum MessageKind { + OnlyErrors, + Steps, + Everything, +} + +pub struct Progress { + level: MessageKind, +} + +impl Progress { + pub fn new(level: MessageKind) -> Self { + Self { level } + } + + fn message(&self, prefix: &str, msg: &str) { + eprintln!("{}: {}", prefix, msg); + } + + pub fn chatty(&self, msg: &str) { + if let MessageKind::Everything = self.level { + self.message("DEBUG", msg); + } + } + + pub fn step(&self, msg: &str) { + match self.level { + MessageKind::Everything | MessageKind::Steps => self.message("INFO", msg), + _ => (), + } + } + + pub fn error(&self, msg: &str) { + // Errors are always written out. + self.message("ERROR", msg); + } +} |