master > master: codego initialisiert
This commit is contained in:
71
codego/core/environment/environment.go
Normal file
71
codego/core/environment/environment.go
Normal file
@@ -0,0 +1,71 @@
|
||||
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
|
||||
}
|
||||
Reference in New Issue
Block a user