summaryrefslogtreecommitdiffstats
path: root/helpers
diff options
context:
space:
mode:
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2018-11-26 10:11:22 +0100
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2018-12-06 14:37:25 +0100
commit831d23cb4d1ca99cdc15ed31c8ee1f981497be8f (patch)
tree8fe47b1b1b9233448297f8015ce61bbb7da13fc7 /helpers
parent514e18dc27ce37a0e9a231741d616cf29d50d610 (diff)
Add tpl/site and tpl/hugo
This means that the current `.Site` and ´.Hugo` is available as a globals, so you can do `site.IsServer`, `hugo.Version` etc. Fixes #5470 Fixes #5467 Fixes #5503
Diffstat (limited to 'helpers')
-rw-r--r--helpers/general.go4
-rw-r--r--helpers/hugo.go219
-rw-r--r--helpers/hugo_test.go70
3 files changed, 3 insertions, 290 deletions
diff --git a/helpers/general.go b/helpers/general.go
index 43a921318..cfabab5a9 100644
--- a/helpers/general.go
+++ b/helpers/general.go
@@ -27,6 +27,8 @@ import (
"unicode"
"unicode/utf8"
+ "github.com/gohugoio/hugo/common/hugo"
+
"github.com/gohugoio/hugo/hugofs"
"github.com/spf13/afero"
@@ -324,7 +326,7 @@ func InitLoggers() {
// plenty of time to fix their templates.
func Deprecated(object, item, alternative string, err bool) {
if err {
- DistinctErrorLog.Printf("%s's %s is deprecated and will be removed in Hugo %s. %s", object, item, CurrentHugoVersion.Next().ReleaseVersion(), alternative)
+ DistinctErrorLog.Printf("%s's %s is deprecated and will be removed in Hugo %s. %s", object, item, hugo.CurrentVersion.Next().ReleaseVersion(), alternative)
} else {
// Make sure the users see this while avoiding build breakage. This will not lead to an os.Exit(-1)
diff --git a/helpers/hugo.go b/helpers/hugo.go
deleted file mode 100644
index 3ad4f9379..000000000
--- a/helpers/hugo.go
+++ /dev/null
@@ -1,219 +0,0 @@
-// Copyright 2015 The Hugo Authors. All rights reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package helpers
-
-import (
- "fmt"
- "strings"
-
- "github.com/gohugoio/hugo/compare"
- "github.com/spf13/cast"
-)
-
-// HugoVersion represents the Hugo build version.
-type HugoVersion struct {
- // Major and minor version.
- Number float32
-
- // Increment this for bug releases
- PatchLevel int
-
- // HugoVersionSuffix is the suffix used in the Hugo version string.
- // It will be blank for release versions.
- Suffix string
-}
-
-var (
- _ compare.Eqer = (*HugoVersionString)(nil)
- _ compare.Comparer = (*HugoVersionString)(nil)
-)
-
-func (v HugoVersion) String() string {
- return hugoVersion(v.Number, v.PatchLevel, v.Suffix)
-}
-
-// Version returns the Hugo version.
-func (v HugoVersion) Version() HugoVersionString {
- return HugoVersionString(v.String())
-}
-
-// HugoVersionString represents a Hugo version string.
-type HugoVersionString string
-
-func (h HugoVersionString) String() string {
- return string(h)
-}
-
-// Compare implements the compare.Comparer interface.
-func (h HugoVersionString) Compare(other interface{}) int {
- v := MustParseHugoVersion(h.String())
- return compareVersionsWithSuffix(v.Number, v.PatchLevel, v.Suffix, other)
-}
-
-// Eq implements the compare.Eqer interface.
-func (h HugoVersionString) Eq(other interface{}) bool {
- s, err := cast.ToStringE(other)
- if err != nil {
- return false
- }
- return s == h.String()
-}
-
-var versionSuffixes = []string{"-test", "-DEV"}
-
-// ParseHugoVersion parses a version string.
-func ParseHugoVersion(s string) (HugoVersion, error) {
- var vv HugoVersion
- for _, suffix := range versionSuffixes {
- if strings.HasSuffix(s, suffix) {
- vv.Suffix = suffix
- s = strings.TrimSuffix(s, suffix)
- }
- }
-
- v, p := parseVersion(s)
-
- vv.Number = v
- vv.PatchLevel = p
-
- return vv, nil
-}
-
-// MustParseHugoVersion parses a version string
-// and panics if any error occurs.
-func MustParseHugoVersion(s string) HugoVersion {
- vv, err := ParseHugoVersion(s)
- if err != nil {
- panic(err)
- }
- return vv
-}
-
-// ReleaseVersion represents the release version.
-func (v HugoVersion) ReleaseVersion() HugoVersion {
- v.Suffix = ""
- return v
-}
-
-// Next returns the next Hugo release version.
-func (v HugoVersion) Next() HugoVersion {
- return HugoVersion{Number: v.Number + 0.01}
-}
-
-// Prev returns the previous Hugo release version.
-func (v HugoVersion) Prev() HugoVersion {
- return HugoVersion{Number: v.Number - 0.01}
-}
-
-// NextPatchLevel returns the next patch/bugfix Hugo version.
-// This will be a patch increment on the previous Hugo version.
-func (v HugoVersion) NextPatchLevel(level int) HugoVersion {
- return HugoVersion{Number: v.Number - 0.01, PatchLevel: level}
-}
-
-// CurrentHugoVersion represents the current build version.
-// This should be the only one.
-var CurrentHugoVersion = HugoVersion{
- Number: 0.53,
- PatchLevel: 0,
- Suffix: "-DEV",
-}
-
-func hugoVersion(version float32, patchVersion int, suffix string) string {
- if patchVersion > 0 {
- return fmt.Sprintf("%.2f.%d%s", version, patchVersion, suffix)
- }
- return fmt.Sprintf("%.2f%s", version, suffix)
-}
-
-// CompareVersion compares the given version string or number against the
-// running Hugo version.
-// It returns -1 if the given version is less than, 0 if equal and 1 if greater than
-// the running version.
-func CompareVersion(version interface{}) int {
- return compareVersionsWithSuffix(CurrentHugoVersion.Number, CurrentHugoVersion.PatchLevel, CurrentHugoVersion.Suffix, version)
-}
-
-func compareVersions(inVersion float32, inPatchVersion int, in interface{}) int {
- return compareVersionsWithSuffix(inVersion, inPatchVersion, "", in)
-}
-
-func compareVersionsWithSuffix(inVersion float32, inPatchVersion int, suffix string, in interface{}) int {
- var c int
- switch d := in.(type) {
- case float64:
- c = compareFloatVersions(inVersion, float32(d))
- case float32:
- c = compareFloatVersions(inVersion, d)
- case int:
- c = compareFloatVersions(inVersion, float32(d))
- case int32:
- c = compareFloatVersions(inVersion, float32(d))
- case int64:
- c = compareFloatVersions(inVersion, float32(d))
- default:
- s, err := cast.ToStringE(in)
- if err != nil {
- return -1
- }
-
- v, err := ParseHugoVersion(s)
- if err != nil {
- return -1
- }
-
- if v.Number == inVersion && v.PatchLevel == inPatchVersion {
- return strings.Compare(suffix, v.Suffix)
- }
-
- if v.Number < inVersion || (v.Number == inVersion && v.PatchLevel < inPatchVersion) {
- return -1
- }
-
- return 1
- }
-
- if c == 0 && suffix != "" {
- return 1
- }
-
- return c
-}
-
-func parseVersion(s string) (float32, int) {
- var (
- v float32
- p int
- )
-
- if strings.Count(s, ".") == 2 {
- li := strings.LastIndex(s, ".")
- p = cast.ToInt(s[li+1:])
- s = s[:li]
- }
-
- v = float32(cast.ToFloat64(s))
-
- return v, p
-}
-
-func compareFloatVersions(version float32, v float32) int {
- if v == version {
- return 0
- }
- if v < version {
- return -1
- }
- return 1
-}
diff --git a/helpers/hugo_test.go b/helpers/hugo_test.go
deleted file mode 100644
index 1c2d89619..000000000
--- a/helpers/hugo_test.go
+++ /dev/null
@@ -1,70 +0,0 @@
-// Copyright 2015 The Hugo Authors. All rights reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package helpers
-
-import (
- "testing"
-
- "github.com/stretchr/testify/assert"
- "github.com/stretchr/testify/require"
-)
-
-func TestHugoVersion(t *testing.T) {
- assert.Equal(t, "0.15-DEV", hugoVersion(0.15, 0, "-DEV"))
- assert.Equal(t, "0.15.2-DEV", hugoVersion(0.15, 2, "-DEV"))
-
- v := HugoVersion{Number: 0.21, PatchLevel: 0, Suffix: "-DEV"}
-
- require.Equal(t, v.ReleaseVersion().String(), "0.21")
- require.Equal(t, "0.21-DEV", v.String())
- require.Equal(t, "0.22", v.Next().String())
- nextVersionString := v.Next().Version()
- require.Equal(t, "0.22", nextVersionString.String())
- require.True(t, nextVersionString.Eq("0.22"))
- require.False(t, nextVersionString.Eq("0.21"))
- require.True(t, nextVersionString.Eq(nextVersionString))
- require.Equal(t, "0.20.3", v.NextPatchLevel(3).String())
-}
-
-func TestCompareVersions(t *testing.T) {
- require.Equal(t, 0, compareVersions(0.20, 0, 0.20))
- require.Equal(t, 0, compareVersions(0.20, 0, float32(0.20)))
- require.Equal(t, 0, compareVersions(0.20, 0, float64(0.20)))
- require.Equal(t, 1, compareVersions(0.19, 1, 0.20))
- require.Equal(t, 1, compareVersions(0.19, 3, "0.20.2"))
- require.Equal(t, -1, compareVersions(0.19, 1, 0.01))
- require.Equal(t, 1, compareVersions(0, 1, 3))
- require.Equal(t, 1, compareVersions(0, 1, int32(3)))
- require.Equal(t, 1, compareVersions(0, 1, int64(3)))
- require.Equal(t, 0, compareVersions(0.20, 0, "0.20"))
- require.Equal(t, 0, compareVersions(0.20, 1, "0.20.1"))
- require.Equal(t, -1, compareVersions(0.20, 1, "0.20"))
- require.Equal(t, 1, compareVersions(0.20, 0, "0.20.1"))
- require.Equal(t, 1, compareVersions(0.20, 1, "0.20.2"))
- require.Equal(t, 1, compareVersions(0.21, 1, "0.22.1"))
- require.Equal(t, -1, compareVersions(0.22, 0, "0.22-DEV"))
- require.Equal(t, 1, compareVersions(0.22, 0, "0.22.1-DEV"))
- require.Equal(t, 1, compareVersionsWithSuffix(0.22, 0, "-DEV", "0.22"))
- require.Equal(t, -1, compareVersionsWithSuffix(0.22, 1, "-DEV", "0.22"))
- require.Equal(t, 0, compareVersionsWithSuffix(0.22, 1, "-DEV", "0.22.1-DEV"))
-
-}
-
-func TestParseHugoVersion(t *testing.T) {
- require.Equal(t, "0.25", MustParseHugoVersion("0.25").String())
- require.Equal(t, "0.25.2", MustParseHugoVersion("0.25.2").String())
- require.Equal(t, "0.25-test", MustParseHugoVersion("0.25-test").String())
- require.Equal(t, "0.25-DEV", MustParseHugoVersion("0.25-DEV").String())
-
-}