package cmd

import (
	"github.com/spf13/cobra"
	"github.com/tidbcloud/auto-deploy/internal"
)

var registerDefaultSkuArgs = internal.RegisterDefaultSkuArgs{}

// registerDefaultSkuCmd represents the register-default-sku command
var registerDefaultSkuCmd = &cobra.Command{
	Use:   "regiser-default-sku",
	Short: "Register default skus for region",
	Long: `Register default skus for region.
For example:
deploy-cli regiser-default-sku \
  --instance dev
  --cloud aws
  --region ap-northeast-1
`,
	RunE: func(cmd *cobra.Command, _ []string) error {
		registerDefaultSkuArgs.Env = instance
		return internal.RegisterDefaultSku(registerDefaultSkuArgs)
	},
}

func init() {
	rootCmd.AddCommand(registerDefaultSkuCmd)
	registerDefaultSkuCmd.Flags().StringVar(&registerDefaultSkuArgs.Provider, "cloud", "", "Cloud Provider: aws, gcp or azure")
	registerDefaultSkuCmd.Flags().StringVar(&registerDefaultSkuArgs.Region, "region", "", "Cloud region (location), for example: us-west-2, eu-central-1")
	registerDefaultSkuCmd.Flags().StringVar(&registerDefaultSkuArgs.SpusCollectionName, "spus-collection-name", "", "SPUs collection name")
	registerDefaultSkuCmd.Flags().StringVar(&registerDefaultSkuArgs.SkuCollectionName, "sku-collection-name", "", "SKUs collection name")
	registerDefaultSkuCmd.Flags().BoolVar(&registerDefaultSkuArgs.Recreate, "recreate", false, "If recreate the existing default sku")

	// mark required flag
	for _, flag := range []string{"cloud", "region", "spus-collection-name", "sku-collection-name"} {
		registerDefaultSkuCmd.MarkFlagRequired(flag)
	}
}
