mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-08-18 18:02:24 +00:00
cmd, internal: remove low-use custom flag type
This commit is contained in:
parent
9afb18dd6f
commit
274831ce6e
3 changed files with 6 additions and 122 deletions
|
|
@ -217,7 +217,6 @@ var (
|
||||||
Value: 0,
|
Value: 0,
|
||||||
}
|
}
|
||||||
|
|
||||||
defaultSyncMode = ethconfig.Defaults.SyncMode
|
|
||||||
SnapshotFlag = &cli.BoolFlag{
|
SnapshotFlag = &cli.BoolFlag{
|
||||||
Name: "snapshot",
|
Name: "snapshot",
|
||||||
Usage: `Enables snapshot-database mode (default = enable)`,
|
Usage: `Enables snapshot-database mode (default = enable)`,
|
||||||
|
|
@ -250,10 +249,10 @@ var (
|
||||||
Usage: "Manually specify the Verkle fork timestamp, overriding the bundled setting",
|
Usage: "Manually specify the Verkle fork timestamp, overriding the bundled setting",
|
||||||
Category: flags.EthCategory,
|
Category: flags.EthCategory,
|
||||||
}
|
}
|
||||||
SyncModeFlag = &flags.TextMarshalerFlag{
|
SyncModeFlag = &cli.StringFlag{
|
||||||
Name: "syncmode",
|
Name: "syncmode",
|
||||||
Usage: `Blockchain sync mode ("snap" or "full")`,
|
Usage: `Blockchain sync mode ("snap" or "full")`,
|
||||||
Value: &defaultSyncMode,
|
Value: ethconfig.Defaults.SyncMode.String(),
|
||||||
Category: flags.StateCategory,
|
Category: flags.StateCategory,
|
||||||
}
|
}
|
||||||
GCModeFlag = &cli.StringFlag{
|
GCModeFlag = &cli.StringFlag{
|
||||||
|
|
@ -1675,7 +1674,9 @@ func SetEthConfig(ctx *cli.Context, stack *node.Node, cfg *ethconfig.Config) {
|
||||||
if ctx.IsSet(SyncTargetFlag.Name) {
|
if ctx.IsSet(SyncTargetFlag.Name) {
|
||||||
cfg.SyncMode = downloader.FullSync // dev sync target forces full sync
|
cfg.SyncMode = downloader.FullSync // dev sync target forces full sync
|
||||||
} else if ctx.IsSet(SyncModeFlag.Name) {
|
} else if ctx.IsSet(SyncModeFlag.Name) {
|
||||||
cfg.SyncMode = *flags.GlobalTextMarshaler(ctx, SyncModeFlag.Name).(*downloader.SyncMode)
|
if err = cfg.SyncMode.UnmarshalText([]byte(ctx.String(SyncModeFlag.Name))); err != nil {
|
||||||
|
Fatalf("invalid --syncmode flag: %v", err)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if ctx.IsSet(NetworkIdFlag.Name) {
|
if ctx.IsSet(NetworkIdFlag.Name) {
|
||||||
cfg.NetworkId = ctx.Uint64(NetworkIdFlag.Name)
|
cfg.NetworkId = ctx.Uint64(NetworkIdFlag.Name)
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,6 @@
|
||||||
package flags
|
package flags
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"encoding"
|
|
||||||
"errors"
|
"errors"
|
||||||
"flag"
|
"flag"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
|
@ -122,119 +121,6 @@ func (f *DirectoryFlag) GetDefaultText() string {
|
||||||
return f.GetValue()
|
return f.GetValue()
|
||||||
}
|
}
|
||||||
|
|
||||||
type TextMarshaler interface {
|
|
||||||
encoding.TextMarshaler
|
|
||||||
encoding.TextUnmarshaler
|
|
||||||
}
|
|
||||||
|
|
||||||
// textMarshalerVal turns a TextMarshaler into a flag.Value
|
|
||||||
type textMarshalerVal struct {
|
|
||||||
v TextMarshaler
|
|
||||||
}
|
|
||||||
|
|
||||||
func (v textMarshalerVal) String() string {
|
|
||||||
if v.v == nil {
|
|
||||||
return ""
|
|
||||||
}
|
|
||||||
text, _ := v.v.MarshalText()
|
|
||||||
return string(text)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (v textMarshalerVal) Set(s string) error {
|
|
||||||
return v.v.UnmarshalText([]byte(s))
|
|
||||||
}
|
|
||||||
|
|
||||||
var (
|
|
||||||
_ cli.Flag = (*TextMarshalerFlag)(nil)
|
|
||||||
_ cli.RequiredFlag = (*TextMarshalerFlag)(nil)
|
|
||||||
_ cli.VisibleFlag = (*TextMarshalerFlag)(nil)
|
|
||||||
_ cli.DocGenerationFlag = (*TextMarshalerFlag)(nil)
|
|
||||||
_ cli.CategorizableFlag = (*TextMarshalerFlag)(nil)
|
|
||||||
)
|
|
||||||
|
|
||||||
// TextMarshalerFlag wraps a TextMarshaler value.
|
|
||||||
type TextMarshalerFlag struct {
|
|
||||||
Name string
|
|
||||||
|
|
||||||
Category string
|
|
||||||
DefaultText string
|
|
||||||
Usage string
|
|
||||||
|
|
||||||
Required bool
|
|
||||||
Hidden bool
|
|
||||||
HasBeenSet bool
|
|
||||||
|
|
||||||
Value TextMarshaler
|
|
||||||
|
|
||||||
Aliases []string
|
|
||||||
EnvVars []string
|
|
||||||
}
|
|
||||||
|
|
||||||
// For cli.Flag:
|
|
||||||
|
|
||||||
func (f *TextMarshalerFlag) Names() []string { return append([]string{f.Name}, f.Aliases...) }
|
|
||||||
func (f *TextMarshalerFlag) IsSet() bool { return f.HasBeenSet }
|
|
||||||
func (f *TextMarshalerFlag) String() string { return cli.FlagStringer(f) }
|
|
||||||
|
|
||||||
func (f *TextMarshalerFlag) Apply(set *flag.FlagSet) error {
|
|
||||||
for _, envVar := range f.EnvVars {
|
|
||||||
envVar = strings.TrimSpace(envVar)
|
|
||||||
if value, found := syscall.Getenv(envVar); found {
|
|
||||||
if err := f.Value.UnmarshalText([]byte(value)); err != nil {
|
|
||||||
return fmt.Errorf("could not parse %q from environment variable %q for flag %s: %s", value, envVar, f.Name, err)
|
|
||||||
}
|
|
||||||
f.HasBeenSet = true
|
|
||||||
break
|
|
||||||
}
|
|
||||||
}
|
|
||||||
eachName(f, func(name string) {
|
|
||||||
set.Var(textMarshalerVal{f.Value}, f.Name, f.Usage)
|
|
||||||
})
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// For cli.RequiredFlag:
|
|
||||||
|
|
||||||
func (f *TextMarshalerFlag) IsRequired() bool { return f.Required }
|
|
||||||
|
|
||||||
// For cli.VisibleFlag:
|
|
||||||
|
|
||||||
func (f *TextMarshalerFlag) IsVisible() bool { return !f.Hidden }
|
|
||||||
|
|
||||||
// For cli.CategorizableFlag:
|
|
||||||
|
|
||||||
func (f *TextMarshalerFlag) GetCategory() string { return f.Category }
|
|
||||||
|
|
||||||
// For cli.DocGenerationFlag:
|
|
||||||
|
|
||||||
func (f *TextMarshalerFlag) TakesValue() bool { return true }
|
|
||||||
func (f *TextMarshalerFlag) GetUsage() string { return f.Usage }
|
|
||||||
func (f *TextMarshalerFlag) GetEnvVars() []string { return f.EnvVars }
|
|
||||||
|
|
||||||
func (f *TextMarshalerFlag) GetValue() string {
|
|
||||||
t, err := f.Value.MarshalText()
|
|
||||||
if err != nil {
|
|
||||||
return "(ERR: " + err.Error() + ")"
|
|
||||||
}
|
|
||||||
return string(t)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (f *TextMarshalerFlag) GetDefaultText() string {
|
|
||||||
if f.DefaultText != "" {
|
|
||||||
return f.DefaultText
|
|
||||||
}
|
|
||||||
return f.GetValue()
|
|
||||||
}
|
|
||||||
|
|
||||||
// GlobalTextMarshaler returns the value of a TextMarshalerFlag from the global flag set.
|
|
||||||
func GlobalTextMarshaler(ctx *cli.Context, name string) TextMarshaler {
|
|
||||||
val := ctx.Generic(name)
|
|
||||||
if val == nil {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
return val.(textMarshalerVal).v
|
|
||||||
}
|
|
||||||
|
|
||||||
var (
|
var (
|
||||||
_ cli.Flag = (*BigFlag)(nil)
|
_ cli.Flag = (*BigFlag)(nil)
|
||||||
_ cli.RequiredFlag = (*BigFlag)(nil)
|
_ cli.RequiredFlag = (*BigFlag)(nil)
|
||||||
|
|
|
||||||
|
|
@ -265,9 +265,6 @@ func AutoEnvVars(flags []cli.Flag, prefix string) {
|
||||||
case *BigFlag:
|
case *BigFlag:
|
||||||
flag.EnvVars = append(flag.EnvVars, envvar)
|
flag.EnvVars = append(flag.EnvVars, envvar)
|
||||||
|
|
||||||
case *TextMarshalerFlag:
|
|
||||||
flag.EnvVars = append(flag.EnvVars, envvar)
|
|
||||||
|
|
||||||
case *DirectoryFlag:
|
case *DirectoryFlag:
|
||||||
flag.EnvVars = append(flag.EnvVars, envvar)
|
flag.EnvVars = append(flag.EnvVars, envvar)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue