Remove hooks from global agent settings. Supports: - `claude-code` → `~/.claude/settings.json` - `gemini-cli` → `~/.gemini/settings.json` - No `--agent` flag → removes from all agents that have global hooks
(&self)
| 211 | /// - `gemini-cli` → `~/.gemini/settings.json` |
| 212 | /// - No `--agent` flag → removes from all agents that have global hooks |
| 213 | fn run_global(&self) -> CliResult<()> { |
| 214 | use atomic_agent::hooks::claude_code::ClaudeCodeHook; |
| 215 | use atomic_agent::hooks::gemini_cli::GeminiCliHook; |
| 216 | |
| 217 | let agents: Vec<&str> = if let Some(ref name) = self.agent { |
| 218 | vec![name.as_str()] |
| 219 | } else { |
| 220 | // No agent specified — check all supported agents |
| 221 | let mut found = Vec::new(); |
| 222 | if ClaudeCodeHook::new().is_installed_global() { |
| 223 | found.push("claude-code"); |
| 224 | } |
| 225 | if GeminiCliHook::new().is_installed_global() { |
| 226 | found.push("gemini-cli"); |
| 227 | } |
| 228 | found |
| 229 | }; |
| 230 | |
| 231 | if agents.is_empty() { |
| 232 | println!("No global hooks installed."); |
| 233 | return Ok(()); |
| 234 | } |
| 235 | |
| 236 | let mut total_removed = 0; |
| 237 | |
| 238 | for agent_name in &agents { |
| 239 | match *agent_name { |
| 240 | "claude-code" => { |
| 241 | let hook = ClaudeCodeHook::new(); |
| 242 | if !hook.is_installed_global() { |
| 243 | continue; |
| 244 | } |
| 245 | match hook.uninstall_global() { |
| 246 | Ok(()) => { |
| 247 | print_success("Removed global hooks from ~/.claude/settings.json"); |
| 248 | total_removed += 1; |
| 249 | } |
| 250 | Err(e) => { |
| 251 | print_error(&format!( |
| 252 | "Failed to remove Claude Code global hooks: {}", |
| 253 | e |
| 254 | )); |
| 255 | } |
| 256 | } |
| 257 | } |
| 258 | "gemini-cli" => { |
| 259 | let hook = GeminiCliHook::new(); |
| 260 | if !hook.is_installed_global() { |
| 261 | continue; |
| 262 | } |
| 263 | match hook.uninstall_global() { |
| 264 | Ok(()) => { |
| 265 | print_success("Removed global hooks from ~/.gemini/settings.json"); |
| 266 | total_removed += 1; |
| 267 | } |
| 268 | Err(e) => { |
| 269 | print_error(&format!( |
| 270 | "Failed to remove Gemini CLI global hooks: {}", |
no test coverage detected