| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- 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
- }
|