2024-06-15 16:55:25 +00:00
|
|
|
package config
|
2024-06-13 01:16:48 +00:00
|
|
|
|
|
|
|
import (
|
|
|
|
"os"
|
|
|
|
"strings"
|
|
|
|
)
|
|
|
|
|
|
|
|
// depth 是 .env 文件的搜索深度
|
|
|
|
var depth = 8
|
|
|
|
|
|
|
|
type defaultConfig struct {
|
|
|
|
Redis struct {
|
|
|
|
Addr string
|
|
|
|
Pass string
|
|
|
|
}
|
|
|
|
|
|
|
|
DB struct {
|
|
|
|
DSN string
|
|
|
|
DSN2 string
|
|
|
|
Driver string
|
|
|
|
}
|
|
|
|
|
|
|
|
GRPC struct {
|
|
|
|
GrpcListenAddr string
|
|
|
|
}
|
|
|
|
|
2024-06-13 01:40:03 +00:00
|
|
|
HTTP struct {
|
|
|
|
ListenAddr string
|
|
|
|
}
|
|
|
|
|
2024-06-13 01:16:48 +00:00
|
|
|
JWKS struct {
|
|
|
|
Url string
|
|
|
|
}
|
|
|
|
|
|
|
|
DebugMode struct {
|
|
|
|
Enable bool
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
var Config = defaultConfig{}
|
|
|
|
|
|
|
|
func GetEnv(key string, defaultValue ...string) string {
|
|
|
|
r := os.Getenv(key)
|
|
|
|
if len(r) == 0 && len(defaultValue) > 0 {
|
|
|
|
return defaultValue[0]
|
|
|
|
} else {
|
|
|
|
return r
|
|
|
|
}
|
|
|
|
}
|
|
|
|
func GetEnvFilePath() string {
|
|
|
|
var path string
|
|
|
|
if os.Getenv("ENV_PATH") != "" {
|
|
|
|
path = os.Getenv("ENV_PATH")
|
|
|
|
return path
|
|
|
|
}
|
|
|
|
var pathOptions []string
|
|
|
|
for i := 0; i <= depth; i++ {
|
|
|
|
pathOptions = append(pathOptions, strings.Repeat("../", i)+".env")
|
|
|
|
}
|
|
|
|
for _, p := range pathOptions {
|
|
|
|
if _, err := os.Stat(p); err == nil {
|
|
|
|
path = p
|
|
|
|
break
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return path
|
|
|
|
}
|