diff options
author | Bjørn Erik Pedersen <[email protected]> | 2019-02-01 07:45:35 +0100 |
---|---|---|
committer | Bjørn Erik Pedersen <[email protected]> | 2019-02-01 07:47:40 +0100 |
commit | 3244cb3b31f8f8c39d9dfa82bc01fb2d6db59257 (patch) | |
tree | 8bf7e67eb83d734ccf8247f217e6d474ef640917 /config | |
parent | d9282cf98a346fcf98f363d9c353e4920ca85fc7 (diff) | |
download | hugo-3244cb3b31f8f8c39d9dfa82bc01fb2d6db59257.tar.gz hugo-3244cb3b31f8f8c39d9dfa82bc01fb2d6db59257.zip |
Ignore unknown config files in config dir
Swap files etc.
Fixes #5646
Diffstat (limited to 'config')
-rw-r--r-- | config/configLoader.go | 19 | ||||
-rw-r--r-- | config/configLoader_test.go | 34 |
2 files changed, 52 insertions, 1 deletions
diff --git a/config/configLoader.go b/config/configLoader.go index f2265dc6a..b8aa3fda3 100644 --- a/config/configLoader.go +++ b/config/configLoader.go @@ -14,6 +14,9 @@ package config import ( + "path/filepath" + "strings" + "github.com/gohugoio/hugo/common/maps" "github.com/gohugoio/hugo/parser/metadecoders" "github.com/spf13/afero" @@ -21,9 +24,23 @@ import ( ) var ( - ValidConfigFileExtensions = []string{"toml", "yaml", "yml", "json"} + ValidConfigFileExtensions = []string{"toml", "yaml", "yml", "json"} + validConfigFileExtensionsMap map[string]bool = make(map[string]bool) ) +func init() { + for _, ext := range ValidConfigFileExtensions { + validConfigFileExtensionsMap[ext] = true + } +} + +// IsValidConfigFilename returns whether filename is one of the supported +// config formats in Hugo. +func IsValidConfigFilename(filename string) bool { + ext := strings.ToLower(strings.TrimPrefix(filepath.Ext(filename), ".")) + return validConfigFileExtensionsMap[ext] +} + // FromConfigString creates a config from the given YAML, JSON or TOML config. This is useful in tests. func FromConfigString(config, configType string) (Provider, error) { v := newViper() diff --git a/config/configLoader_test.go b/config/configLoader_test.go new file mode 100644 index 000000000..06a00df3b --- /dev/null +++ b/config/configLoader_test.go @@ -0,0 +1,34 @@ +// Copyright 2019 The Hugo Authors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package config + +import ( + "strings" + "testing" + + "github.com/stretchr/testify/require" +) + +func TestIsValidConfigFileName(t *testing.T) { + assert := require.New(t) + + for _, ext := range ValidConfigFileExtensions { + filename := "config." + ext + assert.True(IsValidConfigFilename(filename), ext) + assert.True(IsValidConfigFilename(strings.ToUpper(filename))) + } + + assert.False(IsValidConfigFilename("")) + assert.False(IsValidConfigFilename("config.toml.swp")) +} |