package config

import (
	"git.frostfs.info/TrueCloudLab/frostfs-node/cmd/frostfs-adm/internal/commonflags"
	"github.com/spf13/cobra"
	"github.com/spf13/viper"
)

var (
	SetCmd = &cobra.Command{
		Use:                   "set-config key1=val1 [key2=val2 ...]",
		DisableFlagsInUseLine: true,
		Short:                 "Add/update global config value in the FrostFS network",
		PreRun: func(cmd *cobra.Command, _ []string) {
			_ = viper.BindPFlag(commonflags.AlphabetWalletsFlag, cmd.Flags().Lookup(commonflags.AlphabetWalletsFlag))
			_ = viper.BindPFlag(commonflags.EndpointFlag, cmd.Flags().Lookup(commonflags.EndpointFlag))
		},
		Args: cobra.MinimumNArgs(1),
		RunE: SetConfigCmd,
	}

	DumpCmd = &cobra.Command{
		Use:   "dump-config",
		Short: "Dump FrostFS network config",
		PreRun: func(cmd *cobra.Command, _ []string) {
			_ = viper.BindPFlag(commonflags.EndpointFlag, cmd.Flags().Lookup(commonflags.EndpointFlag))
		},
		RunE: dumpNetworkConfig,
	}
)

func initSetConfigCmd() {
	SetCmd.Flags().String(commonflags.AlphabetWalletsFlag, "", commonflags.AlphabetWalletsFlagDesc)
	SetCmd.Flags().StringP(commonflags.EndpointFlag, commonflags.EndpointFlagShort, "", commonflags.EndpointFlagDesc)
	SetCmd.Flags().Bool(forceConfigSet, false, "Force setting not well-known configuration key")
	SetCmd.Flags().String(commonflags.LocalDumpFlag, "", "Path to the blocks dump file")
}

func initDumpNetworkConfigCmd() {
	DumpCmd.Flags().StringP(commonflags.EndpointFlag, commonflags.EndpointFlagShort, "", commonflags.EndpointFlagDesc)
}

func init() {
	initSetConfigCmd()
	initDumpNetworkConfigCmd()
}