refactor(cli): move cmd/uncloud to cmd/uc, change the artifact name uncloud_* -> uc_*

This commit is contained in:
Pasha Sviderski
2026-06-26 20:07:15 +10:00
parent e01c8d3cc7
commit a5d73fe4d7
61 changed files with 45 additions and 55 deletions
+56
View File
@@ -0,0 +1,56 @@
package context
import (
"fmt"
"maps"
"slices"
"charm.land/lipgloss/v2"
"github.com/psviderski/uncloud/internal/cli"
"github.com/psviderski/uncloud/internal/cli/tui"
"github.com/spf13/cobra"
)
func NewListCommand() *cobra.Command {
cmd := &cobra.Command{
Use: "ls",
Aliases: []string{"list"},
Short: "List available cluster contexts.",
Args: cobra.NoArgs,
RunE: func(cmd *cobra.Command, args []string) error {
uncli := cmd.Context().Value("cli").(*cli.CLI)
return list(uncli)
},
}
return cmd
}
func list(uncli *cli.CLI) error {
if uncli.Config == nil {
return fmt.Errorf("context management is not available: Uncloud configuration file is not being used")
}
if len(uncli.Config.Contexts) == 0 {
fmt.Println("No contexts found")
return nil
}
contextNames := slices.Sorted(maps.Keys(uncli.Config.Contexts))
currentContext := uncli.Config.CurrentContext
t := tui.NewTable()
t.Headers("NAME", "CURRENT", "CONNECTIONS")
for _, name := range contextNames {
current := ""
if name == currentContext {
current = "✓"
}
connCount := len(uncli.Config.Contexts[name].Connections)
t.Row(name, current, fmt.Sprintf("%d", connCount))
}
lipgloss.Println(t)
return nil
}