(ctx context.Context, event keyboard.KeyEvent, project *types.Project, options api.UpOptions)
| 311 | } |
| 312 | |
| 313 | func (lk *LogKeyboard) HandleKeyEvents(ctx context.Context, event keyboard.KeyEvent, project *types.Project, options api.UpOptions) { |
| 314 | switch kRune := event.Rune; kRune { |
| 315 | case 'd': |
| 316 | lk.clearNavigationMenu() |
| 317 | lk.Detach() |
| 318 | case 'v': |
| 319 | lk.openDockerDesktop(ctx, project) |
| 320 | case 'w': |
| 321 | if lk.Watch == nil { |
| 322 | // we try to open watch docs if DD is installed |
| 323 | if lk.IsDockerDesktopActive { |
| 324 | lk.openDDWatchDocs(ctx, project) |
| 325 | } |
| 326 | // either way we mark menu/watch as an error |
| 327 | go func() { |
| 328 | _ = tracing.EventWrapFuncForErrGroup(ctx, "menu/watch", tracing.SpanOptions{}, |
| 329 | func(ctx context.Context) error { |
| 330 | err := fmt.Errorf("watch is not yet configured. Learn more: %s", ansiColor(CYAN, "https://docs.docker.com/compose/file-watch/")) |
| 331 | lk.keyboardError("Watch", err) |
| 332 | return err |
| 333 | })() |
| 334 | }() |
| 335 | } |
| 336 | lk.ToggleWatch(ctx, options) |
| 337 | case 'o': |
| 338 | lk.openDDComposeUI(ctx, project) |
| 339 | case 'l': |
| 340 | lk.openDDLogsView(ctx, project) |
| 341 | } |
| 342 | switch key := event.Key; key { |
| 343 | case keyboard.KeyCtrlC: |
| 344 | _ = keyboard.Close() |
| 345 | lk.clearNavigationMenu() |
| 346 | showCursor() |
| 347 | |
| 348 | lk.logLevel = NONE |
| 349 | // will notify main thread to kill and will handle gracefully |
| 350 | lk.signalChannel <- syscall.SIGINT |
| 351 | case keyboard.KeyCtrlZ: |
| 352 | handleCtrlZ() |
| 353 | case keyboard.KeyEnter: |
| 354 | newLine() |
| 355 | lk.printNavigationMenu() |
| 356 | } |
| 357 | } |
| 358 | |
| 359 | func (lk *LogKeyboard) EnableWatch(enabled bool, watcher Feature) { |
| 360 | lk.Watch = &KeyboardWatch{ |
no test coverage detected