From 4cac5f5e306b6c301258eb9936094eb910264c9a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B8rn=20Erik=20Pedersen?= Date: Mon, 22 May 2023 15:29:27 +0200 Subject: [PATCH] Avoid writing to hugo_stats.json when there are no changes Fixes #10985 --- hugolib/hugo_sites_build.go | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/hugolib/hugo_sites_build.go b/hugolib/hugo_sites_build.go index f86d425b3..3464385d3 100644 --- a/hugolib/hugo_sites_build.go +++ b/hugolib/hugo_sites_build.go @@ -455,12 +455,21 @@ func (h *HugoSites) writeBuildStats() error { HTMLElements: *htmlElements, } + const hugoStatsName = "hugo_stats.json" + js, err := json.MarshalIndent(stats, "", " ") if err != nil { return err } - filename := filepath.Join(h.Configs.LoadingInfo.BaseConfig.WorkingDir, "hugo_stats.json") + filename := filepath.Join(h.Configs.LoadingInfo.BaseConfig.WorkingDir, hugoStatsName) + + if existingContent, err := afero.ReadFile(hugofs.Os, filename); err == nil { + // Check if the content has changed. + if bytes.Equal(existingContent, js) { + return nil + } + } // Make sure it's always written to the OS fs. if err := afero.WriteFile(hugofs.Os, filename, js, 0666); err != nil {