diff --git a/cli/cli/commands/cluster/ls/ls.go b/cli/cli/commands/cluster/ls/ls.go index 403466b74e..71eb0a880d 100644 --- a/cli/cli/commands/cluster/ls/ls.go +++ b/cli/cli/commands/cluster/ls/ls.go @@ -32,17 +32,10 @@ var LsCmd = &lowlevel.LowlevelKurtosisCommand{ } func run(ctx context.Context, flags *flags.ParsedFlags, args *args.ParsedArgs) error { - kurtosisConfigStore := kurtosis_config.GetKurtosisConfigStore() - configProvider := kurtosis_config.NewKurtosisConfigProvider(kurtosisConfigStore) - kurtosisConfig, err := configProvider.GetOrInitializeConfig() + clusterList, err := GetClusterList() if err != nil { - return stacktrace.Propagate(err, "Failed to get or initialize Kurtosis configuration") - } - var clusterList []string - for clusterName := range kurtosisConfig.GetKurtosisClusters() { - clusterList = append(clusterList, clusterName) + return stacktrace.Propagate(err, "Failed to get Kurtosis cluster list") } - sort.Strings(clusterList) tablePrinter := output_printers.NewTablePrinter(clusterCurrentColumnHeader, clusterNameColumnHeader) @@ -60,6 +53,21 @@ func run(ctx context.Context, flags *flags.ParsedFlags, args *args.ParsedArgs) e return nil } +func GetClusterList() ([]string, error) { + kurtosisConfigStore := kurtosis_config.GetKurtosisConfigStore() + configProvider := kurtosis_config.NewKurtosisConfigProvider(kurtosisConfigStore) + kurtosisConfig, err := configProvider.GetOrInitializeConfig() + if err != nil { + return []string{}, stacktrace.Propagate(err, "Failed to get or initialize Kurtosis configuration") + } + var clusterList []string + for clusterName := range kurtosisConfig.GetKurtosisClusters() { + clusterList = append(clusterList, clusterName) + } + sort.Strings(clusterList) + return clusterList, nil +} + func isCurrentCluster(clusterName string) bool { clusterSettingStore := kurtosis_cluster_setting.GetKurtosisClusterSettingStore() currentClusterName, _ := clusterSettingStore.GetClusterSetting() diff --git a/cli/cli/commands/cluster/set/set.go b/cli/cli/commands/cluster/set/set.go index f6c1c35aa8..208b8c6fd5 100644 --- a/cli/cli/commands/cluster/set/set.go +++ b/cli/cli/commands/cluster/set/set.go @@ -6,6 +6,7 @@ import ( "github.com/kurtosis-tech/kurtosis/cli/cli/command_framework/lowlevel/args" "github.com/kurtosis-tech/kurtosis/cli/cli/command_framework/lowlevel/flags" "github.com/kurtosis-tech/kurtosis/cli/cli/command_str_consts" + "github.com/kurtosis-tech/kurtosis/cli/cli/commands/cluster/ls" "github.com/kurtosis-tech/kurtosis/cli/cli/defaults" "github.com/kurtosis-tech/kurtosis/cli/cli/helpers/engine_manager" "github.com/kurtosis-tech/kurtosis/cli/cli/helpers/kurtosis_config_getter" @@ -33,7 +34,7 @@ var SetCmd = &lowlevel.LowlevelKurtosisCommand{ IsOptional: false, DefaultValue: nil, IsGreedy: false, - ArgCompletionProvider: nil, + ArgCompletionProvider: args.NewManualCompletionsProvider(getCompletions), ValidationFunc: nil, }, }, @@ -42,6 +43,14 @@ var SetCmd = &lowlevel.LowlevelKurtosisCommand{ PostValidationAndRunFunc: nil, } +func getCompletions(ctx context.Context, flags *flags.ParsedFlags, previousArgs *args.ParsedArgs) ([]string, error) { + clusterList, err := ls.GetClusterList() + if err != nil { + return nil, stacktrace.Propagate(err, "Failed to get Kurtosis cluster list") + } + return clusterList, nil +} + func run(ctx context.Context, flags *flags.ParsedFlags, args *args.ParsedArgs) error { clusterName, err := args.GetNonGreedyArg(clusterNameArgKey) if err != nil {