cmd: Support ' quotes in envfile parsing (#5437)

This commit is contained in:
Matt Holt 2023-04-10 13:55:45 -06:00 committed by GitHub
parent ff35ba9ec3
commit 205b142614
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -374,18 +374,19 @@ func parseEnvFile(envInput io.Reader) (map[string]string, error) {
} }
// quoted value: support newlines // quoted value: support newlines
if strings.HasPrefix(val, `"`) { if strings.HasPrefix(val, `"`) || strings.HasPrefix(val, "'") {
for !(strings.HasSuffix(line, `"`) && !strings.HasSuffix(line, `\"`)) { quote := string(val[0])
val = strings.ReplaceAll(val, `\"`, `"`) for !(strings.HasSuffix(line, quote) && !strings.HasSuffix(line, `\`+quote)) {
val = strings.ReplaceAll(val, `\`+quote, quote)
if !scanner.Scan() { if !scanner.Scan() {
break break
} }
lineNumber++ lineNumber++
line = strings.ReplaceAll(scanner.Text(), `\"`, `"`) line = strings.ReplaceAll(scanner.Text(), `\`+quote, quote)
val += "\n" + line val += "\n" + line
} }
val = strings.TrimPrefix(val, `"`) val = strings.TrimPrefix(val, quote)
val = strings.TrimSuffix(val, `"`) val = strings.TrimSuffix(val, quote)
} }
envMap[key] = val envMap[key] = val