summary history files

backend/internal/cli/cluster.go
package cli

import (
	"encoding/json"
	"fmt"
	"kd/backend/services"

	"github.com/spf13/cobra"
	"github.com/spf13/viper"
)

func clusterCmd(cli *cli) *cobra.Command {
	var cmd = &cobra.Command{
		Use: "cluster",
	}
	cmd.AddCommand(clusterGetDeploymentsCmd(cli))
	cmd.AddCommand(clusterGetPodsCmd(cli))
	return cmd
}

func clusterGetDeploymentsCmd(cli *cli) *cobra.Command {
	var flags struct {
		contextName string
		namespace   string
	}

	var cmd = &cobra.Command{
		Use: "get-deployments",
		PreRun: func(cmd *cobra.Command, args []string) {
			_ = viper.BindPFlag("context-name", cmd.Flags().Lookup("context-name"))
			_ = viper.BindPFlag("namespace", cmd.Flags().Lookup("namespace"))
		},
		RunE: func(cmd *cobra.Command, args []string) error {
			clusterSvc := services.Cluster()
			clusterSvc.Start(cmd.Context(), cli.conf, cli.logger)
			resp := clusterSvc.GetDeployments(flags.contextName, flags.namespace)
			fmt.Printf("resp: %#+v\n", resp)
			return nil
		},
	}

	cmd.Flags().StringVar(&flags.contextName, "context-name", "", "context-name")
	cmd.Flags().StringVar(&flags.namespace, "namespace", "", "namespace")
	cmd.MarkFlagRequired("context-name")

	return cmd
}

func clusterGetPodsCmd(cli *cli) *cobra.Command {
	var flags struct {
		contextName string
		namespace   string
	}

	var cmd = &cobra.Command{
		Use: "get-pods",
		PreRun: func(cmd *cobra.Command, args []string) {
			_ = viper.BindPFlag("context-name", cmd.Flags().Lookup("context-name"))
			_ = viper.BindPFlag("namespace", cmd.Flags().Lookup("namespace"))
		},
		RunE: func(cmd *cobra.Command, args []string) error {
			clusterSvc := services.Cluster()
			clusterSvc.Start(cmd.Context(), cli.conf, cli.logger)
			resp := clusterSvc.GetPods(flags.contextName, flags.namespace)
			for _, pod := range resp.Data {
				b, err := json.MarshalIndent(pod, "", "    ")
				if err != nil {
					return err
				}
				fmt.Println(string(b))
			}
			return nil
		},
	}

	cmd.Flags().StringVar(&flags.contextName, "context-name", "", "context-name")
	cmd.Flags().StringVar(&flags.namespace, "namespace", "", "namespace")
	cmd.MarkFlagRequired("context-name")

	return cmd
}