Files
docker-cli/components/engine/builder/evaluator/support.go
T
Erik Hollensbe 68301c3828 builder: parser and beginnings of the evaluator
Docker-DCO-1.1-Signed-off-by: Erik Hollensbe <github@hollensbe.org> (github: erikh)
Upstream-commit: 22c46af4b358cf3ec4f7af47c701064c00cf7de4
Component: engine
2014-08-27 18:52:29 -07:00

34 lines
804 B
Go

package evaluator
import (
"regexp"
"strings"
)
var (
TOKEN_ESCAPED_QUOTE = regexp.MustCompile(`\\"`)
TOKEN_ESCAPED_ESCAPE = regexp.MustCompile(`\\\\`)
TOKEN_ENV_INTERPOLATION = regexp.MustCompile("(\\\\\\\\+|[^\\\\]|\\b|\\A)\\$({?)([[:alnum:]_]+)(}?)")
)
func stripQuotes(str string) string {
str = str[1 : len(str)-1]
str = TOKEN_ESCAPED_QUOTE.ReplaceAllString(str, `"`)
return TOKEN_ESCAPED_ESCAPE.ReplaceAllString(str, `\`)
}
func replaceEnv(b *buildFile, str string) string {
for _, match := range TOKEN_ENV_INTERPOLATION.FindAllString(str, -1) {
match = match[strings.Index(match, "$"):]
matchKey := strings.Trim(match, "${}")
for envKey, envValue := range b.env {
if matchKey == envKey {
str = strings.Replace(str, match, envValue, -1)
}
}
}
return str
}