1use crate::error::Result;
2use crate::git::CliOps;
3
4pub fn run(path: String, anchor: Option<String>, commit: String, no_tui: bool) -> Result<()> {
5 let repo_dir = std::env::current_dir().map_err(|e| crate::error::ChronicleError::Io {
6 source: e,
7 location: snafu::Location::default(),
8 })?;
9 let git_ops = CliOps::new(repo_dir);
10
11 let data = crate::show::build_show_data(&git_ops, &path, &commit, anchor.as_deref())?;
12
13 let use_tui = !no_tui && std::io::IsTerminal::is_terminal(&std::io::stdout());
14
15 if use_tui {
16 #[cfg(feature = "tui")]
17 {
18 return crate::show::run_tui(data);
19 }
20 #[cfg(not(feature = "tui"))]
21 {
22 return run_plain_output(&data);
23 }
24 }
25
26 run_plain_output(&data)
27}
28
29fn run_plain_output(data: &crate::show::ShowData) -> Result<()> {
30 crate::show::run_plain(data, &mut std::io::stdout()).map_err(|e| {
31 crate::error::ChronicleError::Io {
32 source: e,
33 location: snafu::Location::default(),
34 }
35 })
36}