mirror of
https://codeberg.org/cunicu/cunicu.git
synced 2025-09-26 21:01:14 +08:00
32 lines
658 B
Go
32 lines
658 B
Go
// SPDX-FileCopyrightText: 2023 Steffen Vogel <post@steffenvogel.de>
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
|
|
package config
|
|
|
|
import (
|
|
"strings"
|
|
|
|
"github.com/knadh/koanf"
|
|
"github.com/knadh/koanf/providers/env"
|
|
)
|
|
|
|
func (c *Config) EnvironmentProvider() koanf.Provider {
|
|
// Load environment variables
|
|
envKeyMap := map[string]string{}
|
|
for _, k := range c.Meta.Keys() {
|
|
m := strings.ToUpper(k)
|
|
e := envPrefix + strings.ReplaceAll(m, ".", "_")
|
|
envKeyMap[e] = k
|
|
}
|
|
|
|
return env.ProviderWithValue(envPrefix, ".", func(e, v string) (string, any) {
|
|
k := envKeyMap[e]
|
|
|
|
if p := strings.Split(v, ","); len(p) > 1 {
|
|
return k, p
|
|
}
|
|
|
|
return k, v
|
|
})
|
|
}
|