cmd/geth, internal/flags: print envvar config source and bad names (#28119)
This commit is contained in:
parent
4fa3db49a1
commit
16cd1a7561
@ -249,7 +249,11 @@ func init() {
|
||||
app.Before = func(ctx *cli.Context) error {
|
||||
maxprocs.Set() // Automatically set GOMAXPROCS to match Linux container CPU quota.
|
||||
flags.MigrateGlobalFlags(ctx)
|
||||
return debug.Setup(ctx)
|
||||
if err := debug.Setup(ctx); err != nil {
|
||||
return err
|
||||
}
|
||||
flags.CheckEnvVars(ctx, app.Flags, "GETH")
|
||||
return nil
|
||||
}
|
||||
app.After = func(ctx *cli.Context) error {
|
||||
debug.Exit()
|
||||
|
@ -20,9 +20,11 @@ import (
|
||||
"fmt"
|
||||
"os"
|
||||
"regexp"
|
||||
"sort"
|
||||
"strings"
|
||||
|
||||
"github.com/ethereum/go-ethereum/internal/version"
|
||||
"github.com/ethereum/go-ethereum/log"
|
||||
"github.com/ethereum/go-ethereum/params"
|
||||
"github.com/mattn/go-isatty"
|
||||
"github.com/urfave/cli/v2"
|
||||
@ -263,3 +265,37 @@ func AutoEnvVars(flags []cli.Flag, prefix string) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// CheckEnvVars iterates over all the environment variables and checks if any of
|
||||
// them look like a CLI flag but is not consumed. This can be used to detect old
|
||||
// or mistyped names.
|
||||
func CheckEnvVars(ctx *cli.Context, flags []cli.Flag, prefix string) {
|
||||
known := make(map[string]string)
|
||||
for _, flag := range flags {
|
||||
docflag, ok := flag.(cli.DocGenerationFlag)
|
||||
if !ok {
|
||||
continue
|
||||
}
|
||||
for _, envvar := range docflag.GetEnvVars() {
|
||||
known[envvar] = flag.Names()[0]
|
||||
}
|
||||
}
|
||||
keyvals := os.Environ()
|
||||
sort.Strings(keyvals)
|
||||
|
||||
for _, keyval := range keyvals {
|
||||
key := strings.Split(keyval, "=")[0]
|
||||
if !strings.HasPrefix(key, prefix) {
|
||||
continue
|
||||
}
|
||||
if flag, ok := known[key]; ok {
|
||||
if ctx.Count(flag) > 0 {
|
||||
log.Info("Config environment variable found", "envvar", key, "shadowedby", "--"+flag)
|
||||
} else {
|
||||
log.Info("Config environment variable found", "envvar", key)
|
||||
}
|
||||
} else {
|
||||
log.Warn("Unknown config environment variable", "envvar", key)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user