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 }