webhookd/pkg/config/deprecated.go
Nicolas Carlier 073ac38b47 refactor(config): small config refactoring
- split config structure
- improve config logic
2024-03-04 08:00:56 +00:00

55 lines
1.3 KiB
Go

package config
import (
"flag"
"log/slog"
"os"
"github.com/ncarlier/webhookd/pkg/helper"
)
// OldConfig contain global configuration
type OldConfig struct {
NbWorkers int `flag:"nb-workers" desc:"Number of workers to start [DEPRECATED]" default:"2"`
Scripts string `flag:"scripts" desc:"Scripts location [DEPRECATED]" default:"scripts"`
}
// ManageDeprecatedFlags manage legacy configuration
func (c *Config) ManageDeprecatedFlags(prefix string) {
if isUsingDeprecatedConfigParam(prefix, "nb-workers") {
c.Hook.Workers = c.NbWorkers
}
if isUsingDeprecatedConfigParam(prefix, "scripts") {
c.Hook.ScriptsDir = c.Scripts
}
}
func isUsingDeprecatedConfigParam(prefix, flagName string) bool {
envVar := helper.ToScreamingSnake(prefix + "_" + flagName)
switch {
case isFlagPassed(flagName):
slog.Warn("using deprecated configuration flag", "flag", flagName)
return true
case isEnvExists(envVar):
slog.Warn("using deprecated configuration environment variable", "variable", envVar)
return true
default:
return false
}
}
func isEnvExists(name string) bool {
_, exists := os.LookupEnv(name)
return exists
}
func isFlagPassed(name string) bool {
found := false
flag.Visit(func(f *flag.Flag) {
if f.Name == name {
found = true
}
})
return found
}