From a17bdbc5face02ed2470895bcbfe67db7749dc73 Mon Sep 17 00:00:00 2001 From: Joe Mooring Date: Mon, 6 Apr 2026 13:07:32 -0700 Subject: [PATCH] common/hugo: Deprecate extended and extended_withdeploy editions Closes #14696 --- commands/commandeer.go | 2 + common/hugo/hugo.go | 12 ++++++ common/hugo/hugo_test.go | 37 +++++++++++++++++++ .../commands/hugo__minify_issue13988.txt | 2 +- 4 files changed, 52 insertions(+), 1 deletion(-) diff --git a/commands/commandeer.go b/commands/commandeer.go index 21a8f24fc..44ecda9fc 100644 --- a/commands/commandeer.go +++ b/commands/commandeer.go @@ -39,6 +39,7 @@ import ( "github.com/gohugoio/hugo/common/hstrings" "github.com/gohugoio/hugo/common/htime" + "github.com/gohugoio/hugo/common/hugo" "github.com/gohugoio/hugo/common/loggers" "github.com/gohugoio/hugo/common/paths" "github.com/gohugoio/hugo/common/types" @@ -454,6 +455,7 @@ func (r *rootCommand) PreRun(cd, runner *simplecobra.Commandeer) error { } // Set up the global logger early to allow info deprecations during config load. loggers.SetGlobalLogger(r.logger) + hugo.WarnDeprecatedEdition() r.changesFromBuild = make(chan []identity.Identity, 10) diff --git a/common/hugo/hugo.go b/common/hugo/hugo.go index fbb1e53a4..2c42b2b3f 100644 --- a/common/hugo/hugo.go +++ b/common/hugo/hugo.go @@ -304,6 +304,18 @@ func IsDartSassGeV2() bool { return !strings.Contains(DartSassBinaryName, "embedded") } +// WarnDeprecatedEdition emits a deprecation warning if the running binary is +// the extended or extended_withdeploy edition. +func WarnDeprecatedEdition() { + if IsExtended { + if IsWithdeploy { + Deprecate("the extended_withdeploy edition of the Hugo executable", "Use the withdeploy edition instead.", "v0.161.0") + } else { + Deprecate("the extended edition of the Hugo executable", "Use the standard edition instead.", "v0.161.0") + } + } +} + // Deprecate informs about a deprecation starting at the given version. // // A deprecation typically needs a simple change in the template, but doing so will make the template incompatible with older versions. diff --git a/common/hugo/hugo_test.go b/common/hugo/hugo_test.go index a572f74d4..934a846dd 100644 --- a/common/hugo/hugo_test.go +++ b/common/hugo/hugo_test.go @@ -14,11 +14,13 @@ package hugo import ( + "bytes" "context" "testing" "github.com/bep/logg" qt "github.com/frankban/quicktest" + "github.com/gohugoio/hugo/common/loggers" ) func TestDeprecationLogLevelFromVersion(t *testing.T) { @@ -59,3 +61,38 @@ func TestGetBuildInfo(t *testing.T) { c.Assert(bi.GoVersion, qt.Not(qt.Equals), "") } } + +func TestWarnDeprecatedEdition(t *testing.T) { + c := qt.New(t) + + origExtended, origWithdeploy := IsExtended, IsWithdeploy + t.Cleanup(func() { + IsExtended = origExtended + IsWithdeploy = origWithdeploy + loggers.SetGlobalLogger(nil) + }) + + var buf bytes.Buffer + loggers.SetGlobalLogger(loggers.New(loggers.Options{Level: logg.LevelInfo, StdErr: &buf})) + + IsExtended = true + IsWithdeploy = false + WarnDeprecatedEdition() + c.Assert(buf.String(), qt.Contains, "the extended edition of the Hugo executable") + c.Assert(buf.String(), qt.Contains, "Use the standard edition instead") + + buf.Reset() + + IsExtended = true + IsWithdeploy = true + WarnDeprecatedEdition() + c.Assert(buf.String(), qt.Contains, "the extended_withdeploy edition of the Hugo executable") + c.Assert(buf.String(), qt.Contains, "Use the withdeploy edition instead") + + buf.Reset() + + IsExtended = false + IsWithdeploy = false + WarnDeprecatedEdition() + c.Assert(buf.String(), qt.Equals, "") +} diff --git a/testscripts/commands/hugo__minify_issue13988.txt b/testscripts/commands/hugo__minify_issue13988.txt index 122494ce3..d20e746af 100644 --- a/testscripts/commands/hugo__minify_issue13988.txt +++ b/testscripts/commands/hugo__minify_issue13988.txt @@ -1,6 +1,6 @@ hugo --minify --logLevel=info -! stderr 'deprecated' +! stderr 'deprecated.*minifyOutput' grep '

one

two

' public/index.html -- hugo.toml -- -- 2.39.5