github.com/palisadeinc/bor@v0.0.0-20230615125219-ab7196213d15/internal/cli/dumpconfig.go (about) 1 package cli 2 3 import ( 4 "os" 5 "strings" 6 7 "github.com/BurntSushi/toml" 8 9 "github.com/ethereum/go-ethereum/internal/cli/server" 10 ) 11 12 // DumpconfigCommand is for exporting user provided flags into a config file 13 type DumpconfigCommand struct { 14 *Meta2 15 } 16 17 // MarkDown implements cli.MarkDown interface 18 func (p *DumpconfigCommand) MarkDown() string { 19 items := []string{ 20 "# Dumpconfig", 21 "The ```bor dumpconfig <your-favourite-flags>``` command will export the user provided flags into a configuration file", 22 } 23 24 return strings.Join(items, "\n\n") 25 } 26 27 // Help implements the cli.Command interface 28 func (c *DumpconfigCommand) Help() string { 29 return `Usage: bor dumpconfig <your-favourite-flags> 30 31 This command will will export the user provided flags into a configuration file` 32 } 33 34 // Synopsis implements the cli.Command interface 35 func (c *DumpconfigCommand) Synopsis() string { 36 return "Export configuration file" 37 } 38 39 // TODO: add flags for file location and format (toml, json, hcl) of the configuration file. 40 41 // Run implements the cli.Command interface 42 func (c *DumpconfigCommand) Run(args []string) int { 43 // Initialize an empty command instance to get flags 44 command := server.Command{} 45 flags := command.Flags() 46 47 if err := flags.Parse(args); err != nil { 48 c.UI.Error(err.Error()) 49 return 1 50 } 51 52 userConfig := command.GetConfig() 53 54 // convert the big.Int and time.Duration fields to their corresponding Raw fields 55 userConfig.JsonRPC.RPCEVMTimeoutRaw = userConfig.JsonRPC.RPCEVMTimeout.String() 56 userConfig.JsonRPC.HttpTimeout.ReadTimeoutRaw = userConfig.JsonRPC.HttpTimeout.ReadTimeout.String() 57 userConfig.JsonRPC.HttpTimeout.WriteTimeoutRaw = userConfig.JsonRPC.HttpTimeout.WriteTimeout.String() 58 userConfig.JsonRPC.HttpTimeout.IdleTimeoutRaw = userConfig.JsonRPC.HttpTimeout.IdleTimeout.String() 59 userConfig.JsonRPC.Http.ExecutionPoolRequestTimeoutRaw = userConfig.JsonRPC.Http.ExecutionPoolRequestTimeout.String() 60 userConfig.JsonRPC.Ws.ExecutionPoolRequestTimeoutRaw = userConfig.JsonRPC.Ws.ExecutionPoolRequestTimeout.String() 61 userConfig.TxPool.RejournalRaw = userConfig.TxPool.Rejournal.String() 62 userConfig.TxPool.LifeTimeRaw = userConfig.TxPool.LifeTime.String() 63 userConfig.Sealer.GasPriceRaw = userConfig.Sealer.GasPrice.String() 64 userConfig.Sealer.RecommitRaw = userConfig.Sealer.Recommit.String() 65 userConfig.Gpo.MaxPriceRaw = userConfig.Gpo.MaxPrice.String() 66 userConfig.Gpo.IgnorePriceRaw = userConfig.Gpo.IgnorePrice.String() 67 userConfig.Cache.RejournalRaw = userConfig.Cache.Rejournal.String() 68 userConfig.Cache.TrieTimeoutRaw = userConfig.Cache.TrieTimeout.String() 69 userConfig.P2P.TxArrivalWaitRaw = userConfig.P2P.TxArrivalWait.String() 70 71 if err := toml.NewEncoder(os.Stdout).Encode(userConfig); err != nil { 72 c.UI.Error(err.Error()) 73 return 1 74 } 75 76 return 0 77 }