MCPcopy Create free account
hub / github.com/atomicdotdev/atomic / run_global

Method run_global

atomic-cli/src/commands/agent/enable.rs:316–482  ·  view source on GitHub ↗

Install hooks globally to the agent's user-level settings. Supports: - `claude-code` → `~/.claude/settings.json` - `gemini-cli` → `~/.gemini/settings.json` - `agy` → `~/.gemini/config/plugins/atomic/hooks.json` (plugin) - `codex` → `~/.codex/hooks.json`

(&self)

Source from the content-addressed store, hash-verified

314 /// - `agy` → `~/.gemini/config/plugins/atomic/hooks.json` (plugin)
315 /// - `codex` → `~/.codex/hooks.json`
316 fn run_global(&self) -> CliResult<()> {
317 use atomic_agent::hooks::agy::AgyHook;
318 use atomic_agent::hooks::claude_code::ClaudeCodeHook;
319 use atomic_agent::hooks::codex::CodexHook;
320 use atomic_agent::hooks::gemini_cli::GeminiCliHook;
321
322 let agent_name = self.agent.as_deref().unwrap_or("claude-code");
323
324 match agent_name {
325 "claude-code" => {
326 let hook = ClaudeCodeHook::new();
327
328 if !self.force && hook.is_installed_global() {
329 print_success("Global hooks already installed in ~/.claude/settings.json.");
330 println!(" Use --force to reinstall.");
331 return Ok(());
332 }
333
334 match hook.install_global(self.force) {
335 Ok(count) if count > 0 => {
336 print_success(&format!(
337 "Installed {} global hook{} for Claude Code",
338 count,
339 if count == 1 { "" } else { "s" },
340 ));
341 println!();
342 println!("Hooks written to: ~/.claude/settings.json");
343 println!();
344 println!("Every Claude Code session in a project with .atomic/ will now:");
345 println!(" • Record each turn as an Atomic change with full provenance");
346 println!(" • Track session metadata (turn number, timing, files)");
347 println!(" • Create attestations at session end");
348 }
349 Ok(_) => {
350 print_success("Global hooks already up to date.");
351 }
352 Err(e) => {
353 print_error(&format!("Failed to install global hooks: {}", e));
354 }
355 }
356 }
357
358 "gemini-cli" => {
359 let hook = GeminiCliHook::new();
360
361 if !self.force && hook.is_installed_global() {
362 print_success("Global hooks already installed in ~/.gemini/settings.json.");
363 println!(" Use --force to reinstall.");
364 return Ok(());
365 }
366
367 match hook.install_global(self.force) {
368 Ok(count) if count > 0 => {
369 print_success(&format!(
370 "Installed {} global hook{} for Gemini CLI",
371 count,
372 if count == 1 { "" } else { "s" },
373 ));

Callers 1

runMethod · 0.45

Calls 5

print_successFunction · 0.85
print_errorFunction · 0.85
print_warningFunction · 0.85
is_installed_globalMethod · 0.45
install_globalMethod · 0.45

Tested by

no test coverage detected