]> git.maquefel.me Git - brevno-suite/hugo/commitdiff
Deprecate kind, lang, and path from front matter
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Mon, 10 Feb 2025 17:50:56 +0000 (18:50 +0100)
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Mon, 10 Feb 2025 20:22:43 +0000 (21:22 +0100)
These were added to the page meta object when we implemented "pages from data", but were not meant to be used in front matter.

That is not supported, so we might as well add validation.

Fixes #12484

commands/commandeer.go
common/hugo/hugo.go
common/loggers/loggerglobal.go
config/allconfig/load.go
config/privacy/privacyConfig_test.go
hugolib/page__meta.go
hugolib/page_test.go
hugolib/testhelpers_test.go
tpl/tplimpl/shortcodes_integration_test.go

index c53235cefe5a17a9d828c18df7c446530ff41084..697ece1f05403d2aa70b77f6647fe90d57394137 100644 (file)
@@ -448,7 +448,7 @@ func (r *rootCommand) PreRun(cd, runner *simplecobra.Commandeer) error {
                return err
        }
        // Set up the global logger early to allow info deprecations during config load.
-       loggers.InitGlobalLogger(r.logger.Level(), false)
+       loggers.SetGlobalLogger(r.logger)
 
        r.changesFromBuild = make(chan []identity.Identity, 10)
 
index 8b32432db0f2a3723860e1e44fa5dbd5b662f9bb..815c25fa750726c4dc126e4be9c3841a8842f17f 100644 (file)
@@ -414,6 +414,15 @@ func Deprecate(item, alternative string, version string) {
        DeprecateLevel(item, alternative, version, level)
 }
 
+// DeprecateLevelMin informs about a deprecation starting at the given version, but with a minimum log level.
+func DeprecateLevelMin(item, alternative string, version string, minLevel logg.Level) {
+       level := deprecationLogLevelFromVersion(version)
+       if level < minLevel {
+               level = minLevel
+       }
+       DeprecateLevel(item, alternative, version, level)
+}
+
 // DeprecateLevel informs about a deprecation logging at the given level.
 func DeprecateLevel(item, alternative, version string, level logg.Level) {
        var msg string
index c3e2970d05370e43665d7f712ef3bf51810e1363..b8c9a6931d6a0f885104e7af3d473e503d87c3b8 100644 (file)
@@ -21,7 +21,15 @@ import (
        "github.com/bep/logg"
 )
 
-func InitGlobalLogger(level logg.Level, panicOnWarnings bool) {
+// SetGlobalLogger sets the global logger.
+// This is used in a few places in Hugo, e.g. deprecated functions.
+func SetGlobalLogger(logger Logger) {
+       logMu.Lock()
+       defer logMu.Unlock()
+       log = logger
+}
+
+func initGlobalLogger(level logg.Level, panicOnWarnings bool) {
        logMu.Lock()
        defer logMu.Unlock()
        var logHookLast func(e *logg.Entry) error
@@ -50,5 +58,5 @@ func Log() Logger {
 var log Logger
 
 func init() {
-       InitGlobalLogger(logg.LevelWarn, false)
+       initGlobalLogger(logg.LevelWarn, false)
 }
index 999e03645b055b4467ef04a8a27668ef12a4bb0e..9e9c7a42a5696021770ecbe0f7f3325c0c7dab48 100644 (file)
@@ -91,7 +91,7 @@ func LoadConfig(d ConfigSourceDescriptor) (*Configs, error) {
                return nil, fmt.Errorf("failed to init config: %w", err)
        }
 
-       loggers.InitGlobalLogger(d.Logger.Level(), configs.Base.PanicOnWarning)
+       loggers.SetGlobalLogger(d.Logger)
 
        return configs, nil
 }
index 6cde91165ef782aaaa261ead3c01b57d7f031f54..1dd20215bc422508ea240d0750a76272d356f951 100644 (file)
@@ -36,10 +36,6 @@ respectDoNotTrack = true
 [privacy.instagram]
 disable = true
 simple = true
-[privacy.twitter]
-disable = true
-enableDNT = true
-simple = true
 [privacy.x]
 disable = true
 enableDNT = true
@@ -63,8 +59,8 @@ simple = true
        got := []bool{
                pc.Disqus.Disable, pc.GoogleAnalytics.Disable,
                pc.GoogleAnalytics.RespectDoNotTrack, pc.Instagram.Disable,
-               pc.Instagram.Simple, pc.Twitter.Disable, pc.Twitter.EnableDNT,
-               pc.Twitter.Simple, pc.Vimeo.Disable, pc.Vimeo.EnableDNT, pc.Vimeo.Simple,
+               pc.Instagram.Simple,
+               pc.Vimeo.Disable, pc.Vimeo.EnableDNT, pc.Vimeo.Simple,
                pc.YouTube.PrivacyEnhanced, pc.YouTube.Disable, pc.X.Disable, pc.X.EnableDNT,
                pc.X.Simple,
        }
index 38fe6db56db1dd2f6a8588248a82643baddd2ca1..20ce1aa597bc063b94890b8460aeac5e083bfd22 100644 (file)
@@ -21,6 +21,7 @@ import (
        "strings"
        "time"
 
+       "github.com/bep/logg"
        "github.com/gobuffalo/flect"
        "github.com/gohugoio/hugo/langs"
        "github.com/gohugoio/hugo/markup/converter"
@@ -32,6 +33,7 @@ import (
 
        "github.com/gohugoio/hugo/common/constants"
        "github.com/gohugoio/hugo/common/hashing"
+       "github.com/gohugoio/hugo/common/hugo"
        "github.com/gohugoio/hugo/common/loggers"
        "github.com/gohugoio/hugo/common/maps"
        "github.com/gohugoio/hugo/common/paths"
@@ -486,6 +488,11 @@ params:
                        continue
                }
 
+               if loki == "path" || loki == "kind" || loki == "lang" {
+                       // See issue 12484.
+                       hugo.DeprecateLevelMin(loki+" in front matter", "", "v0.144.0", logg.LevelWarn)
+               }
+
                switch loki {
                case "title":
                        pcfg.Title = cast.ToString(v)
index 39a16d948bf44c4da632a3e5912399bb4a0a7a65..0fec397e0d82caf3dc9266a22d393b6acf124902 100644 (file)
@@ -1942,3 +1942,29 @@ Hugo: h-Home|
 `,
        )
 }
+
+// See #12484
+func TestPageFrontMatterDeprecatePathKindLang(t *testing.T) {
+       // This cannot be parallel as it depends on output from the global logger.
+
+       files := `
+-- hugo.toml --
+disableKinds = ["taxonomy", "term", "home", "section"]
+-- content/p1.md --
+---
+title: "p1"
+kind: "page"
+lang: "en"
+path: "mypath"
+---
+-- layouts/_default/single.html --
+Title: {{ .Title }}
+`
+       b := Test(t, files, TestOptWarn())
+       b.AssertFileContent("public/mypath/index.html", "p1")
+       b.AssertLogContains(
+               "deprecated: kind in front matter was deprecated",
+               "deprecated: lang in front matter was deprecated",
+               "deprecated: path in front matter was deprecated",
+       )
+}
index 9fdb63238484c321d116e6a58f070c3b539d0962..2007b658dd0f911e7211dd603085ec2cdb17b3d7 100644 (file)
@@ -260,8 +260,6 @@ disable = false
 respectDoNotTrack = true
 [privacy.instagram]
 simple = true
-[privacy.twitter]
-enableDNT = true
 [privacy.x]
 enableDNT = true
 [privacy.vimeo]
index 0578e2d8b56313fa409fd740dac688b0ea30212c..b8a4ad83308461a362b7bac03883ed4e7f30613f 100644 (file)
@@ -22,7 +22,7 @@ import (
 )
 
 func TestCommentShortcode(t *testing.T) {
-       t.Parallel()
+       // This cannot be parallel as it depends on output from the global logger.
 
        files := `
 -- hugo.toml --