mirror of
https://github.com/kataras/iris.git
synced 2025-01-23 18:51:03 +01:00
ed45c77be5
Former-commit-id: ed635ee95de7160cde11eaabc0c1dcb0e460a620
86 lines
1.9 KiB
Go
86 lines
1.9 KiB
Go
package env
|
|
|
|
import (
|
|
"fmt"
|
|
"log"
|
|
"os"
|
|
"path/filepath"
|
|
"strings"
|
|
|
|
"github.com/joho/godotenv"
|
|
)
|
|
|
|
var (
|
|
// Port is the PORT environment variable or 8080 if missing.
|
|
// Used to open the tcp listener for our web server.
|
|
Port string
|
|
// DSN is the DSN environment variable or mongodb://localhost:27017 if missing.
|
|
// Used to connect to the mongodb.
|
|
DSN string
|
|
)
|
|
|
|
func parse() {
|
|
Port = getDefault("PORT", "8080")
|
|
DSN = getDefault("DSN", "mongodb://localhost:27017")
|
|
|
|
log.Printf("• Port=%s\n", Port)
|
|
log.Printf("• DSN=%s\n", DSN)
|
|
}
|
|
|
|
// Load loads environment variables that are being used across the whole app.
|
|
// Loading from file(s), i.e .env or dev.env
|
|
//
|
|
// Example of a 'dev.env':
|
|
// PORT=8080
|
|
// DSN=mongodb://localhost:27017
|
|
//
|
|
// After `Load` the callers can get an environment variable via `os.Getenv`.
|
|
func Load(envFileName string) {
|
|
if args := os.Args; len(args) > 1 && args[1] == "help" {
|
|
fmt.Fprintln(os.Stderr, "https://github.com/kataras/iris/blob/master/_examples/database/mongodb/README.md")
|
|
os.Exit(-1)
|
|
}
|
|
|
|
// If more than one filename passed with comma separated then load from all
|
|
// of these, a env file can be a partial too.
|
|
envFiles := strings.Split(envFileName, ",")
|
|
for _, envFile := range envFiles {
|
|
if filepath.Ext(envFile) == "" {
|
|
envFile += ".env"
|
|
}
|
|
|
|
if fileExists(envFile) {
|
|
log.Printf("Loading environment variables from file: %s\n", envFile)
|
|
|
|
if err := godotenv.Load(envFile); err != nil {
|
|
panic(fmt.Sprintf("error loading environment variables from [%s]: %v", envFile, err))
|
|
}
|
|
}
|
|
}
|
|
|
|
// envMap, _ := godotenv.Read(envFiles...)
|
|
// for k, v := range envMap {
|
|
// log.Printf("◽ %s=%s\n", k, v)
|
|
// }
|
|
|
|
parse()
|
|
}
|
|
|
|
func getDefault(key string, def string) string {
|
|
value := os.Getenv(key)
|
|
if value == "" {
|
|
os.Setenv(key, def)
|
|
value = def
|
|
}
|
|
|
|
return value
|
|
}
|
|
|
|
func fileExists(filename string) bool {
|
|
info, err := os.Stat(filename)
|
|
if os.IsNotExist(err) {
|
|
return false
|
|
}
|
|
return !info.IsDir()
|
|
}
|