fix: trim comments that are not modifers

See coop-cloud/organising#505
This commit is contained in:
2023-10-08 22:42:34 +02:00
parent a43125701c
commit be693e9df0
3 changed files with 63 additions and 5 deletions

View File

@ -36,6 +36,11 @@ var REPOS_BASE_URL = "https://git.coopcloud.tech/coop-cloud"
var CATALOGUE_JSON_REPO_NAME = "recipes-catalogue-json"
var SSH_URL_TEMPLATE = "ssh://git@git.coopcloud.tech:2222/coop-cloud/%s.git"
// envVarModifiers is a list of env var modifier strings. These are added to
// env vars as comments and modify their processing by Abra, e.g. determining
// how long secrets should be.
var envVarModifiers = []string{"length"}
// GetServers retrieves all servers.
func GetServers() ([]string, error) {
var servers []string
@ -50,18 +55,38 @@ func GetServers() ([]string, error) {
return servers, nil
}
// ContainsEnvVarModifier determines if an env var contains a modifier.
func ContainsEnvVarModifier(envVar string) bool {
for _, mod := range envVarModifiers {
if strings.Contains(envVar, fmt.Sprintf("%s=", mod)) {
return true
}
}
return false
}
// ReadEnv loads an app envivornment into a map.
func ReadEnv(filePath string) (AppEnv, error) {
var envFile AppEnv
var envVars AppEnv
envFile, err := godotenv.Read(filePath)
envVars, err := godotenv.Read(filePath)
if err != nil {
return nil, err
}
logrus.Debugf("read %s from %s", envFile, filePath)
for idx, envVar := range envVars {
if strings.Contains(envVar, "#") {
if ContainsEnvVarModifier(envVar) {
continue
}
vals := strings.Split(envVar, "#")
envVars[idx] = strings.TrimSpace(vals[0])
}
}
return envFile, nil
logrus.Debugf("read %s from %s", envVars, filePath)
return envVars, nil
}
// ReadServerNames retrieves all server names.