func GetExtraConfig()

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
}