feat: add environment variable support

This commit is contained in:
2025-02-07 18:47:10 +07:00
parent e6e9e25d8d
commit 710dc544c4
8 changed files with 69 additions and 13 deletions

View File

@ -1,11 +1,26 @@
package utils
import (
"github.com/joho/godotenv"
"log"
"math/rand"
"os"
"strings"
"sync"
"time"
)
type Env struct {
value map[string]string
mu sync.Mutex
}
var env *Env
func init() {
env = &Env{value: map[string]string{}}
}
func GenerateRandomString(length int) string {
const charset = "abcdefghijklmnopqrstuvwxyz"
seededRand := rand.New(rand.NewSource(time.Now().UnixNano() + int64(rand.Intn(9999))))
@ -16,3 +31,27 @@ func GenerateRandomString(length int) string {
}
return result.String()
}
func Getenv(key string) string {
env.mu.Lock()
defer env.mu.Unlock()
if val, ok := env.value[key]; ok {
return val
}
if os.Getenv("HOSTNAME") == "" {
err := godotenv.Load(".env")
if err != nil {
log.Fatalf("Error loading .env file: %s", err)
}
}
val := os.Getenv(key)
env.value[key] = val
if val == "" {
panic("Asking for env: " + key + " but got nothing, please set your environment first")
}
return val
}