diff --git a/gdn-cli/src/commands/repo.rs b/gdn-cli/src/commands/repo.rs index 8122828..b8a3660 100644 --- a/gdn-cli/src/commands/repo.rs +++ b/gdn-cli/src/commands/repo.rs @@ -7,6 +7,8 @@ use clap::Parser; use crate::Environment; +pub use self::list::print_repo_list; + /// Perform repo operations. #[derive(Debug, Parser)] pub enum Command { diff --git a/gdn-cli/src/commands/repo/list.rs b/gdn-cli/src/commands/repo/list.rs index c3d6e10..e1de260 100644 --- a/gdn-cli/src/commands/repo/list.rs +++ b/gdn-cli/src/commands/repo/list.rs @@ -1,4 +1,5 @@ use clap::Parser; +use gdn::data::State; use crate::Environment; @@ -10,27 +11,29 @@ impl Command { pub fn run(self, env: &Environment) -> anyhow::Result<()> { let data = gdn::data::open(env.data_dir.clone())?; let state = gdn::data::load_state(&data)?; - - let mut repos = state - .repos - .into_iter() - .map(|(id, name)| (name, id)) - .collect::>(); - repos.sort_unstable(); - - if repos.is_empty() { - println!("No repos"); - } else { - println!("Repos: {}", repos.len()); - for (name, id) in repos { - if state.selected_repo == Some(id) { - println!("- {name} ({id }, selected)"); - } else { - println!("- {name} ({id })"); - } - } - } - + print_repo_list(&state); Ok(()) } } + +pub fn print_repo_list(state: &State) { + let mut repos = state + .repos + .iter() + .map(|(id, name)| (name, *id)) + .collect::>(); + repos.sort_unstable(); + + if repos.is_empty() { + println!("No repos"); + } else { + println!("Repos: {}", repos.len()); + for (name, id) in repos { + if state.selected_repo == Some(id) { + println!("- {name} ({id}, selected)"); + } else { + println!("- {name} ({id})"); + } + } + } +} diff --git a/gdn-cli/src/commands/status.rs b/gdn-cli/src/commands/status.rs index fd12dde..c89d8d7 100644 --- a/gdn-cli/src/commands/status.rs +++ b/gdn-cli/src/commands/status.rs @@ -1,6 +1,6 @@ use clap::Parser; -use crate::Environment; +use crate::{Environment, commands::repo}; /// Display current status. #[derive(Debug, Parser)] @@ -24,18 +24,7 @@ impl Command { let state = gdn::data::load_state(&data)?; println!(); - if state.repos.is_empty() { - println!("No repos"); - } else { - println!("Repos ({}):", state.repos.len()); - for (id, name) in &state.repos { - if state.selected_repo == Some(*id) { - println!("- {name} ({id}, selected)"); - } else { - println!("- {name} ({id})"); - } - } - } + repo::print_repo_list(&state); Ok(()) }