package proxy

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

var (
	AddAccountCmd = &cobra.Command{
		Use:   "proxy-add-account",
		Short: "Adds account to proxy contract",
		PreRun: func(cmd *cobra.Command, _ []string) {
			_ = viper.BindPFlag(commonflags.AlphabetWalletsFlag, cmd.Flags().Lookup(commonflags.AlphabetWalletsFlag))
			_ = viper.BindPFlag(commonflags.EndpointFlag, cmd.Flags().Lookup(commonflags.EndpointFlag))
		},
		Run: addProxyAccount,
	}
	RemoveAccountCmd = &cobra.Command{
		Use:   "proxy-remove-account",
		Short: "Remove from proxy contract",
		PreRun: func(cmd *cobra.Command, _ []string) {
			_ = viper.BindPFlag(commonflags.AlphabetWalletsFlag, cmd.Flags().Lookup(commonflags.AlphabetWalletsFlag))
			_ = viper.BindPFlag(commonflags.EndpointFlag, cmd.Flags().Lookup(commonflags.EndpointFlag))
		},
		Run: removeProxyAccount,
	}
)

func initProxyAddAccount() {
	AddAccountCmd.Flags().StringP(commonflags.EndpointFlag, commonflags.EndpointFlagShort, "", commonflags.EndpointFlagDesc)
	AddAccountCmd.Flags().String(accountAddressFlag, "", "Wallet address string")
	AddAccountCmd.Flags().String(commonflags.AlphabetWalletsFlag, "", commonflags.AlphabetWalletsFlagDesc)
}

func initProxyRemoveAccount() {
	RemoveAccountCmd.Flags().StringP(commonflags.EndpointFlag, commonflags.EndpointFlagShort, "", commonflags.EndpointFlagDesc)
	RemoveAccountCmd.Flags().String(accountAddressFlag, "", "Wallet address string")
	RemoveAccountCmd.Flags().String(commonflags.AlphabetWalletsFlag, "", commonflags.AlphabetWalletsFlagDesc)
}

func init() {
	initProxyAddAccount()
	initProxyRemoveAccount()
}