releaser: Add a new step
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Mon, 22 May 2017 13:04:40 +0000 (16:04 +0300)
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Mon, 22 May 2017 13:04:40 +0000 (16:04 +0300)
When doing it step-by-step, we need to update the version numbers in its own step.

releaser/releaser.go
releaser/releaser_test.go

index 088b52ec1ab69b04711e431f8f0ba8607de74c92..afb5fcddbf06597be43b010ba5ab990509be2aef 100644 (file)
@@ -31,7 +31,12 @@ import (
 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) shouldRelease() bool {
 }
 
 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,14 +120,14 @@ func (r *ReleaseHandler) Run() error {
 
        var gitCommits gitInfos
 
-       if r.shouldPrepare() || r.shouldRelease() {
+       if r.shouldPrepareReleasenotes() || r.shouldRelease() {
                gitCommits, err = getGitInfos(changeLogFromTag, true)
                if err != nil {
                        return err
                }
        }
 
-       if r.shouldPrepare() {
+       if r.shouldPrepareReleasenotes() {
                releaseNotesFile, err := writeReleaseNotesToDocsTemp(version, gitCommits)
                if err != nil {
                        return err
@@ -132,17 +141,19 @@ func (r *ReleaseHandler) Run() error {
                }
        }
 
-       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)
index 64160054507b7be0e4d6cca1384bafcd27acc1d1..0c58bb9695d2e0ccc2f838c9bf1c105b9686fc33 100644 (file)
@@ -51,7 +51,7 @@ func TestCalculateVersions(t *testing.T) {
                        "0.21-DEV",
                },
                {
-                       New(0, 2, true),
+                       New(0, 3, true),
                        startVersion,
                        "0.20",
                        "0.21-DEV",
@@ -63,7 +63,7 @@ func TestCalculateVersions(t *testing.T) {
                        "0.20-DEV",
                },
                {
-                       New(3, 2, true),
+                       New(3, 3, true),
                        startVersion.Next(),
                        "0.21",
                        "0.21-DEV",