diff options
author | Toby Vincent <tobyv13@gmail.com> | 2022-11-28 01:45:38 -0600 |
---|---|---|
committer | Toby Vincent <tobyv13@gmail.com> | 2022-11-28 01:45:38 -0600 |
commit | 3c3c95b54d12b1654c5c0810f7431190bc7d7580 (patch) | |
tree | c06be9a70fb259ba8f77a673db898c7d7e281810 /src/project | |
parent | 3f188dea518fe29324f7a2416316c436cea8e88a (diff) |
feat: add previewer trait
Diffstat (limited to 'src/project')
-rw-r--r-- | src/project/error.rs | 3 | ||||
-rw-r--r-- | src/project/git.rs | 20 |
2 files changed, 23 insertions, 0 deletions
diff --git a/src/project/error.rs b/src/project/error.rs index 7047533..ddfcb2a 100644 --- a/src/project/error.rs +++ b/src/project/error.rs @@ -8,4 +8,7 @@ pub enum Error { #[error(transparent)] SystemTime(#[from] std::time::SystemTimeError), + + #[error(transparent)] + Other(#[from] anyhow::Error), } diff --git a/src/project/git.rs b/src/project/git.rs index 17573c3..876af1c 100644 --- a/src/project/git.rs +++ b/src/project/git.rs @@ -1,8 +1,11 @@ use git2::{BranchType, Repository}; use ignore::DirEntry; +use onefetch::ui::printer::Printer; +use std::io; use std::{cmp::Ordering, path::PathBuf, time::Duration}; use crate::project::Error; +use crate::project::Preview; use crate::project::Timestamp; use crate::Project; @@ -57,6 +60,23 @@ impl Project for GitProject { } } +impl Preview for GitProject { + type Error = Error; + + fn preview(&self) -> Result<(), Self::Error> { + // onefetch --include-hidden --show-logo=auto + let config = onefetch::cli::Config { + input: self.path_buf.to_owned(), + ..Default::default() + }; + + let info = onefetch::info::Info::new(&config)?; + let mut printer = Printer::new(io::BufWriter::new(io::stdout()), info, config)?; + + printer.print().map_err(Into::into) + } +} + impl PartialEq for GitProject { fn eq(&self, other: &Self) -> bool { match (self.latest_commit, other.latest_commit) { |