github.com/ChainSafe/chainbridge-core@v1.4.2/chains/evm/cli/cli.go (about)

     1  package cli
     2  
     3  import (
     4  	"github.com/ChainSafe/chainbridge-core/chains/evm/cli/account"
     5  	"github.com/ChainSafe/chainbridge-core/chains/evm/cli/admin"
     6  	"github.com/ChainSafe/chainbridge-core/chains/evm/cli/bridge"
     7  	"github.com/ChainSafe/chainbridge-core/chains/evm/cli/centrifuge"
     8  	"github.com/ChainSafe/chainbridge-core/chains/evm/cli/deploy"
     9  	"github.com/ChainSafe/chainbridge-core/chains/evm/cli/erc20"
    10  	"github.com/ChainSafe/chainbridge-core/chains/evm/cli/erc721"
    11  	"github.com/ChainSafe/chainbridge-core/chains/evm/cli/logger"
    12  	"github.com/ChainSafe/chainbridge-core/chains/evm/cli/utils"
    13  	"github.com/spf13/cobra"
    14  	"github.com/spf13/viper"
    15  )
    16  
    17  // BindCLI is public function to be invoked in example-app's cobra command
    18  func BindCLI(cli *cobra.Command) {
    19  	cli.AddCommand(EvmRootCLI)
    20  }
    21  
    22  var EvmRootCLI = &cobra.Command{
    23  	Use:   "evm-cli",
    24  	Short: "EVM CLI",
    25  	Long:  "Root command for starting EVM CLI",
    26  	PreRun: func(cmd *cobra.Command, args []string) {
    27  		logger.LoggerMetadata(cmd.Name(), cmd.Flags())
    28  	},
    29  	// empty Run function to enable cobra PreRun - without this PreRun is never executed
    30  	Run: func(cmd *cobra.Command, args []string) {},
    31  }
    32  
    33  var (
    34  	// Flags for all EVM CLI commands
    35  	UrlFlagName                = "url"
    36  	GasLimitFlagName           = "gas-limit"
    37  	GasPriceFlagName           = "gas-price"
    38  	NetworkIdFlagName          = "network"
    39  	PrivateKeyFlagName         = "private-key"
    40  	JsonWalletFlagName         = "json-wallet"
    41  	JsonWalletPasswordFlagName = "json-wallet-password"
    42  	Prepare                    = "prepare"
    43  )
    44  
    45  func BindEVMCLIFlags(evmRootCLI *cobra.Command) {
    46  	evmRootCLI.PersistentFlags().String(UrlFlagName, "ws://localhost:8545", "URL of the node to receive RPC calls")
    47  	evmRootCLI.PersistentFlags().Uint64(GasLimitFlagName, 6721975, "Gas limit to be used in transactions")
    48  	evmRootCLI.PersistentFlags().Uint64(GasPriceFlagName, 0, "Used as upperLimitGasPrice for transactions if not 0. Transactions gasPrice is defined by estimating it on network for pre London fork networks and by estimating BaseFee and MaxTipFeePerGas in post London networks")
    49  	evmRootCLI.PersistentFlags().Uint64(NetworkIdFlagName, 0, "ID of the Network")
    50  	evmRootCLI.PersistentFlags().String(PrivateKeyFlagName, "", "Private key to use")
    51  	evmRootCLI.PersistentFlags().String(JsonWalletFlagName, "", "Encrypted JSON wallet")
    52  	evmRootCLI.PersistentFlags().String(JsonWalletPasswordFlagName, "", "Password for encrypted JSON wallet")
    53  	evmRootCLI.PersistentFlags().Bool(Prepare, false, "Generate calldata for command")
    54  
    55  	_ = viper.BindPFlag(UrlFlagName, evmRootCLI.PersistentFlags().Lookup(UrlFlagName))
    56  	_ = viper.BindPFlag(GasLimitFlagName, evmRootCLI.PersistentFlags().Lookup(GasLimitFlagName))
    57  	_ = viper.BindPFlag(GasPriceFlagName, evmRootCLI.PersistentFlags().Lookup(GasPriceFlagName))
    58  	_ = viper.BindPFlag(NetworkIdFlagName, evmRootCLI.PersistentFlags().Lookup(NetworkIdFlagName))
    59  	_ = viper.BindPFlag(PrivateKeyFlagName, evmRootCLI.PersistentFlags().Lookup(PrivateKeyFlagName))
    60  	_ = viper.BindPFlag(JsonWalletFlagName, evmRootCLI.PersistentFlags().Lookup(JsonWalletFlagName))
    61  	_ = viper.BindPFlag(JsonWalletPasswordFlagName, evmRootCLI.PersistentFlags().Lookup(JsonWalletPasswordFlagName))
    62  	_ = viper.BindPFlag(Prepare, evmRootCLI.PersistentFlags().Lookup(Prepare))
    63  }
    64  
    65  func init() {
    66  	// persistent flags
    67  	// to be used across all evm-cli commands (i.e. global)
    68  	BindEVMCLIFlags(EvmRootCLI)
    69  
    70  	// add commands to evm-cli root
    71  	// deploy
    72  	EvmRootCLI.AddCommand(deploy.DeployEVM)
    73  
    74  	// admin
    75  	EvmRootCLI.AddCommand(admin.AdminCmd)
    76  
    77  	// bridge
    78  	EvmRootCLI.AddCommand(bridge.BridgeCmd)
    79  
    80  	// erc20
    81  	EvmRootCLI.AddCommand(erc20.ERC20Cmd)
    82  
    83  	// erc721
    84  	EvmRootCLI.AddCommand(erc721.ERC721Cmd)
    85  
    86  	// centrifuge
    87  	EvmRootCLI.AddCommand(centrifuge.CentrifugeCmd)
    88  
    89  	// account
    90  	EvmRootCLI.AddCommand(account.AccountRootCMD)
    91  
    92  	// utils
    93  	EvmRootCLI.AddCommand(utils.UtilsCmd)
    94  }