55 lines
749 B
Go
55 lines
749 B
Go
package env
|
|
|
|
import (
|
|
"bufio"
|
|
"os"
|
|
"strings"
|
|
)
|
|
|
|
func Default(key, def string) string {
|
|
if v, ok := os.LookupEnv(key); ok {
|
|
return v
|
|
}
|
|
return def
|
|
}
|
|
|
|
type secret struct {
|
|
value string
|
|
}
|
|
|
|
func (s secret) Secret() string {
|
|
return s.value
|
|
}
|
|
func (s secret) String() string {
|
|
return "***"
|
|
}
|
|
func Secret(key, def string) secret {
|
|
if v, ok := os.LookupEnv(key); ok {
|
|
return secret{v}
|
|
}
|
|
return secret{def}
|
|
}
|
|
|
|
func DotEnv() {
|
|
fd, err := os.Open(".env")
|
|
if err != nil {
|
|
return
|
|
}
|
|
|
|
scan := bufio.NewScanner(fd)
|
|
|
|
for scan.Scan() {
|
|
line := scan.Text()
|
|
|
|
if strings.HasPrefix(line, "#") {
|
|
continue
|
|
}
|
|
key, val, ok := strings.Cut(line, "=")
|
|
if !ok {
|
|
continue
|
|
}
|
|
|
|
os.Setenv(strings.TrimSpace(key), strings.TrimSpace(val))
|
|
}
|
|
}
|