mirror of
https://github.com/ncarlier/webhookd.git
synced 2025-04-09 00:37:10 +00:00
55 lines
1.3 KiB
Go
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
|
|
}
|