in pkg/extraconfig/extraconfig.go [37:86]
func GetExtraConfig() (*ExtraConfig, error) {
// read .env from os
file, err := os.Open(getConfigFilePath())
if err != nil {
return nil, err
}
defer file.Close()
// read its content line by line and handle it as keyvalue pairs
extraConfigMap := map[string]string{}
scanner := bufio.NewScanner(file)
for scanner.Scan() {
line := scanner.Text()
if strings.HasPrefix(strings.TrimSpace(line), "#") {
continue
}
if equal := strings.Index(line, "="); equal >= 0 {
if key := strings.TrimSpace(line[:equal]); len(key) > 0 {
value := ""
if len(line) > equal {
value = strings.TrimSpace(line[equal+1:])
}
extraConfigMap[key] = value
}
}
}
// check error
if err := scanner.Err(); err != nil {
return nil, err
}
// build extraconfig object
extraConfig := ExtraConfig{}
for key, val := range extraConfigMap {
switch key {
case "loggingLevel":
extraConfig.LoggingLevel = val
case "awsProfile":
extraConfig.AwsProfile = val
case "awsCredentialFile":
extraConfig.AwsCredentialFile = val
default:
os.Setenv(key, val)
}
}
return &extraConfig, nil
}