claude_code_toolkit/cli/commands/
repo.rs1use crate::{ config::manager::ConfigurationManager, error::* };
2use console::{ Emoji, style };
3
4static SUCCESS: Emoji<'_, '_> = Emoji("✅ ", "");
5static INFO: Emoji<'_, '_> = Emoji("ℹ️ ", "");
6
7pub async fn handle_add_repo(repo: String) -> Result<()> {
8 println!("{}Adding repository {} for Claude secret sync", INFO, style(&repo).bold());
9
10 let config_manager = ConfigurationManager::new()?;
11 config_manager.add_repository(repo.clone()).await?;
12
13 println!("{}Successfully added repository {}", SUCCESS, style(&repo).bold());
14 let config = config_manager.load_config().await?;
16 let secret_names: Vec<String> = config.credentials.field_mappings.values().cloned().collect();
17 println!("{}", style(format!("Will sync: {}", secret_names.join(", "))).dim());
18 println!("{}", style("Run 'claude-code sync now' to sync immediately").dim());
19
20 Ok(())
21}
22
23pub async fn handle_remove_repo(repo: String) -> Result<()> {
24 println!("{}Removing repository {}", INFO, style(&repo).bold());
25
26 let config_manager = ConfigurationManager::new()?;
27 config_manager.remove_repository(&repo).await?;
28
29 println!("{}Successfully removed repository {}", SUCCESS, style(&repo).bold());
30
31 Ok(())
32}
33
34pub async fn handle_list_repos() -> Result<()> {
35 let config_manager = ConfigurationManager::new()?;
36 let config = config_manager.load_config().await?;
37
38 if config.github.repositories.is_empty() {
39 println!("{}", style("No repositories configured").yellow());
40 println!("{}", style("Use 'claude-code repo add <owner/repo>' to add a repository").dim());
41 return Ok(());
42 }
43
44 println!("{}", style("Configured Repositories:").bold());
45 println!();
46
47 for repo in &config.github.repositories {
48 println!(" {}", style(&repo.repo).cyan());
49 let secret_names: Vec<String> = config.credentials.field_mappings.values().cloned().collect();
50 println!(" Secrets: {}", style(secret_names.join(", ")).dim());
51 }
52
53 println!();
54 println!("{}", style("Tip: Use 'gh repo list' to see all your available repositories").dim());
55
56 Ok(())
57}