mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-07-30 16:43:46 +00:00
* updated simple.json and simple.hcl * added annotations for developer and grpc block * added toml tags and simple.toml file * added support for toml config files * updated simple files toml, hcl, json * added config.toml in builder/files and updated bor.service * add dumpconfig command in cli for exporting configs * update docs * updated .goreleaser.yml (POS-651) * changed --config to -config * added test config for tests and fixed lint errors * made fields of type big.int and time.Duration private, removed merge from dumpconfig, setting up default values to the Raw fields in dumpconfig, and fixed one lint error * fixed lint errors (strange) * lint fix * private no-more, using '-' in name tags to ignore * updated name tags, made c.configFile as a stringFlag (only one config file supported) and updated the merge logic in command.go -> Run() * fix: set method for big.Int flags, added a TODO * handeled bigInt and timeDuration type, bug fix in config_legacy, lint fix * updated flags, consistent across flags.go and config.go * fixed config test and updated test hcl, json config files * updated config legacy test * added test to check values of cmd flags, restructured Run in command.go, linter fix * fix linters * lint again * changed 2 flags and assert -> require * changed the 2 flags back * updated correct congig.toml path and made mainnet default * updated config.toml with new flags * added sample config (toml) file * removed sample-config.toml and added it in docs/config.md Co-authored-by: Manav Darji <manavdarji.india@gmail.com>
82 lines
2.3 KiB
Go
82 lines
2.3 KiB
Go
package cli
|
|
|
|
import (
|
|
"reflect"
|
|
"strings"
|
|
|
|
"github.com/naoina/toml"
|
|
|
|
"github.com/ethereum/go-ethereum/internal/cli/server"
|
|
)
|
|
|
|
// These settings ensure that TOML keys use the same names as Go struct fields.
|
|
var tomlSettings = toml.Config{
|
|
NormFieldName: func(rt reflect.Type, key string) string {
|
|
return key
|
|
},
|
|
FieldToKey: func(rt reflect.Type, field string) string {
|
|
return field
|
|
},
|
|
}
|
|
|
|
// DumpconfigCommand is for exporting user provided flags into a config file
|
|
type DumpconfigCommand struct {
|
|
*Meta2
|
|
}
|
|
|
|
// MarkDown implements cli.MarkDown interface
|
|
func (p *DumpconfigCommand) MarkDown() string {
|
|
items := []string{
|
|
"# Dumpconfig",
|
|
"The ```bor dumpconfig <your-favourite-flags>``` command will export the user provided flags into a configuration file",
|
|
}
|
|
|
|
return strings.Join(items, "\n\n")
|
|
}
|
|
|
|
// Help implements the cli.Command interface
|
|
func (c *DumpconfigCommand) Help() string {
|
|
return `Usage: bor dumpconfig <your-favourite-flags>
|
|
|
|
This command will will export the user provided flags into a configuration file`
|
|
}
|
|
|
|
// Synopsis implements the cli.Command interface
|
|
func (c *DumpconfigCommand) Synopsis() string {
|
|
return "Export configuration file"
|
|
}
|
|
|
|
// TODO: add flags for file location and format (toml, json, hcl) of the configuration file.
|
|
|
|
// Run implements the cli.Command interface
|
|
func (c *DumpconfigCommand) Run(args []string) int {
|
|
// Initialize an empty command instance to get flags
|
|
command := server.Command{}
|
|
flags := command.Flags()
|
|
|
|
if err := flags.Parse(args); err != nil {
|
|
c.UI.Error(err.Error())
|
|
return 1
|
|
}
|
|
|
|
userConfig := command.GetConfig()
|
|
|
|
// convert the big.Int and time.Duration fields to their corresponding Raw fields
|
|
userConfig.TxPool.RejournalRaw = userConfig.TxPool.Rejournal.String()
|
|
userConfig.TxPool.LifeTimeRaw = userConfig.TxPool.LifeTime.String()
|
|
userConfig.Sealer.GasPriceRaw = userConfig.Sealer.GasPrice.String()
|
|
userConfig.Gpo.MaxPriceRaw = userConfig.Gpo.MaxPrice.String()
|
|
userConfig.Gpo.IgnorePriceRaw = userConfig.Gpo.IgnorePrice.String()
|
|
userConfig.Cache.RejournalRaw = userConfig.Cache.Rejournal.String()
|
|
|
|
// Currently, the configurations (userConfig) is exported into `toml` file format.
|
|
out, err := tomlSettings.Marshal(&userConfig)
|
|
if err != nil {
|
|
c.UI.Error(err.Error())
|
|
return 1
|
|
}
|
|
|
|
c.UI.Output(string(out))
|
|
|
|
return 0
|
|
}
|