diff options
Diffstat (limited to 'modules')
-rw-r--r-- | modules/client.go | 2 | ||||
-rw-r--r-- | modules/client_test.go | 4 | ||||
-rw-r--r-- | modules/collect.go | 11 | ||||
-rw-r--r-- | modules/config.go | 8 | ||||
-rw-r--r-- | modules/npm/package_builder.go | 28 |
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) } |