72 lines
1.6 KiB
Go
72 lines
1.6 KiB
Go
|
package environment
|
||
|
|
||
|
import (
|
||
|
"errors"
|
||
|
"fmt"
|
||
|
"log"
|
||
|
"os"
|
||
|
|
||
|
"github.com/joho/godotenv"
|
||
|
)
|
||
|
|
||
|
var ENV_FILE_NAME string
|
||
|
|
||
|
/* ---------------------------------------------------------------- *
|
||
|
* EXPORTS
|
||
|
* ---------------------------------------------------------------- */
|
||
|
|
||
|
func ReadEnvKey(key string, optional ...string) string {
|
||
|
value, err := readEnvKey(key, optional...)
|
||
|
if err != nil {
|
||
|
log.Fatal(err)
|
||
|
}
|
||
|
return value
|
||
|
}
|
||
|
|
||
|
func ReadEnvKeyAllowMissing(key string, optional ...string) string {
|
||
|
value, _ := readEnvKey(key, optional...)
|
||
|
return value
|
||
|
}
|
||
|
|
||
|
func ReadEnvKeyDefault(key string, valueDefault string, optional ...string) string {
|
||
|
value, _ := readEnvKey(key, optional...)
|
||
|
if value == "" {
|
||
|
return valueDefault
|
||
|
}
|
||
|
return value
|
||
|
}
|
||
|
|
||
|
/* ---------------------------------------------------------------- *
|
||
|
* PRIVATE
|
||
|
* ---------------------------------------------------------------- */
|
||
|
|
||
|
func loadEnvFile(path string) error {
|
||
|
if path == "" {
|
||
|
log.Fatal("Path name to environment file is not allowed to be empty!")
|
||
|
}
|
||
|
return godotenv.Load(path)
|
||
|
}
|
||
|
|
||
|
func getEnvKey(key string) string {
|
||
|
return os.Getenv(key)
|
||
|
}
|
||
|
|
||
|
func readEnvKey(key string, optional ...string) (string, error) {
|
||
|
var path string = ENV_FILE_NAME
|
||
|
var err error
|
||
|
var value string
|
||
|
if len(optional) > 0 {
|
||
|
path = optional[0]
|
||
|
}
|
||
|
err = loadEnvFile(path)
|
||
|
if err != nil {
|
||
|
log.Fatalf("Could not read environment file, \033[1m%s\033[0m!\n", path)
|
||
|
}
|
||
|
err = nil
|
||
|
value = getEnvKey(key)
|
||
|
if value == "" {
|
||
|
err = errors.New(fmt.Sprintf("Environment key \033[1m%s\033[0m missing or empty in environment file \033[1m%s\033[0m!", key, path))
|
||
|
}
|
||
|
return value, err
|
||
|
}
|