From bec9b80d95d1be8270bcda080037c588614f3be1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B8rn=20Erik=20Pedersen?= Date: Fri, 28 Jul 2023 12:18:59 +0200 Subject: [PATCH] Deprecate taxonomyTerm In favour of 'taxonomy' Closes #11256 --- common/loggers/logger.go | 10 ++++++++++ config/allconfig/allconfig.go | 15 ++++++++++++--- hugolib/config_test.go | 36 +++++++++++++++++++++++++++++++---- resources/kinds/kinds.go | 12 ++++++++++++ 4 files changed, 66 insertions(+), 7 deletions(-) diff --git a/common/loggers/logger.go b/common/loggers/logger.go index 64061193996..1bdab991b11 100644 --- a/common/loggers/logger.go +++ b/common/loggers/logger.go @@ -173,6 +173,7 @@ type Logger interface { WarnCommand(command string) logg.LevelLogger Warnf(format string, v ...any) Warnln(v ...any) + Deprecatef(fail bool, format string, v ...any) } type logAdapter struct { @@ -297,6 +298,15 @@ func (l *logAdapter) sprint(v ...any) string { return strings.TrimRight(fmt.Sprintln(v...), "\n") } +func (l *logAdapter) Deprecatef(fail bool, format string, v ...any) { + format = "DEPRECATED: " + format + if fail { + l.errorl.Logf(format, v...) + } else { + l.warnl.Logf(format, v...) + } +} + type logWriter struct { l logg.LevelLogger } diff --git a/config/allconfig/allconfig.go b/config/allconfig/allconfig.go index 00453fb6c11..1c1b0b9906e 100644 --- a/config/allconfig/allconfig.go +++ b/config/allconfig/allconfig.go @@ -240,12 +240,13 @@ func (c *Config) CompileConfig(logger loggers.Logger) error { disabledKinds := make(map[string]bool) for _, kind := range c.DisableKinds { kind = strings.ToLower(kind) - if kind == "taxonomyterm" { + if newKind := kinds.IsDeprecatedAndReplacedWith(kind); newKind != "" { + logger.Deprecatef(false, "Kind %q used in disableKinds is deprecated, use %q instead.", kind, newKind) // Legacy config. - kind = "taxonomy" + kind = newKind } if kinds.GetKindAny(kind) == "" { - logger.Warnf("Unknown kind %q in disableKinds", kind) + logger.Warnf("Unknown kind %q in disableKinds configuration.", kind) continue } disabledKinds[kind] = true @@ -254,9 +255,17 @@ func (c *Config) CompileConfig(logger loggers.Logger) error { isRssDisabled := disabledKinds["rss"] outputFormats := c.OutputFormats.Config for kind, formats := range c.Outputs { + if newKind := kinds.IsDeprecatedAndReplacedWith(kind); newKind != "" { + logger.Deprecatef(false, "Kind %q used in outputs configuration is deprecated, use %q instead.", kind, newKind) + kind = newKind + } if disabledKinds[kind] { continue } + if kinds.GetKindAny(kind) == "" { + logger.Warnf("Unknown kind %q in outputs configuration.", kind) + continue + } for _, format := range formats { if isRssDisabled && format == "rss" { // Legacy config. diff --git a/hugolib/config_test.go b/hugolib/config_test.go index 9a1d3bcbf90..e912ff721ed 100644 --- a/hugolib/config_test.go +++ b/hugolib/config_test.go @@ -1612,12 +1612,14 @@ List. } -func TestDisableKindsUnknown(t *testing.T) { +func TestKindsUnknown(t *testing.T) { t.Parallel() files := ` -- hugo.toml -- disableKinds = ['foo', 'home'] +[outputs] +foo = ['HTML', 'AMP', 'RSS'] -- layouts/_default/list.html -- List. @@ -1629,12 +1631,38 @@ List. T: t, TxtarString: files, LogLevel: logg.LevelWarn, - BuildCfg: BuildCfg{SkipRender: true}, }, ).Init() - fmt.Println("LOG:", b.LogString()) + b.AssertLogContains("WARN Unknown kind \"foo\" in disableKinds configuration.\n") + b.AssertLogContains("WARN Unknown kind \"foo\" in outputs configuration.\n") + +} + +func TestDeprecateTaxonomyTerm(t *testing.T) { + t.Parallel() + + files := ` +-- hugo.toml -- +disableKinds = ['taxonomyTerm'] +[outputs] +taxonomyterm = ['HTML', 'AMP', 'RSS'] +-- layouts/_default/list.html -- +List. + + + +` + b := NewIntegrationTestBuilder( + IntegrationTestConfig{ + T: t, + TxtarString: files, + LogLevel: logg.LevelWarn, + BuildCfg: BuildCfg{SkipRender: true}, + }, + ).Init() - b.AssertLogContains("WARN Unknown kind \"foo\" in disableKinds\n") + b.AssertLogContains("WARN DEPRECATED: Kind \"taxonomyterm\" used in disableKinds is deprecated, use \"taxonomy\" instead.\n") + b.AssertLogContains("WARN DEPRECATED: Kind \"taxonomyterm\" used in outputs configuration is deprecated, use \"taxonomy\" instead.\n") } diff --git a/resources/kinds/kinds.go b/resources/kinds/kinds.go index 7bcdb5ca7a4..b035cdd297e 100644 --- a/resources/kinds/kinds.go +++ b/resources/kinds/kinds.go @@ -93,3 +93,15 @@ func GetKindAny(s string) string { } return kindMapTemporary[strings.ToLower(s)] } + +// IsDeprecatedAndReplacedWith returns the new kind if the given kind is deprecated. +func IsDeprecatedAndReplacedWith(s string) string { + s = strings.ToLower(s) + + switch s { + case "taxonomyterm": + return KindTaxonomy + default: + return "" + } +}