(deps commandDeps)
| 104 | } |
| 105 | |
| 106 | func newDaemonStopCommand(deps commandDeps) *cobra.Command { |
| 107 | return &cobra.Command{ |
| 108 | Use: "stop", |
| 109 | Short: "Stop the AGH daemon", |
| 110 | Example: ` # Ask the running daemon to stop |
| 111 | agh daemon stop`, |
| 112 | RunE: func(cmd *cobra.Command, _ []string) error { |
| 113 | runtime, err := loadRuntimeContext(deps) |
| 114 | if err != nil { |
| 115 | return err |
| 116 | } |
| 117 | |
| 118 | info, running, err := daemonInfo(runtime.HomePaths, deps) |
| 119 | if err != nil { |
| 120 | return err |
| 121 | } |
| 122 | if !running { |
| 123 | return errors.New("cli: daemon is not running") |
| 124 | } |
| 125 | |
| 126 | if err := deps.signalProcess(info.PID, syscall.SIGTERM); err != nil { |
| 127 | return err |
| 128 | } |
| 129 | |
| 130 | status, err := waitForDaemonStop(cmd.Context(), deps, runtime, info) |
| 131 | if err != nil { |
| 132 | return err |
| 133 | } |
| 134 | return writeCommandOutput(cmd, daemonStatusBundle(status, deps.now)) |
| 135 | }, |
| 136 | } |
| 137 | } |
| 138 | |
| 139 | func runDaemonForeground(ctx context.Context, deps commandDeps) error { |
| 140 | runtime, err := loadRuntimeContext(deps) |
no test coverage detected