From f869c7f52d8fd1f1ef61e218bbec4d0dac27673d Mon Sep 17 00:00:00 2001 From: Max Audron Date: Tue, 7 Jun 2022 12:28:18 +0200 Subject: init --- src/local/update.rs | 57 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 src/local/update.rs (limited to 'src/local/update.rs') diff --git a/src/local/update.rs b/src/local/update.rs new file mode 100644 index 0000000..95057a4 --- /dev/null +++ b/src/local/update.rs @@ -0,0 +1,57 @@ +use std::fmt::Display; + +#[derive(Debug)] +pub enum UpdateResult { + NoChanges { + name: String, + }, + Dirty { + name: String, + }, + Merged { + name: String, + }, + Error { + name: String, + error: super::RepoError, + }, +} + +impl UpdateResult { + pub fn err(name: String, error: super::RepoError) -> UpdateResult { + UpdateResult::Error { name, error } + } + + pub fn merged(name: String) -> UpdateResult { + UpdateResult::Merged { name } + } + + pub fn dirty(name: String) -> UpdateResult { + UpdateResult::Dirty { name } + } + + pub fn no_changes(name: String) -> UpdateResult { + UpdateResult::NoChanges { name } + } +} + +impl Display for UpdateResult { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + use ansi_term::Colour::{Blue, Green, Red, Yellow}; + + match self { + UpdateResult::NoChanges { name } => { + f.write_fmt(format_args!("{} {}", Blue.paint("FETCHED"), name)) + } + UpdateResult::Dirty { name } => { + f.write_fmt(format_args!("{} {}", Yellow.paint("DIRTY "), name)) + } + UpdateResult::Merged { name } => { + f.write_fmt(format_args!("{} {}", Green.paint("PULLED "), name)) + } + UpdateResult::Error { name, error } => { + f.write_fmt(format_args!("{} {} [{}]", Red.paint("ERROR "), name, error)) + } + } + } +} -- cgit v1.2.3