From d1b4458536372a4f8b60395bf867702571169362 Mon Sep 17 00:00:00 2001 From: Joe Mooring Date: Fri, 29 Sep 2023 10:23:08 -0700 Subject: [PATCH] common/hugo: Add hugo.IsServer and hugo.IsDevelopment And deprecate site.IsServer. Closes #11510 --- common/hugo/hugo.go | 13 +++++++++++++ common/hugo/hugo_test.go | 13 +++++++++++-- docs/content/en/functions/hugo.md | 8 +++++++- docs/content/en/variables/site.md | 3 --- hugolib/site_new.go | 2 ++ resources/page/page_matcher_test.go | 5 +++++ resources/page/site.go | 3 +++ 7 files changed, 41 insertions(+), 6 deletions(-) diff --git a/common/hugo/hugo.go b/common/hugo/hugo.go index c28dd0b53..1138cf2ac 100644 --- a/common/hugo/hugo.go +++ b/common/hugo/hugo.go @@ -78,10 +78,22 @@ func (i HugoInfo) Generator() template.HTML { return template.HTML(fmt.Sprintf(``, CurrentVersion.String())) } +// IsDevelopment reports whether the current running environment is "development". +func (i HugoInfo) IsDevelopment() bool { + return i.Environment == EnvironmentDevelopment +} + +// IsProduction reports whether the current running environment is "production". func (i HugoInfo) IsProduction() bool { return i.Environment == EnvironmentProduction } +// IsServer reports whether the built-in server is running. +func (i HugoInfo) IsServer() bool { + return i.conf.Running() +} + +// IsExtended reports whether the Hugo binary is the extended version. func (i HugoInfo) IsExtended() bool { return IsExtended } @@ -99,6 +111,7 @@ func (i HugoInfo) Deps() []*Dependency { // ConfigProvider represents the config options that are relevant for HugoInfo. type ConfigProvider interface { Environment() string + Running() bool WorkingDir() string } diff --git a/common/hugo/hugo_test.go b/common/hugo/hugo_test.go index b0279f111..5b4a6f9ad 100644 --- a/common/hugo/hugo_test.go +++ b/common/hugo/hugo_test.go @@ -23,7 +23,7 @@ import ( func TestHugoInfo(t *testing.T) { c := qt.New(t) - conf := testConfig{environment: "production", workingDir: "/mywork"} + conf := testConfig{environment: "production", workingDir: "/mywork", running: false} hugoInfo := NewInfo(conf, nil) c.Assert(hugoInfo.Version(), qt.Equals, CurrentVersion.Version()) @@ -38,15 +38,20 @@ func TestHugoInfo(t *testing.T) { } c.Assert(hugoInfo.Environment, qt.Equals, "production") c.Assert(string(hugoInfo.Generator()), qt.Contains, fmt.Sprintf("Hugo %s", hugoInfo.Version())) + c.Assert(hugoInfo.IsDevelopment(), qt.Equals, false) c.Assert(hugoInfo.IsProduction(), qt.Equals, true) c.Assert(hugoInfo.IsExtended(), qt.Equals, IsExtended) + c.Assert(hugoInfo.IsServer(), qt.Equals, false) - devHugoInfo := NewInfo(testConfig{environment: "development"}, nil) + devHugoInfo := NewInfo(testConfig{environment: "development", running: true}, nil) + c.Assert(devHugoInfo.IsDevelopment(), qt.Equals, true) c.Assert(devHugoInfo.IsProduction(), qt.Equals, false) + c.Assert(devHugoInfo.IsServer(), qt.Equals, true) } type testConfig struct { environment string + running bool workingDir string } @@ -54,6 +59,10 @@ func (c testConfig) Environment() string { return c.environment } +func (c testConfig) Running() bool { + return c.running +} + func (c testConfig) WorkingDir() string { return c.workingDir } diff --git a/docs/content/en/functions/hugo.md b/docs/content/en/functions/hugo.md index 78d658c66..5ed1ae85c 100644 --- a/docs/content/en/functions/hugo.md +++ b/docs/content/en/functions/hugo.md @@ -31,11 +31,17 @@ relatedfuncs: [] `hugo.GoVersion` : (`string`) The Go version used to compile the Hugo binary (e.g., `go1.20.4`). {{< new-in "0.101.0" >}} +`hugo.IsDevelopment` +: (`bool`) Returns `true` if `hugo.Environment` is "development". + `hugo.IsExtended` : (`bool`) Returns `true` if the Hugo binary is the extended version. `hugo.IsProduction` -: (`bool`) Returns `true` if `hugo.Environment` is set to the production environment. +: (`bool`) Returns `true` if `hugo.Environment` is "production". + +`hugo.IsServer` +: (`bool`) Returns `true` if the site is being served with Hugo's built-in server. `hugo.Version` : (`hugo.VersionString`) The current version of the Hugo binary (e.g., `0.112.1`). diff --git a/docs/content/en/variables/site.md b/docs/content/en/variables/site.md index 117f45346..ced5617b4 100644 --- a/docs/content/en/variables/site.md +++ b/docs/content/en/variables/site.md @@ -47,9 +47,6 @@ All the methods below, e.g. `.Site.RegularPages` can also be reached via the glo .Site.IsMultiLingual : whether there are more than one language in this site. See [Multilingual](/content-management/multilingual/) for more information. -.Site.IsServer -: a boolean to indicate if the site is being served with Hugo's built-in server. See [`hugo server`](/commands/hugo_server/) for more information. - .Site.Language.Lang : the language code of the current locale (e.g., `en`). diff --git a/hugolib/site_new.go b/hugolib/site_new.go index 8abd511c3..4db5eeb28 100644 --- a/hugolib/site_new.go +++ b/hugolib/site_new.go @@ -356,7 +356,9 @@ func newHugoSitesNew(cfg deps.DepsCfg, d *deps.Deps, sites []*Site) (*HugoSites, } // Returns true if we're running in a server. +// Deprecated: use hugo.IsServer instead func (s *Site) IsServer() bool { + helpers.Deprecated(".Site.IsServer", "Use hugo.IsServer instead.", false) return s.conf.Internal.Running } diff --git a/resources/page/page_matcher_test.go b/resources/page/page_matcher_test.go index da47843db..2108d51c2 100644 --- a/resources/page/page_matcher_test.go +++ b/resources/page/page_matcher_test.go @@ -159,6 +159,7 @@ func TestDecodeCascadeConfig(t *testing.T) { type testConfig struct { environment string + running bool workingDir string } @@ -166,6 +167,10 @@ func (c testConfig) Environment() string { return c.environment } +func (c testConfig) Running() bool { + return c.running +} + func (c testConfig) WorkingDir() string { return c.workingDir } diff --git a/resources/page/site.go b/resources/page/site.go index 6a352ef86..7b8960fdd 100644 --- a/resources/page/site.go +++ b/resources/page/site.go @@ -56,6 +56,7 @@ type Site interface { Home() Page // Returns true if we're running in a server. + // Deprecated: use hugo.IsServer instead IsServer() bool // Returns the server port. @@ -211,6 +212,7 @@ func (s *siteWrapper) Home() Page { return s.s.Home() } +// Deprecated: use hugo.IsServer instead func (s *siteWrapper) IsServer() bool { return s.s.IsServer() } @@ -383,6 +385,7 @@ func (t testSite) GetIdentity() identity.Identity { return identity.KeyValueIdentity{Key: "site", Value: t.l.Lang} } +// Deprecated: use hugo.IsServer instead func (t testSite) IsServer() bool { return false }