mirror of
https://github.com/steveiliop56/tinyauth.git
synced 2025-10-28 20:55:42 +00:00
* refactor: rework decoders logic for cleaner code * refactor: use strcase lib to handle text case conversions
31 lines
602 B
Go
31 lines
602 B
Go
package decoders
|
|
|
|
import (
|
|
"strings"
|
|
|
|
"github.com/traefik/paerser/parser"
|
|
)
|
|
|
|
func DecodeFlags[T any, C any](flags map[string]string, subName string) (T, error) {
|
|
var result T
|
|
|
|
filtered := filterFlags(flags)
|
|
normalized := normalizeKeys[C](filtered, subName, "_")
|
|
|
|
err := parser.Decode(normalized, &result, "tinyauth", "tinyauth."+subName)
|
|
|
|
if err != nil {
|
|
return result, err
|
|
}
|
|
|
|
return result, nil
|
|
}
|
|
|
|
func filterFlags(flags map[string]string) map[string]string {
|
|
filtered := make(map[string]string)
|
|
for k, v := range flags {
|
|
filtered[strings.TrimPrefix(k, "--")] = v
|
|
}
|
|
return filtered
|
|
}
|