package main import ( "fmt" "github.com/bdw/deploy/internal/ssh" "github.com/bdw/deploy/internal/state" "github.com/spf13/cobra" ) var restartCmd = &cobra.Command{ Use: "restart ", Short: "Restart a deployment", Args: cobra.ExactArgs(1), RunE: runRestart, } func runRestart(cmd *cobra.Command, args []string) error { name := args[0] st, err := state.Load() if err != nil { return fmt.Errorf("error loading state: %w", err) } host := hostFlag if host == "" { host = st.GetDefaultHost() } if host == "" { return fmt.Errorf("--host is required") } app, err := st.GetApp(host, name) if err != nil { return err } if app.Type != "app" { return fmt.Errorf("restart is only available for apps, not static sites") } client, err := ssh.Connect(host) if err != nil { return fmt.Errorf("error connecting to VPS: %w", err) } defer client.Close() fmt.Printf("Restarting %s...\n", name) if _, err := client.RunSudo(fmt.Sprintf("systemctl restart %s", name)); err != nil { return fmt.Errorf("error restarting service: %w", err) } fmt.Println("Service restarted successfully") return nil }