| 280 | } |
| 281 | |
| 282 | func daemonStatusFromDeps(ctx context.Context, deps commandDeps, runtime *runtimeContext) (DaemonStatus, error) { |
| 283 | client, err := clientFromDeps(deps) |
| 284 | if err != nil { |
| 285 | return DaemonStatus{}, err |
| 286 | } |
| 287 | status, statusErr := client.DaemonStatus(ctx) |
| 288 | if statusErr == nil { |
| 289 | return status, nil |
| 290 | } |
| 291 | if !daemonStatusCanFallback(statusErr) { |
| 292 | return DaemonStatus{}, statusErr |
| 293 | } |
| 294 | |
| 295 | info, running, err := daemonInfo(runtime.HomePaths, deps) |
| 296 | if err != nil { |
| 297 | return DaemonStatus{}, err |
| 298 | } |
| 299 | if !running { |
| 300 | return daemonStatusWithState(runtime, info, "stopped"), nil |
| 301 | } |
| 302 | return daemonStatusWithState(runtime, info, "starting"), nil |
| 303 | } |
| 304 | |
| 305 | func daemonStatusCanFallback(err error) bool { |
| 306 | return isDaemonUnavailableTransportError(err) |