Fix panic when specifying multiple excludeFiles directives

Fixes #9076
This commit is contained in:
Bjørn Erik Pedersen 2021-10-25 12:18:00 +02:00
parent b959ecbc81
commit 64e1613fb3
3 changed files with 10 additions and 4 deletions

View file

@ -62,7 +62,7 @@ includeFiles = "/mydata/**"
[[module.mounts]]
source = 'assets'
target = 'assets'
excludeFiles = "/**exclude.*"
excludeFiles = ["/**exclude.*", "/moooo.*"]
[[module.mounts]]
source = 'i18n'
target = 'i18n'

View file

@ -149,13 +149,13 @@ func (m *ModulesConfig) finalize(logger loggers.Logger) error {
func filterUnwantedMounts(mounts []Mount) []Mount {
// Remove duplicates
seen := make(map[Mount]bool)
seen := make(map[string]bool)
tmp := mounts[:0]
for _, m := range mounts {
if !seen[m] {
if !seen[m.key()] {
tmp = append(tmp, m)
}
seen[m] = true
seen[m.key()] = true
}
return tmp
}

View file

@ -15,6 +15,7 @@ package modules
import (
"fmt"
"path"
"path/filepath"
"strings"
@ -386,6 +387,11 @@ type Mount struct {
ExcludeFiles interface{}
}
// Used as key to remove duplicates.
func (m Mount) key() string {
return path.Join(m.Lang, m.Source, m.Target)
}
func (m Mount) Component() string {
return strings.Split(m.Target, fileSeparator)[0]
}