aboutsummaryrefslogtreecommitdiffstats
path: root/src/project
diff options
context:
space:
mode:
Diffstat (limited to 'src/project')
-rw-r--r--src/project/error.rs3
-rw-r--r--src/project/git.rs20
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) {