From 07f5030e507ab8933645954547d34109ef137a0f Mon Sep 17 00:00:00 2001 From: lisenokdonbassenok Date: Tue, 13 Jan 2026 00:45:19 +0200 Subject: [PATCH] internal/flags: preserve BigFlag values from environment variables --- internal/flags/flags.go | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/internal/flags/flags.go b/internal/flags/flags.go index b858e73d04..de54c879ac 100644 --- a/internal/flags/flags.go +++ b/internal/flags/flags.go @@ -157,21 +157,25 @@ func (f *BigFlag) String() string { return cli.FlagStringer(f) } func (f *BigFlag) Apply(set *flag.FlagSet) error { // Set default value so that environment wont be able to overwrite it - if f.Value != nil { + if f.Value != nil && f.defaultValue == nil { f.defaultValue = new(big.Int).Set(f.Value) } + if f.Value == nil { + f.Value = new(big.Int) + } for _, envVar := range f.EnvVars { envVar = strings.TrimSpace(envVar) if value, found := syscall.Getenv(envVar); found { - if _, ok := f.Value.SetString(value, 10); !ok { + intVal, ok := math.ParseBig256(value) + if !ok { return fmt.Errorf("could not parse %q from environment variable %q for flag %s", value, envVar, f.Name) } + f.Value.Set(intVal) f.HasBeenSet = true break } } eachName(f, func(name string) { - f.Value = new(big.Int) set.Var((*bigValue)(f.Value), name, f.Usage) }) return nil