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 {
|
app.Before = func(ctx *cli.Context) error {
|
||||||
maxprocs.Set() // Automatically set GOMAXPROCS to match Linux container CPU quota.
|
maxprocs.Set() // Automatically set GOMAXPROCS to match Linux container CPU quota.
|
||||||
flags.MigrateGlobalFlags(ctx)
|
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 {
|
app.After = func(ctx *cli.Context) error {
|
||||||
debug.Exit()
|
debug.Exit()
|
||||||
|
@ -20,9 +20,11 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
"regexp"
|
"regexp"
|
||||||
|
"sort"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"github.com/ethereum/go-ethereum/internal/version"
|
"github.com/ethereum/go-ethereum/internal/version"
|
||||||
|
"github.com/ethereum/go-ethereum/log"
|
||||||
"github.com/ethereum/go-ethereum/params"
|
"github.com/ethereum/go-ethereum/params"
|
||||||
"github.com/mattn/go-isatty"
|
"github.com/mattn/go-isatty"
|
||||||
"github.com/urfave/cli/v2"
|
"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