From a8d45277ca387ca4769fb4e881d242a5896cca5a Mon Sep 17 00:00:00 2001 From: Francis Lavoie Date: Thu, 22 Apr 2021 20:29:04 -0400 Subject: caddyfile: Fix `import` replacing unrelated placeholders (#4129) * caddyfile: Fix `import` replacing unrelated placeholders See https://caddy.community/t/snippet-issue-works-outside-snippet/12231 So it turns out that `NewReplacer()` gives a replacer with some global defaults (like `{env.*}` and some system and time placeholders), which is not ideal when running `import` because we just want to replace `{args.*}` only, and nothing else. * caddyfile: Add test --- replacer.go | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'replacer.go') diff --git a/replacer.go b/replacer.go index 29d8e26..e6cfded 100644 --- a/replacer.go +++ b/replacer.go @@ -36,6 +36,18 @@ func NewReplacer() *Replacer { return rep } +// NewEmptyReplacer returns a new Replacer, +// without the global default replacements. +func NewEmptyReplacer() *Replacer { + rep := &Replacer{ + static: make(map[string]interface{}), + } + rep.providers = []ReplacerFunc{ + rep.fromStatic, + } + return rep +} + // Replacer can replace values in strings. // A default/empty Replacer is not valid; // use NewReplacer to make one. -- cgit v1.2.3