summaryrefslogtreecommitdiffstats
path: root/modules
diff options
context:
space:
mode:
Diffstat (limited to 'modules')
-rw-r--r--modules/client.go2
-rw-r--r--modules/client_test.go4
-rw-r--r--modules/collect.go11
-rw-r--r--modules/config.go8
-rw-r--r--modules/npm/package_builder.go28
5 files changed, 37 insertions, 16 deletions
diff --git a/modules/client.go b/modules/client.go
index b9a2a48d4..fae6a4c0a 100644
--- a/modules/client.go
+++ b/modules/client.go
@@ -42,7 +42,7 @@ import (
"github.com/gohugoio/hugo/config"
- "github.com/rogpeppe/go-internal/module"
+ "golang.org/x/mod/module"
"github.com/gohugoio/hugo/common/hugio"
diff --git a/modules/client_test.go b/modules/client_test.go
index 75e3c2b08..ea910580f 100644
--- a/modules/client_test.go
+++ b/modules/client_test.go
@@ -49,7 +49,7 @@ github.com/gohugoio/hugoTestModules1_darwin/modh2_2@v1.4.0 github.com/gohugoio/h
workingDir, clean, err := htesting.CreateTempDir(hugofs.Os, fmt.Sprintf("%s-%d", modName, clientID))
c.Assert(err, qt.IsNil)
themesDir := filepath.Join(workingDir, "themes")
- err = os.Mkdir(themesDir, 0777)
+ err = os.Mkdir(themesDir, 0o777)
c.Assert(err, qt.IsNil)
ccfg := ClientConfig{
@@ -184,7 +184,7 @@ project github.com/gohugoio/hugoTestModules1_darwin/modh2_2_2@v1.3.0+vendor
c.Assert(err, qt.IsNil)
c.Assert(dirname, qt.Equals, filepath.Join(client.ccfg.ThemesDir, "../../foo"))
- dirname, err = client.createThemeDirname("../../foo", false)
+ _, err = client.createThemeDirname("../../foo", false)
c.Assert(err, qt.Not(qt.IsNil))
absDir := filepath.Join(client.ccfg.WorkingDir, "..", "..")
diff --git a/modules/collect.go b/modules/collect.go
index 6c47bde5c..a4066a46c 100644
--- a/modules/collect.go
+++ b/modules/collect.go
@@ -17,6 +17,7 @@ import (
"bufio"
"errors"
"fmt"
+ "io/fs"
"os"
"path/filepath"
"regexp"
@@ -36,7 +37,7 @@ import (
"github.com/gohugoio/hugo/hugofs/files"
- "github.com/rogpeppe/go-internal/module"
+ "golang.org/x/mod/module"
"github.com/gohugoio/hugo/config"
"github.com/spf13/afero"
@@ -282,6 +283,7 @@ func (c *collector) add(owner *moduleAdapter, moduleImport Import) (*moduleAdapt
return nil, nil
}
if found, _ := afero.Exists(c.fs, moduleDir); !found {
+ //lint:ignore ST1005 end user message.
c.err = c.wrapModuleNotFound(fmt.Errorf(`module %q not found in %q; either add it as a Hugo Module or store it in %q.`, modulePath, moduleDir, c.ccfg.ThemesDir))
return nil, nil
}
@@ -599,7 +601,12 @@ func (c *collector) mountCommonJSConfig(owner *moduleAdapter, mounts []Mount) ([
}
// Mount the common JS config files.
- fis, err := afero.ReadDir(c.fs, owner.Dir())
+ d, err := c.fs.Open(owner.Dir())
+ if err != nil {
+ return mounts, fmt.Errorf("failed to open dir %q: %q", owner.Dir(), err)
+ }
+ defer d.Close()
+ fis, err := d.(fs.ReadDirFile).ReadDir(-1)
if err != nil {
return mounts, fmt.Errorf("failed to read dir %q: %q", owner.Dir(), err)
}
diff --git a/modules/config.go b/modules/config.go
index f8faf7969..62671613c 100644
--- a/modules/config.go
+++ b/modules/config.go
@@ -29,7 +29,6 @@ import (
const WorkspaceDisabled = "off"
var DefaultModuleConfig = Config{
-
// Default to direct, which means "git clone" and similar. We
// will investigate proxy settings in more depth later.
// See https://github.com/golang/go/issues/26334
@@ -58,7 +57,6 @@ var DefaultModuleConfig = Config{
// ApplyProjectConfigDefaults applies default/missing module configuration for
// the main project.
func ApplyProjectConfigDefaults(mod Module, cfgs ...config.AllProvider) error {
-
moda := mod.(*moduleAdapter)
// To bridge between old and new configuration format we need
@@ -99,14 +97,19 @@ func ApplyProjectConfigDefaults(mod Module, cfgs ...config.AllProvider) error {
dir = dirs.ContentDir
dropLang = dir == dirsBase.ContentDir
case files.ComponentFolderData:
+ //lint:ignore SA1019 Keep as adapter for now.
dir = dirs.DataDir
case files.ComponentFolderLayouts:
+ //lint:ignore SA1019 Keep as adapter for now.
dir = dirs.LayoutDir
case files.ComponentFolderI18n:
+ //lint:ignore SA1019 Keep as adapter for now.
dir = dirs.I18nDir
case files.ComponentFolderArchetypes:
+ //lint:ignore SA1019 Keep as adapter for now.
dir = dirs.ArcheTypeDir
case files.ComponentFolderAssets:
+ //lint:ignore SA1019 Keep as adapter for now.
dir = dirs.AssetDir
case files.ComponentFolderStatic:
// For static dirs, we only care about the language in multihost setups.
@@ -230,6 +233,7 @@ func decodeConfig(cfg config.Provider, pathReplacements map[string]string) (Conf
c.Workspace = filepath.Join(workingDir, c.Workspace)
}
if _, err := os.Stat(c.Workspace); err != nil {
+ //lint:ignore ST1005 end user message.
return c, fmt.Errorf("module workspace %q does not exist. Check your module.workspace setting (or HUGO_MODULE_WORKSPACE env var).", c.Workspace)
}
}
diff --git a/modules/npm/package_builder.go b/modules/npm/package_builder.go
index 9bdc7eb78..0deed2f42 100644
--- a/modules/npm/package_builder.go
+++ b/modules/npm/package_builder.go
@@ -18,6 +18,7 @@ import (
"encoding/json"
"fmt"
"io"
+ "io/fs"
"strings"
"github.com/gohugoio/hugo/common/hugio"
@@ -44,17 +45,17 @@ const (
}`
)
-func Pack(fs afero.Fs, fis []hugofs.FileMetaInfo) error {
+func Pack(sourceFs, assetsWithDuplicatesPreservedFs afero.Fs) error {
var b *packageBuilder
// Have a package.hugo.json?
- fi, err := fs.Stat(files.FilenamePackageHugoJSON)
+ fi, err := sourceFs.Stat(files.FilenamePackageHugoJSON)
if err != nil {
// Have a package.json?
- fi, err = fs.Stat(packageJSONName)
+ fi, err = sourceFs.Stat(packageJSONName)
if err == nil {
// Preserve the original in package.hugo.json.
- if err = hugio.CopyFile(fs, packageJSONName, files.FilenamePackageHugoJSON); err != nil {
+ if err = hugio.CopyFile(sourceFs, packageJSONName, files.FilenamePackageHugoJSON); err != nil {
return fmt.Errorf("npm pack: failed to copy package file: %w", err)
}
} else {
@@ -62,15 +63,15 @@ func Pack(fs afero.Fs, fis []hugofs.FileMetaInfo) error {
name := "project"
// Use the Hugo site's folder name as the default name.
// The owner can change it later.
- rfi, err := fs.Stat("")
+ rfi, err := sourceFs.Stat("")
if err == nil {
name = rfi.Name()
}
packageJSONContent := fmt.Sprintf(packageJSONTemplate, name, "0.1.0")
- if err = afero.WriteFile(fs, files.FilenamePackageHugoJSON, []byte(packageJSONContent), 0666); err != nil {
+ if err = afero.WriteFile(sourceFs, files.FilenamePackageHugoJSON, []byte(packageJSONContent), 0o666); err != nil {
return err
}
- fi, err = fs.Stat(files.FilenamePackageHugoJSON)
+ fi, err = sourceFs.Stat(files.FilenamePackageHugoJSON)
if err != nil {
return err
}
@@ -86,9 +87,18 @@ func Pack(fs afero.Fs, fis []hugofs.FileMetaInfo) error {
b = newPackageBuilder(meta.Module, f)
f.Close()
+ d, err := assetsWithDuplicatesPreservedFs.Open(files.FolderJSConfig)
+ if err != nil {
+ return nil
+ }
+
+ fis, err := d.(fs.ReadDirFile).ReadDir(-1)
+ if err != nil {
+ return fmt.Errorf("npm pack: failed to read assets: %w", err)
+ }
+
for _, fi := range fis {
if fi.IsDir() {
- // We only care about the files in the root.
continue
}
@@ -137,7 +147,7 @@ func Pack(fs afero.Fs, fis []hugofs.FileMetaInfo) error {
return fmt.Errorf("npm pack: failed to marshal JSON: %w", err)
}
- if err := afero.WriteFile(fs, packageJSONName, packageJSONData.Bytes(), 0666); err != nil {
+ if err := afero.WriteFile(sourceFs, packageJSONName, packageJSONData.Bytes(), 0o666); err != nil {
return fmt.Errorf("npm pack: failed to write package.json: %w", err)
}