]> git.maquefel.me Git - brevno-suite/hugo/commitdiff
Re-add --printUnusedTemplates and --printPathWarnings
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Fri, 19 May 2023 07:55:08 +0000 (09:55 +0200)
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Fri, 19 May 2023 09:37:05 +0000 (11:37 +0200)
And now with tests.

Updates #10953

commands/commandeer.go
commands/hugobuilder.go
testscripts/commands/hugo_printpathwarnings.txt [new file with mode: 0644]
testscripts/commands/hugo_printunusedtemplates.txt [new file with mode: 0644]

index 465516e2edc19754533fd3e061532e23b6af7ab7..222a2a0201a79342e52818c1471fb77260826892 100644 (file)
@@ -115,11 +115,13 @@ type rootCommand struct {
        environment string
 
        // Common build flags.
-       baseURL         string
-       gc              bool
-       poll            string
-       panicOnWarning  bool
-       forceSyncStatic bool
+       baseURL              string
+       gc                   bool
+       poll                 string
+       panicOnWarning       bool
+       forceSyncStatic      bool
+       printPathWarnings    bool
+       printUnusedTemplates bool
 
        // Profile flags (for debugging of performance problems)
        cpuprofile   string
@@ -538,8 +540,8 @@ func applyLocalBuildFlags(cmd *cobra.Command, r *rootCommand) {
        cmd.Flags().BoolP("noChmod", "", false, "don't sync permission mode of files")
        cmd.Flags().BoolP("noBuildLock", "", false, "don't create .hugo_build.lock file")
        cmd.Flags().BoolP("printI18nWarnings", "", false, "print missing translations")
-       cmd.Flags().BoolP("printPathWarnings", "", false, "print warnings on duplicate target paths etc.")
-       cmd.Flags().BoolP("printUnusedTemplates", "", false, "print warnings on unused templates.")
+       cmd.Flags().BoolVarP(&r.printPathWarnings, "printPathWarnings", "", false, "print warnings on duplicate target paths etc.")
+       cmd.Flags().BoolVarP(&r.printUnusedTemplates, "printUnusedTemplates", "", false, "print warnings on unused templates.")
        cmd.Flags().StringVarP(&r.cpuprofile, "profile-cpu", "", "", "write cpu profile to `file`")
        cmd.Flags().StringVarP(&r.memprofile, "profile-mem", "", "", "write memory profile to `file`")
        cmd.Flags().BoolVarP(&r.printm, "printMemoryUsage", "", false, "print memory usage to screen at intervals")
index 28c21a9a7eb1d287867daa7defde62eade476d3c..4f65140a0b365446dfdba0ed6d6e30268dee7efa 100644 (file)
@@ -41,7 +41,9 @@ import (
        "github.com/gohugoio/hugo/hugolib/filesystems"
        "github.com/gohugoio/hugo/livereload"
        "github.com/gohugoio/hugo/resources/page"
+       "github.com/gohugoio/hugo/tpl"
        "github.com/gohugoio/hugo/watcher"
+       "github.com/spf13/afero"
        "github.com/spf13/fsync"
        "golang.org/x/sync/errgroup"
        "golang.org/x/sync/semaphore"
@@ -411,6 +413,26 @@ func (c *hugoBuilder) build() error {
                if err != nil {
                        return err
                }
+
+               if c.r.printPathWarnings {
+                       hugofs.WalkFilesystems(h.Fs.PublishDir, func(fs afero.Fs) bool {
+                               if dfs, ok := fs.(hugofs.DuplicatesReporter); ok {
+                                       dupes := dfs.ReportDuplicates()
+                                       if dupes != "" {
+                                               c.r.logger.Warnln("Duplicate target paths:", dupes)
+                                       }
+                               }
+                               return false
+                       })
+               }
+
+               if c.r.printUnusedTemplates {
+                       unusedTemplates := h.Tmpl().(tpl.UnusedTemplatesProvider).UnusedTemplates()
+                       for _, unusedTemplate := range unusedTemplates {
+                               c.r.logger.Warnf("Template %s is unused, source file %s", unusedTemplate.Name(), unusedTemplate.Filename())
+                       }
+               }
+
                h.PrintProcessingStats(os.Stdout)
                c.r.Println()
        }
diff --git a/testscripts/commands/hugo_printpathwarnings.txt b/testscripts/commands/hugo_printpathwarnings.txt
new file mode 100644 (file)
index 0000000..f4c76eb
--- /dev/null
@@ -0,0 +1,17 @@
+hugo  --printPathWarnings
+
+stdout 'Duplicate target paths: .index.html \(2\)'
+
+-- hugo.toml --
+disableKinds = ["taxonomy", "term", "RSS", "sitemap", "robotsTXT", "404", "section"]
+baseURL = "https://example.org/"
+-- layouts/_default/single.html --
+Single.
+-- layouts/index.html --
+Home.
+-- content/p1.md --
+---
+title: "P1"
+url: "/"
+---
+
diff --git a/testscripts/commands/hugo_printunusedtemplates.txt b/testscripts/commands/hugo_printunusedtemplates.txt
new file mode 100644 (file)
index 0000000..312e492
--- /dev/null
@@ -0,0 +1,11 @@
+hugo  --printUnusedTemplates
+
+stdout 'Template _default/list.html is unused'
+
+-- hugo.toml --
+disableKinds = ["taxonomy", "term", "RSS", "sitemap", "robotsTXT", "404", "section", "page"]
+baseURL = "https://example.org/"
+-- layouts/index.html --
+Home.
+-- layouts/_default/list.html --
+{{ errorf "unused template: %s" .Kind }}