refactor: rework decoders logic for cleaner code (#431)

* refactor: rework decoders logic for cleaner code

* refactor: use strcase lib to handle text case conversions
This commit is contained in:
Stavros
2025-10-26 12:01:19 +02:00
committed by GitHub
parent c5bb389258
commit 0227af6d2b
10 changed files with 101 additions and 207 deletions

View File

@@ -2,23 +2,23 @@ package decoders
import (
"strings"
"tinyauth/internal/config"
"github.com/traefik/paerser/parser"
)
func DecodeFlags(flags map[string]string) (config.Providers, error) {
filtered := filterFlags(flags)
normalized := NormalizeKeys(filtered, "tinyauth", "-")
var providers config.Providers
func DecodeFlags[T any, C any](flags map[string]string, subName string) (T, error) {
var result T
err := parser.Decode(normalized, &providers, "tinyauth", "tinyauth.providers")
filtered := filterFlags(flags)
normalized := normalizeKeys[C](filtered, subName, "_")
err := parser.Decode(normalized, &result, "tinyauth", "tinyauth."+subName)
if err != nil {
return config.Providers{}, err
return result, err
}
return providers, nil
return result, nil
}
func filterFlags(flags map[string]string) map[string]string {