mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-06-19 21:31:37 +00:00
internal/flags: remove low-use type TextMarshalerFlag (#30707)
This commit is contained in:
parent
a6192a5980
commit
ae56946690
4 changed files with 9 additions and 123 deletions
|
|
@ -34,7 +34,6 @@ import (
|
|||
"github.com/XinFinOrg/XDPoSChain/core/types"
|
||||
"github.com/XinFinOrg/XDPoSChain/eth/downloader"
|
||||
"github.com/XinFinOrg/XDPoSChain/event"
|
||||
"github.com/XinFinOrg/XDPoSChain/internal/flags"
|
||||
"github.com/XinFinOrg/XDPoSChain/log"
|
||||
"github.com/XinFinOrg/XDPoSChain/metrics"
|
||||
"github.com/urfave/cli/v2"
|
||||
|
|
@ -409,7 +408,10 @@ func copyDb(ctx *cli.Context) error {
|
|||
chain, chainDb := utils.MakeChain(ctx, stack)
|
||||
defer chainDb.Close()
|
||||
|
||||
syncmode := *flags.GlobalTextMarshaler(ctx, utils.SyncModeFlag.Name).(*downloader.SyncMode)
|
||||
var syncmode downloader.SyncMode
|
||||
if err := syncmode.UnmarshalText([]byte(ctx.String(utils.SyncModeFlag.Name))); err != nil {
|
||||
utils.Fatalf("invalid --syncmode flag: %v", err)
|
||||
}
|
||||
dl := downloader.New(syncmode, chainDb, new(event.TypeMux), chain, nil, nil, nil)
|
||||
|
||||
// Create a source peer to satisfy downloader requests from
|
||||
|
|
|
|||
|
|
@ -129,11 +129,10 @@ var (
|
|||
Category: flags.APICategory,
|
||||
}
|
||||
|
||||
defaultSyncMode = ethconfig.Defaults.SyncMode
|
||||
SyncModeFlag = &flags.TextMarshalerFlag{
|
||||
SyncModeFlag = &cli.StringFlag{
|
||||
Name: "syncmode",
|
||||
Usage: `Blockchain sync mode ("fast", "full", or "light")`,
|
||||
Value: &defaultSyncMode,
|
||||
Value: ethconfig.Defaults.SyncMode.String(),
|
||||
Category: flags.EthCategory,
|
||||
}
|
||||
GCModeFlag = &cli.StringFlag{
|
||||
|
|
@ -1340,7 +1339,9 @@ func SetEthConfig(ctx *cli.Context, stack *node.Node, cfg *ethconfig.Config) {
|
|||
|
||||
switch {
|
||||
case 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)
|
||||
}
|
||||
case ctx.Bool(FastSyncFlag.Name):
|
||||
cfg.SyncMode = downloader.FastSync
|
||||
case ctx.Bool(LightModeFlag.Name):
|
||||
|
|
|
|||
|
|
@ -17,7 +17,6 @@
|
|||
package flags
|
||||
|
||||
import (
|
||||
"encoding"
|
||||
"errors"
|
||||
"flag"
|
||||
"fmt"
|
||||
|
|
@ -122,119 +121,6 @@ func (f *DirectoryFlag) GetDefaultText() string {
|
|||
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}, 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 (
|
||||
_ cli.Flag = (*BigFlag)(nil)
|
||||
_ cli.RequiredFlag = (*BigFlag)(nil)
|
||||
|
|
|
|||
|
|
@ -255,9 +255,6 @@ func AutoEnvVars(flags []cli.Flag, prefix string) {
|
|||
case *BigFlag:
|
||||
flag.EnvVars = append(flag.EnvVars, envvar)
|
||||
|
||||
case *TextMarshalerFlag:
|
||||
flag.EnvVars = append(flag.EnvVars, envvar)
|
||||
|
||||
case *DirectoryFlag:
|
||||
flag.EnvVars = append(flag.EnvVars, envvar)
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue