Support raw data as input for encode command
This commit is contained in:
parent
45dc130cbe
commit
90fb61c95f
|
@ -47,9 +47,11 @@ This command decodes extraData to vanity and validators.
|
||||||
Action: encode,
|
Action: encode,
|
||||||
Name: "encode",
|
Name: "encode",
|
||||||
Usage: "To encode an Istanbul extraData",
|
Usage: "To encode an Istanbul extraData",
|
||||||
ArgsUsage: "<config file>",
|
ArgsUsage: "<config file> or \"0xValidator1,0xValidator2...\"",
|
||||||
Flags: []cli.Flag{
|
Flags: []cli.Flag{
|
||||||
ConfigFlag,
|
ConfigFlag,
|
||||||
|
ValidatorsFlag,
|
||||||
|
VanityFlag,
|
||||||
},
|
},
|
||||||
Description: `
|
Description: `
|
||||||
This command encodes vanity and validators to extraData. Please refer to example/config.toml.
|
This command encodes vanity and validators to extraData. Please refer to example/config.toml.
|
||||||
|
@ -59,10 +61,36 @@ This command encodes vanity and validators to extraData. Please refer to example
|
||||||
|
|
||||||
func encode(ctx *cli.Context) error {
|
func encode(ctx *cli.Context) error {
|
||||||
path := ctx.String(ConfigFlag.Name)
|
path := ctx.String(ConfigFlag.Name)
|
||||||
if len(path) == 0 {
|
validators := ctx.String(ValidatorsFlag.Name)
|
||||||
return cli.NewExitError("Must supply config file", 0)
|
if len(path) == 0 && len(validators) == 0 {
|
||||||
|
return cli.NewExitError("Must supply config file or enter validators", 0)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if len(path) != 0 {
|
||||||
|
if err := fromConfig(path); err != nil {
|
||||||
|
return cli.NewExitError("Failed to encode from config data", 0)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(validators) != 0 {
|
||||||
|
if err := fromRawData(ctx.String(VanityFlag.Name), validators); err != nil {
|
||||||
|
return cli.NewExitError("Failed to encode from flags", 0)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func fromRawData(vanity string, validators string) error {
|
||||||
|
vs := splitAndTrim(validators)
|
||||||
|
|
||||||
|
addrs := make([]common.Address, len(vs))
|
||||||
|
for i, v := range vs {
|
||||||
|
addrs[i] = common.HexToAddress(v)
|
||||||
|
}
|
||||||
|
return encodeExtraData(vanity, addrs)
|
||||||
|
}
|
||||||
|
|
||||||
|
func fromConfig(path string) error {
|
||||||
file, err := os.Open(path)
|
file, err := os.Open(path)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return cli.NewExitError(fmt.Sprintf("Failed to read config file: %v", err), 1)
|
return cli.NewExitError(fmt.Sprintf("Failed to read config file: %v", err), 1)
|
||||||
|
|
Loading…
Reference in New Issue