package host import ( "fmt" "os" "os/exec" "github.com/bdw/deploy/internal/state" "github.com/spf13/cobra" ) var sshCmd = &cobra.Command{ Use: "ssh", Short: "Open interactive SSH session", RunE: runSSH, } func runSSH(cmd *cobra.Command, args []string) error { st, err := state.Load() if err != nil { return fmt.Errorf("error loading state: %w", err) } host, _ := cmd.Flags().GetString("host") if host == "" { host = st.GetDefaultHost() } if host == "" { return fmt.Errorf("--host is required (no default host set)") } sshCmd := exec.Command("ssh", host) sshCmd.Stdin = os.Stdin sshCmd.Stdout = os.Stdout sshCmd.Stderr = os.Stderr if err := sshCmd.Run(); err != nil { if exitErr, ok := err.(*exec.ExitError); ok { os.Exit(exitErr.ExitCode()) } return err } return nil }