Eric Bower
·
2025-04-05
util.go
1package pobj
2
3import (
4 "log/slog"
5 "os"
6
7 "github.com/picosh/pico/pkg/pobj/storage"
8)
9
10func GetEnv(key string, defaultVal string) string {
11 if value, exists := os.LookupEnv(key); exists {
12 return value
13 }
14 return defaultVal
15}
16
17func EnvDriverDetector(logger *slog.Logger) (storage.ObjectStorage, error) {
18 driver := GetEnv("OBJECT_DRIVER", "fs")
19 logger.Info("driver detected", "driver", driver)
20
21 if driver == "memory" {
22 return storage.NewStorageMemory(map[string]map[string]string{})
23 } else if driver == "minio" {
24 url := GetEnv("MINIO_URL", "")
25 user := GetEnv("MINIO_ROOT_USER", "")
26 pass := GetEnv("MINIO_ROOT_PASSWORD", "")
27 logger.Info(
28 "object config detected",
29 "url", url,
30 "user", user,
31 )
32 return storage.NewStorageMinio(logger, url, user, pass)
33 }
34
35 // implied driver == "fs"
36 storageDir := GetEnv("OBJECT_URL", "./.storage")
37 logger.Info("object config detected", "dir", storageDir)
38 return storage.NewStorageFS(logger, storageDir)
39}