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
 | 
						|
}
 |