postcss: Improve validation of option 'config'

This commit is contained in:
Andreas Deininger 2023-05-22 18:14:10 +02:00 committed by GitHub
parent 10d0fcc01f
commit 9a0370e8eb
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 16 additions and 8 deletions

View file

@ -188,19 +188,19 @@ func (b *BaseFs) AbsProjectContentDir(filename string) (string, string, error) {
// ResolveJSConfigFile resolves the JS-related config file to a absolute // ResolveJSConfigFile resolves the JS-related config file to a absolute
// filename. One example of such would be postcss.config.js. // filename. One example of such would be postcss.config.js.
func (fs *BaseFs) ResolveJSConfigFile(name string) string { func (fs *BaseFs) ResolveJSConfigFile(name string) (string, bool) {
// First look in assets/_jsconfig // First look in assets/_jsconfig
fi, err := fs.Assets.Fs.Stat(filepath.Join(files.FolderJSConfig, name)) fi, err := fs.Assets.Fs.Stat(filepath.Join(files.FolderJSConfig, name))
if err == nil { if err == nil {
return fi.(hugofs.FileMetaInfo).Meta().Filename return fi.(hugofs.FileMetaInfo).Meta().Filename, fi.IsDir()
} }
// Fall back to the work dir. // Fall back to the work dir.
fi, err = fs.Work.Stat(name) fi, err = fs.Work.Stat(name)
if err == nil { if err == nil {
return fi.(hugofs.FileMetaInfo).Meta().Filename return fi.(hugofs.FileMetaInfo).Meta().Filename, fi.IsDir()
} }
return "" return "", false
} }
// MakePathRelative creates a relative path from the given filename. // MakePathRelative creates a relative path from the given filename.

View file

@ -134,13 +134,17 @@ func (t *babelTransformation) Transform(ctx *resources.ResourceTransformationCtx
} }
configFile = filepath.Clean(configFile) configFile = filepath.Clean(configFile)
isConfigFileDir := false
// We need an absolute filename to the config file. // We need an absolute filename to the config file.
if !filepath.IsAbs(configFile) { if !filepath.IsAbs(configFile) {
configFile = t.rs.BaseFs.ResolveJSConfigFile(configFile) configFile, isConfigFileDir = t.rs.BaseFs.ResolveJSConfigFile(configFile)
if isConfigFileDir {
logger.Warnf("babel config %q must be a file, not a directory", configFile)
}
if configFile == "" && t.options.Config != "" { if configFile == "" && t.options.Config != "" {
// Only fail if the user specified config file is not found. // Only fail if the user specified config file is not found.
return fmt.Errorf("babel config %q not found:", configFile) return fmt.Errorf("babel config file %q not found", configFile)
} }
} }

View file

@ -172,13 +172,17 @@ func (t *postcssTransformation) Transform(ctx *resources.ResourceTransformationC
} }
configFile = filepath.Clean(configFile) configFile = filepath.Clean(configFile)
isConfigFileDir := false
// We need an absolute filename to the config file. // We need an absolute filename to the config file.
if !filepath.IsAbs(configFile) { if !filepath.IsAbs(configFile) {
configFile = t.rs.BaseFs.ResolveJSConfigFile(configFile) configFile, isConfigFileDir = t.rs.BaseFs.ResolveJSConfigFile(configFile)
if configFile == "" && options.Config != "" { if configFile == "" && options.Config != "" {
// Only fail if the user specified config file is not found. // Only fail if the user specified config file is not found.
return fmt.Errorf("postcss config %q not found:", options.Config) return fmt.Errorf("postcss config directory %q not found", options.Config)
}
if !isConfigFileDir {
logger.Warnf("postcss config %q must be a directory", options.Config)
} }
} }