blob: 88467bea41f7d8fca46b5aca69b975219b2bb9f7 [file] [log] [blame]
package commands
import (
"fmt"
"github.com/spf13/cobra"
)
var cleanupClonesCmd = &cobra.Command{
Use: "cleanup-clones",
Short: "Clean up all agent Git clones",
Long: `Remove all agent Git clone directories to free up disk space.
This command will:
- Stop any running agents
- Remove all agent-specific Git clone directories
- Free up disk space used by clones
Examples:
staff cleanup-clones`,
RunE: runCleanupClones,
}
// Note: Command is added in root.go init() function
func runCleanupClones(cmd *cobra.Command, args []string) error {
if agentManager == nil {
return fmt.Errorf("agent manager not initialized")
}
// Stop all running agents first
fmt.Println("Stopping all running agents...")
for _, agent := range cfg.Agents {
if agentManager.IsAgentRunning(agent.Name) {
if err := agentManager.StopAgent(agent.Name); err != nil {
fmt.Printf("Warning: Failed to stop agent %s: %v\n", agent.Name, err)
} else {
fmt.Printf("Stopped agent: %s\n", agent.Name)
}
}
}
// Cleanup all clones by closing the agent manager
// This will trigger the cleanup automatically
if err := agentManager.Close(); err != nil {
return fmt.Errorf("failed to cleanup agent clones: %w", err)
}
fmt.Println("✅ All agent Git clones have been cleaned up successfully!")
fmt.Println("💡 Clones will be recreated automatically when agents start working on tasks")
return nil
}