diff options
Diffstat (limited to 'caddyconfig')
-rw-r--r-- | caddyconfig/httpcaddyfile/directives.go | 20 | ||||
-rw-r--r-- | caddyconfig/httpcaddyfile/httptype.go | 1 |
2 files changed, 21 insertions, 0 deletions
diff --git a/caddyconfig/httpcaddyfile/directives.go b/caddyconfig/httpcaddyfile/directives.go index 526ac87..dad27ba 100644 --- a/caddyconfig/httpcaddyfile/directives.go +++ b/caddyconfig/httpcaddyfile/directives.go @@ -81,6 +81,26 @@ type Helper struct { *caddyfile.Dispenser warnings *[]caddyconfig.Warning matcherDefs map[string]map[string]json.RawMessage + parentBlock caddyfile.ServerBlock +} + +// Caddyfiles returns the list of config files from +// which tokens in the current server block were loaded. +func (h Helper) Caddyfiles() []string { + // first obtain set of names of files involved + // in this server block, without duplicates + files := make(map[string]struct{}) + for _, segment := range h.parentBlock.Segments { + for _, token := range segment { + files[token.File] = struct{}{} + } + } + // then convert the set into a slice + filesSlice := make([]string, 0, len(files)) + for file := range files { + filesSlice = append(filesSlice, file) + } + return filesSlice } // JSON converts val into JSON. Any errors are added to warnings. diff --git a/caddyconfig/httpcaddyfile/httptype.go b/caddyconfig/httpcaddyfile/httptype.go index e7e7c87..00ce2cf 100644 --- a/caddyconfig/httpcaddyfile/httptype.go +++ b/caddyconfig/httpcaddyfile/httptype.go @@ -95,6 +95,7 @@ func (st ServerType) Setup(originalServerBlocks []caddyfile.ServerBlock, Dispenser: caddyfile.NewDispenser(segment), warnings: &warnings, matcherDefs: matcherDefs, + parentBlock: sb.block, }) if err != nil { return nil, warnings, fmt.Errorf("parsing caddyfile tokens for '%s': %v", dir, err) |