summaryrefslogtreecommitdiffstats
path: root/commands
diff options
context:
space:
mode:
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2017-04-13 16:59:05 +0200
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2017-04-24 11:08:56 +0200
commit7f6430d84d68765536b8758b1331a4b84db04c84 (patch)
tree7c2b1450c2d2789fbbc0323fc6027dac586ef6df /commands
parent0e87b18b66d2c8ba9e2abc429630cb03f5b093d6 (diff)
Automate the Hugo release process
This commit adds a work flow aroung GoReleaser to get the Hugo release process automated and more uniform: * It can be run fully automated or in two steps to allow for manual edits of the relase notes. * It supports both patch and full releases. * It fetches author, issue, repo info. etc. for the release notes from GitHub. * The file names produced are mainly the same as before, but we no use tar.gz as archive for all Unix versions. * There isn't a fully automated CI setup in place yet, but the release tag is marked in the commit message with "[ci deploy]" Fixes #3358
Diffstat (limited to 'commands')
-rw-r--r--commands/genman.go2
-rw-r--r--commands/hugo.go2
-rw-r--r--commands/release.go62
-rw-r--r--commands/version.go4
4 files changed, 66 insertions, 4 deletions
diff --git a/commands/genman.go b/commands/genman.go
index 7b26afeed..cd5c8c84e 100644
--- a/commands/genman.go
+++ b/commands/genman.go
@@ -36,7 +36,7 @@ in the "man" directory under the current directory.`,
header := &doc.GenManHeader{
Section: "1",
Manual: "Hugo Manual",
- Source: fmt.Sprintf("Hugo %s", helpers.HugoVersion()),
+ Source: fmt.Sprintf("Hugo %s", helpers.CurrentHugoVersion),
}
if !strings.HasSuffix(genmandir, helpers.FilePathSeparator) {
genmandir += helpers.FilePathSeparator
diff --git a/commands/hugo.go b/commands/hugo.go
index 73dde5d2d..4260f6e56 100644
--- a/commands/hugo.go
+++ b/commands/hugo.go
@@ -399,7 +399,7 @@ func InitializeConfig(subCmdVs ...*cobra.Command) (*deps.DepsCfg, error) {
if themeVersionMismatch {
cfg.Logger.ERROR.Printf("Current theme does not support Hugo version %s. Minimum version required is %s\n",
- helpers.HugoReleaseVersion(), minVersion)
+ helpers.CurrentHugoVersion.ReleaseVersion(), minVersion)
}
return cfg, nil
diff --git a/commands/release.go b/commands/release.go
new file mode 100644
index 000000000..f6d98e29f
--- /dev/null
+++ b/commands/release.go
@@ -0,0 +1,62 @@
+// +build release
+
+// Copyright 2017-present 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 commands
+
+import (
+ "github.com/spf13/cobra"
+ "github.com/spf13/hugo/releaser"
+)
+
+func init() {
+ HugoCmd.AddCommand(createReleaser().cmd)
+}
+
+type releaseCommandeer struct {
+ cmd *cobra.Command
+
+ // Will be zero for main releases.
+ patchLevel int
+
+ skipPublish bool
+
+ step int
+}
+
+func createReleaser() *releaseCommandeer {
+ // Note: This is a command only meant for internal use and must be run
+ // via "go run -tags release main.go release" on the actual code base that is in the release.
+ r := &releaseCommandeer{
+ cmd: &cobra.Command{
+ Use: "release",
+ Short: "Release a new version of Hugo.",
+ Hidden: true,
+ },
+ }
+
+ r.cmd.RunE = func(cmd *cobra.Command, args []string) error {
+ return r.release()
+ }
+
+ r.cmd.PersistentFlags().IntVarP(&r.patchLevel, "patch", "p", 0, "Patch level, defaults to 0 for main releases")
+ r.cmd.PersistentFlags().IntVarP(&r.step, "step", "s", -1, "Release step, defaults to -1 for all steps.")
+ r.cmd.PersistentFlags().BoolVarP(&r.skipPublish, "skip-publish", "", false, "Skip all publishing pipes of the release")
+
+ return r
+}
+
+func (r *releaseCommandeer) release() error {
+ return releaser.New(r.patchLevel, r.step, r.skipPublish).Run()
+}
diff --git a/commands/version.go b/commands/version.go
index f026c13a5..9e673b817 100644
--- a/commands/version.go
+++ b/commands/version.go
@@ -44,9 +44,9 @@ func printHugoVersion() {
formatBuildDate() // format the compile time
}
if hugolib.CommitHash == "" {
- jww.FEEDBACK.Printf("Hugo Static Site Generator v%s %s/%s BuildDate: %s\n", helpers.HugoVersion(), runtime.GOOS, runtime.GOARCH, hugolib.BuildDate)
+ jww.FEEDBACK.Printf("Hugo Static Site Generator v%s %s/%s BuildDate: %s\n", helpers.CurrentHugoVersion, runtime.GOOS, runtime.GOARCH, hugolib.BuildDate)
} else {
- jww.FEEDBACK.Printf("Hugo Static Site Generator v%s-%s %s/%s BuildDate: %s\n", helpers.HugoVersion(), strings.ToUpper(hugolib.CommitHash), runtime.GOOS, runtime.GOARCH, hugolib.BuildDate)
+ jww.FEEDBACK.Printf("Hugo Static Site Generator v%s-%s %s/%s BuildDate: %s\n", helpers.CurrentHugoVersion, strings.ToUpper(hugolib.CommitHash), runtime.GOOS, runtime.GOARCH, hugolib.BuildDate)
}
}