From 01465932e7a8abf3ebfdb281da6c3edf11c01293 Mon Sep 17 00:00:00 2001 From: Michael Banzon Date: Thu, 5 Nov 2015 18:01:44 +0100 Subject: [PATCH] Environment variables Windows style Added the Windows style ({%%}) for environment variables in Caddyfiles (for issue #304). --- caddy/parse/parsing.go | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/caddy/parse/parsing.go b/caddy/parse/parsing.go index df8feb54b..96005881f 100644 --- a/caddy/parse/parsing.go +++ b/caddy/parse/parsing.go @@ -8,6 +8,11 @@ import ( "strings" ) +var ( + unixEnvRegEx = regexp.MustCompile("{\\$[^}]+}") + windowsEnvRegEx = regexp.MustCompile("{%[^}]+%}") +) + type parser struct { Dispenser block serverBlock // current server block being parsed @@ -333,12 +338,18 @@ func (sb serverBlock) HostList() []string { } func getValFromEnv(s string) string { - re := regexp.MustCompile("{\\$[^}]+}") - envRefs := re.FindAllString(s, -1) + envRefsUnix := unixEnvRegEx.FindAllString(s, -1) - for _, ref := range envRefs { + for _, ref := range envRefsUnix { s = strings.Replace(s, ref, os.Getenv(ref[2:len(ref)-1]), -1) } + envRefsWin := unixEnvRegEx.FindAllString(s, -1) + + for _, ref := range envRefsWin { + s = strings.Replace(s, ref, os.Getenv(ref[2:len(ref)-2]), -1) + } + return s + }