refactor: updated cache editor implementation

This commit is contained in:
David Allen 2025-06-16 16:19:43 -06:00
parent b8431a84af
commit f1f8e4f3fb
Signed by: towk
GPG key ID: 0430CDBE22619155
4 changed files with 25 additions and 63 deletions

View file

@ -270,6 +270,31 @@ var cacheInfoCmd = &cobra.Command{
}, },
} }
var cacheEditCmd = &cobra.Command{
Use: "edit",
Short: "Modify cache data either interactively or non-interactively.",
Run: func(cmd *cobra.Command, args []string) {
// start the interactive editor
if interactive {
p := tea.NewProgram(cache.NewModel())
if _, err := p.Run(); err != nil {
fmt.Printf("failed to start the cache editor: %v", err)
os.Exit(1)
}
} else {
// only edit data with arguments
}
},
}
var cacheInfoCmd = &cobra.Command{
Use: "info",
Short: "Show cache-related information.",
Run: func(cmd *cobra.Command, args []string) {
printCacheInfo(cacheOutputFormat)
},
}
func init() { func init() {
cacheEditCmd.Flags().StringVar(&host, "host", "", "Set the new host value.") cacheEditCmd.Flags().StringVar(&host, "host", "", "Set the new host value.")
cacheEditCmd.Flags().IntSliceVar(&ports, "port", nil, "Set the new port values as comma-separated list.") cacheEditCmd.Flags().IntSliceVar(&ports, "port", nil, "Set the new port values as comma-separated list.")

View file

@ -1,48 +0,0 @@
package cache
import (
"github.com/charmbracelet/bubbles/table"
tea "github.com/charmbracelet/bubbletea"
"github.com/charmbracelet/lipgloss"
)
var baseStyle = lipgloss.NewStyle().
BorderStyle(lipgloss.NormalBorder()).
BorderForeground(lipgloss.Color("240"))
type Model struct {
selected int
Table table.Model
}
func (m Model) Init() tea.Cmd { return nil }
func (m Model) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
var cmd tea.Cmd
switch msg := msg.(type) {
case tea.WindowSizeMsg:
// m.Table = m.Table.Width(msg.Width)
// m.Table = m.Table.Height(msg.Height)
case tea.KeyMsg:
switch msg.String() {
case "esc":
if m.Table.Focused() {
m.Table.Blur()
} else {
m.Table.Focus()
}
case "q", "ctrl+c":
return m, tea.Quit
case "enter":
return m, tea.Batch(
tea.Printf("Selected host '%s'", m.Table.SelectedRow()[0]),
)
}
}
m.Table, cmd = m.Table.Update(msg)
return m, cmd
}
func (m Model) View() string {
return baseStyle.Render(m.Table.View()) + "\n"
}

View file

@ -27,21 +27,6 @@ func PrintRemoteAssets(data []RemoteAsset, format string) {
} }
} }
func PrintMapWithFormat(data map[string]any, format string) {
switch strings.ToLower(format) {
case "json":
util.PrintJSON(data)
case "yaml":
util.PrintYAML(data)
case "list":
for k, v := range data {
fmt.Printf("%s: %v\n", k, v)
}
default:
log.Error().Msg("PrintMapWithFormat: unrecognized format")
}
}
func ListDrives(cc *crawler.CrawlerConfig) ([]*redfish.Drive, error) { func ListDrives(cc *crawler.CrawlerConfig) ([]*redfish.Drive, error) {
user, err := cc.GetUserPass() user, err := cc.GetUserPass()
if err != nil { if err != nil {