From 223b7fcd8374e81cc027ea6dcc9fff0f2635e918 Mon Sep 17 00:00:00 2001 From: Rob Watson Date: Sun, 9 Mar 2025 18:34:01 +0100 Subject: [PATCH] feat: copy config file path --- app/app.go | 2 ++ main.go | 1 + terminal/terminal.go | 35 +++++++++++++++++++++++++++++++---- 3 files changed, 34 insertions(+), 4 deletions(-) diff --git a/app/app.go b/app/app.go index eab2077..df8d832 100644 --- a/app/app.go +++ b/app/app.go @@ -21,6 +21,7 @@ type RunParams struct { DockerClient container.DockerClient Screen tcell.Screen ClipboardAvailable bool + ConfigFilePath string BuildInfo domain.BuildInfo Logger *slog.Logger } @@ -33,6 +34,7 @@ func Run(ctx context.Context, params RunParams) error { ui, err := terminal.StartUI(ctx, terminal.StartParams{ Screen: params.Screen, ClipboardAvailable: params.ClipboardAvailable, + ConfigFilePath: params.ConfigFilePath, BuildInfo: params.BuildInfo, Logger: logger.With("component", "ui"), }) diff --git a/main.go b/main.go index 6e5b513..a896f4a 100644 --- a/main.go +++ b/main.go @@ -85,6 +85,7 @@ func run(ctx context.Context) error { Config: cfg, DockerClient: dockerClient, ClipboardAvailable: clipboardAvailable, + ConfigFilePath: configService.Path(), BuildInfo: domain.BuildInfo{ GoVersion: buildInfo.GoVersion, Version: buildInfo.Main.Version, diff --git a/terminal/terminal.go b/terminal/terminal.go index 867a1c5..b8a3675 100644 --- a/terminal/terminal.go +++ b/terminal/terminal.go @@ -62,6 +62,7 @@ type StartParams struct { ChanSize int Logger *slog.Logger ClipboardAvailable bool + ConfigFilePath string BuildInfo domain.BuildInfo Screen tcell.Screen } @@ -135,7 +136,8 @@ func StartUI(ctx context.Context, params StartParams) (*UI, error) { aboutView.SetBorder(true) aboutView.SetTitle("Actions") aboutView.AddItem(tview.NewTextView().SetText("[Space] Toggle destination"), 1, 0, false) - aboutView.AddItem(tview.NewTextView().SetText("[C] Copy ingress RTMP URL"), 1, 0, false) + aboutView.AddItem(tview.NewTextView().SetText("[u] Copy ingress RTMP URL"), 1, 0, false) + aboutView.AddItem(tview.NewTextView().SetText("[c] Copy config file path"), 1, 0, false) aboutView.AddItem(tview.NewTextView().SetText("[?] About"), 1, 0, false) sidebar.AddItem(aboutView, 0, 1, false) @@ -184,8 +186,10 @@ func StartUI(ctx context.Context, params StartParams) (*UI, error) { switch event.Rune() { case ' ': ui.toggleDestination() - case 'c', 'C': + case 'u', 'U': ui.copySourceURLToClipboard(params.ClipboardAvailable) + case 'c', 'C': + ui.copyConfigFilePathToClipboard(params.ClipboardAvailable, params.ConfigFilePath) case '?': ui.showAbout() } @@ -522,9 +526,32 @@ func (ui *UI) toggleDestination() { func (ui *UI) copySourceURLToClipboard(clipboardAvailable bool) { var text string + + url := ui.sourceViews.url.GetText(true) if clipboardAvailable { - clipboard.Write(clipboard.FmtText, []byte(ui.sourceViews.url.GetText(true))) - text = "Ingress URL copied to clipboard" + clipboard.Write(clipboard.FmtText, []byte(url)) + text = "Ingress URL copied to clipboard:\n\n" + url + } else { + text = "Copy to clipboard not available:\n\n" + url + } + + ui.showModal( + modalGroupClipboard, + text, + []string{"Ok"}, + nil, + ) +} + +func (ui *UI) copyConfigFilePathToClipboard(clipboardAvailable bool, configFilePath string) { + var text string + if clipboardAvailable { + if configFilePath != "" { + clipboard.Write(clipboard.FmtText, []byte(configFilePath)) + text = "Configuration file path copied to clipboard:\n\n" + configFilePath + } else { + text = "Configuration file path not set" + } } else { text = "Copy to clipboard not available" }