shithub: hugo

Download patch

ref: 544f826dd6ab4e93178149c1d9e3f97e619a4095
parent: e393c6290e827111a8a2e486791dc21f63a92b55
author: Bjørn Erik Pedersen <[email protected]>
date: Sun Jul 28 10:33:56 EDT 2019

releaser: Make it a one click release for patch releases

--- a/releaser/releasenotes_writer.go
+++ b/releaser/releasenotes_writer.go
@@ -29,22 +29,30 @@
 )
 
 const (
-	issueLinkTemplate            = "[#%d](https://github.com/gohugoio/hugo/issues/%d)"
-	linkTemplate                 = "[%s](%s)"
-	releaseNotesMarkdownTemplate = `
-{{- $patchRelease := isPatch . -}}
-{{- $contribsPerAuthor := .All.ContribCountPerAuthor -}}
-{{- $docsContribsPerAuthor := .Docs.ContribCountPerAuthor -}}
-{{- if $patchRelease }}
+	issueLinkTemplate                        = "[#%d](https://github.com/gohugoio/hugo/issues/%d)"
+	linkTemplate                             = "[%s](%s)"
+	releaseNotesMarkdownTemplatePatchRelease = `
 {{ if eq (len .All) 1 }}
 This is a bug-fix release with one important fix.
 {{ else }}
 This is a bug-fix release with a couple of important fixes.
 {{ end }}
-{{ else }}
-This release represents **{{ len .All }} contributions by {{ len $contribsPerAuthor }} contributors** to the main Hugo code base.
+{{ range .All }}
+{{- if .GitHubCommit -}}
+* {{ .Subject }} {{ . | commitURL }} {{ . | authorURL }} {{ range .Issues }}{{ . | issue }}{{ end }}
+{{ else -}}
+* {{ .Subject }} {{ range .Issues }}{{ . | issue }}{{ end }}
 {{ end -}}
+{{- end }}
 
+
+`
+	releaseNotesMarkdownTemplate = `
+{{- $contribsPerAuthor := .All.ContribCountPerAuthor -}}
+{{- $docsContribsPerAuthor := .Docs.ContribCountPerAuthor -}}
+
+This release represents **{{ len .All }} contributions by {{ len $contribsPerAuthor }} contributors** to the main Hugo code base.
+
 {{- if  gt (len $contribsPerAuthor) 3 -}}
 {{- $u1 := index $contribsPerAuthor 0 -}}
 {{- $u2 := index $contribsPerAuthor 1 -}}
@@ -53,7 +61,6 @@
 {{- $u1.AuthorLink }} leads the Hugo development with a significant amount of contributions, but also a big shoutout to {{ $u2.AuthorLink }}, {{ $u3.AuthorLink }}, and {{ $u4.AuthorLink }} for their ongoing contributions.
 And a big thanks to [@digitalcraftsman](https://github.com/digitalcraftsman) and [@onedrawingperday](https://github.com/onedrawingperday) for their relentless work on keeping the themes site in pristine condition and to [@kaushalmodi](https://github.com/kaushalmodi) for his great work on the documentation site.
 {{ end }}
-{{- if not $patchRelease }}
 Many have also been busy writing and fixing the documentation in [hugoDocs](https://github.com/gohugoio/hugoDocs), 
 which has received **{{ len .Docs }} contributions by {{ len $docsContribsPerAuthor }} contributors**.
 {{- if  gt (len $docsContribsPerAuthor) 3 -}}
@@ -62,7 +69,7 @@
 {{- $u3 := index $docsContribsPerAuthor 2 -}}
 {{- $u4 := index $docsContribsPerAuthor 3 }} A special thanks to {{ $u1.AuthorLink }}, {{ $u2.AuthorLink }}, {{ $u3.AuthorLink }}, and {{ $u4.AuthorLink }} for their work on the documentation site.
 {{ end }}
-{{ end }}
+
 Hugo now has:
 
 {{ with .Repo -}}
@@ -151,7 +158,13 @@
 		changes.ThemeCount = themeCount
 	}
 
-	tmpl, err := template.New("").Funcs(templateFuncs).Parse(releaseNotesMarkdownTemplate)
+	mtempl := releaseNotesMarkdownTemplate
+
+	if !strings.HasSuffix(version, "0") {
+		mtempl = releaseNotesMarkdownTemplatePatchRelease
+	}
+
+	tmpl, err := template.New("").Funcs(templateFuncs).Parse(mtempl)
 	if err != nil {
 		return err
 	}
@@ -225,9 +238,9 @@
 
 }
 
-func (r *ReleaseHandler) writeReleaseNotesToTemp(version string, infosMain, infosDocs gitInfos) (string, error) {
+func (r *ReleaseHandler) writeReleaseNotesToTemp(version string, isPatch bool, infosMain, infosDocs gitInfos) (string, error) {
 
-	docsTempPath, name := getReleaseNotesDocsTempDirAndName(version, false)
+	docsTempPath, name := getReleaseNotesDocsTempDirAndName(version, isPatch)
 
 	var (
 		w io.WriteCloser
--- a/releaser/releaser.go
+++ b/releaser/releaser.go
@@ -94,6 +94,7 @@
 
 	version := newVersion.String()
 	tag := "v" + version
+	isPatch := newVersion.PatchLevel > 0
 
 	// Exit early if tag already exists
 	exists, err := tagExists(tag)
@@ -128,8 +129,8 @@
 		return err
 	}
 
-	prepareRelaseNotes := relNotesState == releaseNotesNone
-	shouldRelease := relNotesState == releaseNotesReady
+	prepareRelaseNotes := isPatch || relNotesState == releaseNotesNone
+	shouldRelease := isPatch || relNotesState == releaseNotesReady
 
 	defer r.gitPush() // TODO(bep)
 
@@ -152,7 +153,7 @@
 	}
 
 	if prepareRelaseNotes {
-		releaseNotesFile, err := r.writeReleaseNotesToTemp(version, gitCommits, gitCommitsDocs)
+		releaseNotesFile, err := r.writeReleaseNotesToTemp(version, isPatch, gitCommits, gitCommitsDocs)
 		if err != nil {
 			return err
 		}
@@ -160,7 +161,14 @@
 		if _, err := r.git("add", releaseNotesFile); err != nil {
 			return err
 		}
-		if _, err := r.git("commit", "-m", fmt.Sprintf("%s Add release notes draft for %s\n\nRename to *-ready.md to continue. [ci skip]", commitPrefix, newVersion)); err != nil {
+
+		commitMsg := fmt.Sprintf("%s Add release notes for %s", commitPrefix, newVersion)
+		if !isPatch {
+			commitMsg += "\n\nRename to *-ready.md to continue."
+		}
+		commitMsg += "\n[ci skip]"
+
+		if _, err := r.git("commit", "-m", commitMsg); err != nil {
 			return err
 		}
 	}