summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2024-02-20 14:46:03 +0100
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2024-02-20 17:00:32 +0100
commit621194a3197d27e3b5909bca9b3efa6ae70da86c (patch)
tree9dbdeac8dae393df7b63351a63bc166cc19ddecb
parent48eec2a4e63cb0b542858f3b133eba19aa23978c (diff)
Fix dart sass import regression
Fixes #12072
-rw-r--r--commands/server.go2
-rw-r--r--hugolib/filesystems/basefs.go10
-rw-r--r--hugolib/filesystems/basefs_test.go6
-rw-r--r--hugolib/pagecollections.go2
-rw-r--r--resources/resource_transformers/js/options.go2
-rw-r--r--resources/resource_transformers/tocss/dartsass/transform.go3
-rw-r--r--resources/resource_transformers/tocss/scss/tocss.go2
7 files changed, 14 insertions, 13 deletions
diff --git a/commands/server.go b/commands/server.go
index 78155521f..d08bc5277 100644
--- a/commands/server.go
+++ b/commands/server.go
@@ -1087,7 +1087,7 @@ func (s *staticSyncer) syncsStaticEvents(staticEvents []fsnotify.Event) error {
fromPath := ev.Name
- relPath, found := sourceFs.MakePathRelative(fromPath)
+ relPath, found := sourceFs.MakePathRelative(fromPath, true)
if !found {
// Not member of this virtual host.
diff --git a/hugolib/filesystems/basefs.go b/hugolib/filesystems/basefs.go
index b37fb8cb4..25c58d516 100644
--- a/hugolib/filesystems/basefs.go
+++ b/hugolib/filesystems/basefs.go
@@ -336,7 +336,7 @@ func (s *SourceFilesystems) ResolvePaths(filename string, checkExists bool) []hu
// It will return an empty string if the filename is not a member of a static filesystem.
func (s SourceFilesystems) MakeStaticPathRelative(filename string) string {
for _, staticFs := range s.Static {
- rel, _ := staticFs.MakePathRelative(filename)
+ rel, _ := staticFs.MakePathRelative(filename, true)
if rel != "" {
return rel
}
@@ -345,8 +345,8 @@ func (s SourceFilesystems) MakeStaticPathRelative(filename string) string {
}
// MakePathRelative creates a relative path from the given filename.
-func (d *SourceFilesystem) MakePathRelative(filename string) (string, bool) {
- cps, err := d.ReverseLookup(filename)
+func (d *SourceFilesystem) MakePathRelative(filename string, checkExists bool) (string, bool) {
+ cps, err := d.ReverseLookup(filename, checkExists)
if err != nil {
panic(err)
}
@@ -358,11 +358,11 @@ func (d *SourceFilesystem) MakePathRelative(filename string) (string, bool) {
}
// ReverseLookup returns the component paths for the given filename.
-func (d *SourceFilesystem) ReverseLookup(filename string) ([]hugofs.ComponentPath, error) {
+func (d *SourceFilesystem) ReverseLookup(filename string, checkExists bool) ([]hugofs.ComponentPath, error) {
var cps []hugofs.ComponentPath
hugofs.WalkFilesystems(d.Fs, func(fs afero.Fs) bool {
if rfs, ok := fs.(hugofs.ReverseLookupProvder); ok {
- if c, err := rfs.ReverseLookup(filename, true); err == nil {
+ if c, err := rfs.ReverseLookup(filename, checkExists); err == nil {
cps = append(cps, c...)
}
}
diff --git a/hugolib/filesystems/basefs_test.go b/hugolib/filesystems/basefs_test.go
index 5398055ed..ebbb378d3 100644
--- a/hugolib/filesystems/basefs_test.go
+++ b/hugolib/filesystems/basefs_test.go
@@ -380,11 +380,11 @@ Main.
`
b := hugolib.Test(t, files)
- rel, found := b.H.BaseFs.Assets.MakePathRelative(filepath.FromSlash("/themes/t1/src/main.js"))
+ rel, found := b.H.BaseFs.Assets.MakePathRelative(filepath.FromSlash("/themes/t1/src/main.js"), true)
b.Assert(found, qt.Equals, true)
b.Assert(rel, qt.Equals, filepath.FromSlash("foo/bar/main.js"))
- rel, found = b.H.BaseFs.Assets.MakePathRelative(filepath.FromSlash("/bar.txt"))
+ rel, found = b.H.BaseFs.Assets.MakePathRelative(filepath.FromSlash("/bar.txt"), true)
b.Assert(found, qt.Equals, true)
b.Assert(rel, qt.Equals, filepath.FromSlash("foo/baz.txt"))
}
@@ -460,7 +460,7 @@ Home.
b.AssertFileContent("public/index.html", "Home.")
stat := func(path string) hugofs.FileMetaInfo {
- ps, err := b.H.BaseFs.Content.ReverseLookup(filepath.FromSlash(path))
+ ps, err := b.H.BaseFs.Content.ReverseLookup(filepath.FromSlash(path), true)
b.Assert(err, qt.IsNil)
b.Assert(ps, qt.HasLen, 1)
first := ps[0]
diff --git a/hugolib/pagecollections.go b/hugolib/pagecollections.go
index 505b10bd7..58c646334 100644
--- a/hugolib/pagecollections.go
+++ b/hugolib/pagecollections.go
@@ -243,7 +243,7 @@ func (c *pageFinder) getContentNodeFromRefReverseLookup(ref string, fi hugofs.Fi
realFilename := filepath.Join(dir, ref)
- pcs, err := s.BaseFs.Content.ReverseLookup(realFilename)
+ pcs, err := s.BaseFs.Content.ReverseLookup(realFilename, true)
if err != nil {
return nil, err
}
diff --git a/resources/resource_transformers/js/options.go b/resources/resource_transformers/js/options.go
index df32e7012..1c29ad67c 100644
--- a/resources/resource_transformers/js/options.go
+++ b/resources/resource_transformers/js/options.go
@@ -218,7 +218,7 @@ func createBuildPlugins(depsManager identity.Manager, c *Client, opts Options) (
isStdin := args.Importer == stdinImporter
var relDir string
if !isStdin {
- rel, found := fs.MakePathRelative(args.Importer)
+ rel, found := fs.MakePathRelative(args.Importer, true)
if !found {
// Not in any of the /assets folders.
// This is an import from a node_modules, let
diff --git a/resources/resource_transformers/tocss/dartsass/transform.go b/resources/resource_transformers/tocss/dartsass/transform.go
index 73eca6a53..a9600f380 100644
--- a/resources/resource_transformers/tocss/dartsass/transform.go
+++ b/resources/resource_transformers/tocss/dartsass/transform.go
@@ -138,12 +138,13 @@ func (t importResolver) CanonicalizeURL(url string) (string, error) {
if url == sass.HugoVarsNamespace {
return url, nil
}
+
filePath, isURL := paths.UrlToFilename(url)
var prevDir string
var pathDir string
if isURL {
var found bool
- prevDir, found = t.c.sfs.MakePathRelative(filepath.Dir(filePath))
+ prevDir, found = t.c.sfs.MakePathRelative(filepath.Dir(filePath), false)
if !found {
// Not a member of this filesystem, let Dart Sass handle it.
diff --git a/resources/resource_transformers/tocss/scss/tocss.go b/resources/resource_transformers/tocss/scss/tocss.go
index a4c4e6d8e..a3f2a5289 100644
--- a/resources/resource_transformers/tocss/scss/tocss.go
+++ b/resources/resource_transformers/tocss/scss/tocss.go
@@ -86,7 +86,7 @@ func (t *toCSSTransformation) Transform(ctx *resources.ResourceTransformationCtx
if prev == "stdin" {
prevDir = baseDir
} else {
- prevDir, _ = t.c.sfs.MakePathRelative(filepath.Dir(prev))
+ prevDir, _ = t.c.sfs.MakePathRelative(filepath.Dir(prev), false)
if prevDir == "" {
// Not a member of this filesystem. Let LibSASS handle it.