mirror of
https://github.com/woodpecker-ci/woodpecker.git
synced 2025-10-21 21:23:39 +00:00
load all things via middleware
This commit is contained in:
@@ -1,117 +0,0 @@
|
||||
package envconfig
|
||||
|
||||
import (
|
||||
"bufio"
|
||||
"errors"
|
||||
"os"
|
||||
"strconv"
|
||||
"strings"
|
||||
)
|
||||
|
||||
type Env map[string]string
|
||||
|
||||
// Get returns the value of the environment variable named by the key.
|
||||
func (env Env) Get(key string) string {
|
||||
return env[key]
|
||||
}
|
||||
|
||||
// String returns the string value of the environment variable named by the
|
||||
// key. If the variable is not present, the default value is returned.
|
||||
func (env Env) String(key, value string) string {
|
||||
got, ok := env[key]
|
||||
if ok {
|
||||
value = got
|
||||
}
|
||||
return value
|
||||
}
|
||||
|
||||
// Bool returns the boolean value of the environment variable named by the key.
|
||||
// If the variable is not present, the default value is returned.
|
||||
func (env Env) Bool(name string, value bool) bool {
|
||||
got, ok := env[name]
|
||||
if ok {
|
||||
value, _ = strconv.ParseBool(got)
|
||||
}
|
||||
return value
|
||||
}
|
||||
|
||||
// Int returns the integer value of the environment variable named by the key.
|
||||
// If the variable is not present, the default value is returned.
|
||||
func (env Env) Int(name string, value int) int {
|
||||
got, ok := env[name]
|
||||
if ok {
|
||||
value, _ = strconv.Atoi(got)
|
||||
}
|
||||
return value
|
||||
}
|
||||
|
||||
// Load reads the environment file and reads variables in "key=value" format.
|
||||
// Then it read the system environment variables. It returns the combined
|
||||
// results in a key value map.
|
||||
func Load(filepath string) Env {
|
||||
var envs = map[string]string{}
|
||||
|
||||
// load the environment file
|
||||
f, err := os.Open(filepath)
|
||||
if err == nil {
|
||||
defer f.Close()
|
||||
|
||||
r := bufio.NewReader(f)
|
||||
for {
|
||||
line, _, err := r.ReadLine()
|
||||
if err != nil {
|
||||
break
|
||||
}
|
||||
|
||||
key, val, err := parseln(string(line))
|
||||
if err != nil {
|
||||
continue
|
||||
}
|
||||
|
||||
os.Setenv(key, val)
|
||||
}
|
||||
}
|
||||
|
||||
// load the environment variables
|
||||
for _, env := range os.Environ() {
|
||||
key, val, err := parseln(env)
|
||||
if err != nil {
|
||||
continue
|
||||
}
|
||||
|
||||
envs[key] = val
|
||||
}
|
||||
|
||||
return Env(envs)
|
||||
}
|
||||
|
||||
// helper function to parse a "key=value" environment variable string.
|
||||
func parseln(line string) (key string, val string, err error) {
|
||||
line = removeComments(line)
|
||||
if len(line) == 0 {
|
||||
return
|
||||
}
|
||||
splits := strings.SplitN(line, "=", 2)
|
||||
|
||||
if len(splits) < 2 {
|
||||
err = errors.New("missing delimiter '='")
|
||||
return
|
||||
}
|
||||
|
||||
key = strings.Trim(splits[0], " ")
|
||||
val = strings.Trim(splits[1], ` "'`)
|
||||
return
|
||||
}
|
||||
|
||||
// helper function to trim comments and whitespace from a string.
|
||||
func removeComments(s string) (_ string) {
|
||||
if len(s) == 0 || string(s[0]) == "#" {
|
||||
return
|
||||
} else {
|
||||
index := strings.Index(s, " #")
|
||||
if index > -1 {
|
||||
s = strings.TrimSpace(s[0:index])
|
||||
}
|
||||
}
|
||||
return s
|
||||
}
|
Reference in New Issue
Block a user