Skip to content

Commit

Permalink
Deprecate taxonomyTerm
Browse files Browse the repository at this point in the history
In favour of 'taxonomy'

Closes gohugoio#11256
  • Loading branch information
bep committed Jul 28, 2023
1 parent 1c97095 commit bec9b80
Show file tree
Hide file tree
Showing 4 changed files with 66 additions and 7 deletions.
10 changes: 10 additions & 0 deletions common/loggers/logger.go
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down Expand Up @@ -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
}
Expand Down
15 changes: 12 additions & 3 deletions config/allconfig/allconfig.go
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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.
Expand Down
36 changes: 32 additions & 4 deletions hugolib/config_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand All @@ -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")

}
12 changes: 12 additions & 0 deletions resources/kinds/kinds.go
Original file line number Diff line number Diff line change
Expand Up @@ -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 ""
}
}

0 comments on commit bec9b80

Please sign in to comment.