]> git.maquefel.me Git - brevno-suite/hugo/commitdiff
Fix cache busting setup
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Wed, 19 Jul 2023 13:37:17 +0000 (15:37 +0200)
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Wed, 19 Jul 2023 17:50:37 +0000 (19:50 +0200)
By correctly capturing the target variable when compiling the cache buster.

Fixes #11268

config/commonConfig.go
config/commonConfig_test.go

index 5cf526708c94d986ec9c2372343ca4bec7c2532c..ef9d475537c887c657b528e1e994fabfcd31b3bf 100644 (file)
@@ -333,11 +333,11 @@ func (c *CacheBuster) CompileConfig(logger loggers.Logger) error {
        }
 
        source := c.Source
-       target := c.Target
        sourceRe, err := regexp.Compile(source)
        if err != nil {
                return fmt.Errorf("failed to compile cache buster source %q: %w", c.Source, err)
        }
+       target := c.Target
        var compileErr error
        debugl := logger.Logger().WithLevel(logg.LevelDebug).WithField(loggers.FieldNameCmd, "cachebuster")
 
@@ -353,23 +353,23 @@ func (c *CacheBuster) CompileConfig(logger loggers.Logger) error {
                        return nil
                }
                groups := m[1:]
+               currentTarget := target
                // Replace $1, $2 etc. in target.
-
                for i, g := range groups {
-                       target = strings.ReplaceAll(target, fmt.Sprintf("$%d", i+1), g)
+                       currentTarget = strings.ReplaceAll(target, fmt.Sprintf("$%d", i+1), g)
                }
-               targetRe, err := regexp.Compile(target)
+               targetRe, err := regexp.Compile(currentTarget)
                if err != nil {
-                       compileErr = fmt.Errorf("failed to compile cache buster target %q: %w", target, err)
+                       compileErr = fmt.Errorf("failed to compile cache buster target %q: %w", currentTarget, err)
                        return nil
                }
-               return func(s string) bool {
-                       match = targetRe.MatchString(s)
+               return func(ss string) bool {
+                       match = targetRe.MatchString(ss)
                        matchString := "no match"
                        if match {
                                matchString = "match!"
                        }
-                       logger.Debugf("Matching %q with target %q: %s", s, target, matchString)
+                       logger.Debugf("Matching %q with target %q: %s", ss, currentTarget, matchString)
 
                        return match
                }
index b8130eb0ddb19f9a82c1eab55b762bd7760c778b..8aa1318dd93023bb1eb05b89484fa4922b2b6c26 100644 (file)
@@ -164,3 +164,36 @@ func TestBuildConfigCacheBusters(t *testing.T) {
        c.Assert(m("json"), qt.IsTrue)
 
 }
+
+func TestBuildConfigCacheBusterstTailwindSetup(t *testing.T) {
+       c := qt.New(t)
+       cfg := New()
+       cfg.Set("build", map[string]interface{}{
+               "cacheBusters": []map[string]string{
+                       {
+                               "source": "assets/watching/hugo_stats\\.json",
+                               "target": "css",
+                       },
+                       {
+                               "source": "(postcss|tailwind)\\.config\\.js",
+                               "target": "css",
+                       },
+                       {
+                               "source": "assets/.*\\.(js|ts|jsx|tsx)",
+                               "target": "js",
+                       },
+                       {
+                               "source": "assets/.*\\.(.*)$",
+                               "target": "$1",
+                       },
+               },
+       })
+
+       conf := DecodeBuildConfig(cfg)
+       l := loggers.NewDefault()
+       c.Assert(conf.CompileConfig(l), qt.IsNil)
+
+       m, err := conf.MatchCacheBuster(l, "assets/watching/hugo_stats.json")
+       c.Assert(err, qt.IsNil)
+       c.Assert(m("css"), qt.IsTrue)
+}