shithub: hugo

Download patch

ref: baa414ae414e8b0da365cfb756af0177dbdc003f
parent: cdf32f08c7aa5a362c75b541821983a970ffd2ef
author: Bjørn Erik Pedersen <[email protected]>
date: Mon May 22 12:04:40 EDT 2017

releaser: Add a new step

When doing it step-by-step, we need to update the version numbers in its own step.

--- a/releaser/releaser.go
+++ b/releaser/releaser.go
@@ -31,7 +31,12 @@
 const commitPrefix = "releaser:"
 
 type ReleaseHandler struct {
-	patch       int
+	patch int
+
+	// If set, we do the relases in 3 steps:
+	// 1: Create and write a draft release notes
+	// 2: Prepare files for new version.
+	// 3: Release
 	step        int
 	skipPublish bool
 }
@@ -41,13 +46,17 @@
 }
 
 func (r ReleaseHandler) shouldContinue() bool {
-	return r.step == 2
+	return r.step == 3
 }
 
-func (r ReleaseHandler) shouldPrepare() bool {
+func (r ReleaseHandler) shouldPrepareReleasenotes() bool {
 	return r.step < 1 || r.step == 1
 }
 
+func (r ReleaseHandler) shouldPrepareVersions() bool {
+	return r.step < 1 || r.step == 2
+}
+
 func (r ReleaseHandler) calculateVersions(current helpers.HugoVersion) (helpers.HugoVersion, helpers.HugoVersion) {
 	var (
 		newVersion   = current
@@ -111,7 +120,7 @@
 
 	var gitCommits gitInfos
 
-	if r.shouldPrepare() || r.shouldRelease() {
+	if r.shouldPrepareReleasenotes() || r.shouldRelease() {
 		gitCommits, err = getGitInfos(changeLogFromTag, true)
 		if err != nil {
 			return err
@@ -118,7 +127,7 @@
 		}
 	}
 
-	if r.shouldPrepare() {
+	if r.shouldPrepareReleasenotes() {
 		releaseNotesFile, err := writeReleaseNotesToDocsTemp(version, gitCommits)
 		if err != nil {
 			return err
@@ -132,17 +141,19 @@
 		}
 	}
 
-	if !r.shouldRelease() {
-		fmt.Println("Skip release ... Use --state=2 to continue.")
-		return nil
-	}
+	if r.shouldPrepareVersions() {
+		if err := bumpVersions(newVersion); err != nil {
+			return err
+		}
 
-	if err := bumpVersions(newVersion); err != nil {
-		return err
+		if _, err := git("commit", "-a", "-m", fmt.Sprintf("%s Bump versions for release of %s\n\n[ci skip]", commitPrefix, newVersion)); err != nil {
+			return err
+		}
 	}
 
-	if _, err := git("commit", "-a", "-m", fmt.Sprintf("%s Bump versions for release of %s\n\n[ci skip]", commitPrefix, newVersion)); err != nil {
-		return err
+	if !r.shouldRelease() {
+		fmt.Println("Skip release ... Use --state=3 to continue.")
+		return nil
 	}
 
 	releaseNotesFile := getRelaseNotesDocsTempFilename(version)
--- a/releaser/releaser_test.go
+++ b/releaser/releaser_test.go
@@ -51,7 +51,7 @@
 			"0.21-DEV",
 		},
 		{
-			New(0, 2, true),
+			New(0, 3, true),
 			startVersion,
 			"0.20",
 			"0.21-DEV",
@@ -63,7 +63,7 @@
 			"0.20-DEV",
 		},
 		{
-			New(3, 2, true),
+			New(3, 3, true),
 			startVersion.Next(),
 			"0.21",
 			"0.21-DEV",