deprecated.go 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. package config
  2. import (
  3. "flag"
  4. "log/slog"
  5. "os"
  6. "github.com/ncarlier/webhookd/pkg/helper"
  7. )
  8. // OldConfig contain global configuration
  9. type OldConfig struct {
  10. NbWorkers int `flag:"nb-workers" desc:"Number of workers to start [DEPRECATED]" default:"2"`
  11. Scripts string `flag:"scripts" desc:"Scripts location [DEPRECATED]" default:"scripts"`
  12. }
  13. // ManageDeprecatedFlags manage legacy configuration
  14. func (c *Config) ManageDeprecatedFlags(prefix string) {
  15. if isUsingDeprecatedConfigParam(prefix, "nb-workers") {
  16. c.Hook.Workers = c.NbWorkers
  17. }
  18. if isUsingDeprecatedConfigParam(prefix, "scripts") {
  19. c.Hook.ScriptsDir = c.Scripts
  20. }
  21. }
  22. func isUsingDeprecatedConfigParam(prefix, flagName string) bool {
  23. envVar := helper.ToScreamingSnake(prefix + "_" + flagName)
  24. switch {
  25. case isFlagPassed(flagName):
  26. slog.Warn("using deprecated configuration flag", "flag", flagName)
  27. return true
  28. case isEnvExists(envVar):
  29. slog.Warn("using deprecated configuration environment variable", "variable", envVar)
  30. return true
  31. default:
  32. return false
  33. }
  34. }
  35. func isEnvExists(name string) bool {
  36. _, exists := os.LookupEnv(name)
  37. return exists
  38. }
  39. func isFlagPassed(name string) bool {
  40. found := false
  41. flag.Visit(func(f *flag.Flag) {
  42. if f.Name == name {
  43. found = true
  44. }
  45. })
  46. return found
  47. }