}
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")
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
}
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)
+}