From f5b0ae220a3697424719237dad773c4afde7ebc4 Mon Sep 17 00:00:00 2001 From: Shinto C V Date: Thu, 29 Feb 2024 14:59:20 +0530 Subject: [PATCH] [feat] Add nomad system garbage collection --- internal/tui/components/app/app.go | 19 ++++++++++++++++++- internal/tui/keymap/keymap.go | 5 +++++ internal/tui/nomad/pages.go | 6 ++++-- 3 files changed, 27 insertions(+), 3 deletions(-) diff --git a/internal/tui/components/app/app.go b/internal/tui/components/app/app.go index 82c5c0ca..9b1840f0 100644 --- a/internal/tui/components/app/app.go +++ b/internal/tui/components/app/app.go @@ -2,7 +2,6 @@ package app import ( "fmt" - "github.com/robinovitch61/wander/internal/fileio" "os" "os/exec" "path" @@ -15,6 +14,7 @@ import ( "github.com/hashicorp/nomad/api" "github.com/itchyny/gojq" "github.com/robinovitch61/wander/internal/dev" + "github.com/robinovitch61/wander/internal/fileio" "github.com/robinovitch61/wander/internal/tui/components/header" "github.com/robinovitch61/wander/internal/tui/components/page" "github.com/robinovitch61/wander/internal/tui/components/toast" @@ -510,6 +510,23 @@ func (m *Model) handleKeyMsg(msg tea.KeyMsg) tea.Cmd { } } + case key.Matches(msg, keymap.KeyMap.GarbageCollect): + err := m.client.System().GarbageCollect() + if err != nil { + // Create an error toast + toastMsg := fmt.Sprintf("Error performing system GC: %s", err) + toastStyle := style.ErrorToast + newToast := toast.New(toastMsg) + m.getCurrentPageModel().SetToast(newToast, toastStyle) + } else { + // Create a success toast + toastMsg := "System garbage collection completed successfully." + toastStyle := style.SuccessToast + newToast := toast.New(toastMsg) + m.getCurrentPageModel().SetToast(newToast, toastStyle) + } + return nil + case key.Matches(msg, keymap.KeyMap.Reload): if m.currentPage.DoesReload() { m.getCurrentPageModel().SetLoading(true) diff --git a/internal/tui/keymap/keymap.go b/internal/tui/keymap/keymap.go index 97e7306b..a84da34b 100644 --- a/internal/tui/keymap/keymap.go +++ b/internal/tui/keymap/keymap.go @@ -26,6 +26,7 @@ type keyMap struct { Spec key.Binding Wrap key.Binding AdminMenu key.Binding + GarbageCollect key.Binding } var KeyMap = keyMap{ @@ -113,4 +114,8 @@ var KeyMap = keyMap{ key.WithKeys("X"), key.WithHelp("X", "admin"), ), + GarbageCollect: key.NewBinding( + key.WithKeys("c"), + key.WithHelp("c", "system gc"), + ), } diff --git a/internal/tui/nomad/pages.go b/internal/tui/nomad/pages.go index 99636688..b6a974ea 100644 --- a/internal/tui/nomad/pages.go +++ b/internal/tui/nomad/pages.go @@ -2,6 +2,9 @@ package nomad import ( "fmt" + "strings" + "time" + "github.com/charmbracelet/bubbles/key" tea "github.com/charmbracelet/bubbletea" "github.com/hashicorp/nomad/api" @@ -11,8 +14,6 @@ import ( "github.com/robinovitch61/wander/internal/tui/formatter" "github.com/robinovitch61/wander/internal/tui/keymap" "github.com/robinovitch61/wander/internal/tui/style" - "strings" - "time" ) type Page int8 @@ -507,6 +508,7 @@ func GetPageKeyHelp( firstRow = append(firstRow, keymap.KeyMap.Reload) } } + firstRow = append(firstRow, keymap.KeyMap.GarbageCollect) viewportKeyMap := viewport.GetKeyMap() secondRow := []key.Binding{viewportKeyMap.Save, keymap.KeyMap.Wrap}