package app import ( "context" "github.com/spf13/cobra" cliflag "k8s.io/component-base/cli/flag" "k8s.io/component-base/term" "github.com/karmada-io/karmada/cmd/aggregated-apiserver/app/options" "github.com/karmada-io/karmada/pkg/sharedcli" "github.com/karmada-io/karmada/pkg/sharedcli/klogflag" "github.com/karmada-io/karmada/pkg/version/sharedcommand" ) // NewAggregatedApiserverCommand creates a *cobra.Command object with default parameters func NewAggregatedApiserverCommand(ctx context.Context) *cobra.Command { opts := options.NewOptions() cmd := &cobra.Command{ Use: "karmada-aggregated-apiserver", Long: `The karmada-aggregated-apiserver starts an aggregated server. It is responsible for registering the Cluster API and provides the ability to aggregate APIs, allowing users to access member clusters from the control plane directly.`, RunE: func(cmd *cobra.Command, args []string) error { if err := opts.Complete(); err != nil { return err } if err := opts.Validate(); err != nil { return err } if err := opts.Run(ctx); err != nil { return err } return nil }, } fss := cliflag.NamedFlagSets{} genericFlagSet := fss.FlagSet("generic") opts.AddFlags(genericFlagSet) // Set klog flags logsFlagSet := fss.FlagSet("logs") klogflag.Add(logsFlagSet) cmd.AddCommand(sharedcommand.NewCmdVersion("karmada-aggregated-apiserver")) cmd.Flags().AddFlagSet(genericFlagSet) cmd.Flags().AddFlagSet(logsFlagSet) cols, _, _ := term.TerminalSize(cmd.OutOrStdout()) sharedcli.SetUsageAndHelpFunc(cmd, fss, cols) return cmd }