From 3fbba6d540aae99ebaa2e67ee154247ee1bbc97d Mon Sep 17 00:00:00 2001 From: Pasha Sviderski Date: Fri, 21 Nov 2025 18:11:20 +1000 Subject: [PATCH] chore: sort services in 'uc ls' output by name --- cmd/uncloud/service/ls.go | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/cmd/uncloud/service/ls.go b/cmd/uncloud/service/ls.go index c004d951..ed8487f0 100644 --- a/cmd/uncloud/service/ls.go +++ b/cmd/uncloud/service/ls.go @@ -4,10 +4,12 @@ import ( "context" "fmt" "os" + "slices" "strings" "text/tabwriter" "github.com/psviderski/uncloud/internal/cli" + "github.com/psviderski/uncloud/pkg/api" "github.com/spf13/cobra" ) @@ -36,15 +38,15 @@ func list(ctx context.Context, uncli *cli.CLI) error { return fmt.Errorf("list services: %w", err) } - serviceNames := make(map[string]struct{}, len(services)) + // Sort services by name. haveDuplicateNames := false - for _, svc := range services { - if _, exists := serviceNames[svc.Name]; exists { + slices.SortFunc(services, func(a, b api.Service) int { + if a.Name == b.Name { haveDuplicateNames = true - break + return strings.Compare(a.ID, b.ID) } - serviceNames[svc.Name] = struct{}{} - } + return strings.Compare(a.Name, b.Name) + }) // Print the list of services in a table format. tw := tabwriter.NewWriter(os.Stdout, 0, 0, 3, ' ', 0)