diff options
author | Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com> | 2017-09-10 18:14:02 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-09-10 18:14:02 +0300 |
commit | d2249c50991ba7b00b092aca6e315ca1a4de75a1 (patch) | |
tree | e640af21a0cf72f2576f3420dc270d29d325b41a /releaser/releasenotes_writer.go | |
parent | f4bf214137ebd24a0d12f16d3a98d9038e6eabd3 (diff) |
Set up Hugo release flow on CircleCI
This rewrites the release logic to use CircleCI 2.0 and its approve workflow in combination with the state of the release notes to determine what to do next.
Fixes #3779
Diffstat (limited to 'releaser/releasenotes_writer.go')
-rw-r--r-- | releaser/releasenotes_writer.go | 37 |
1 files changed, 32 insertions, 5 deletions
diff --git a/releaser/releasenotes_writer.go b/releaser/releasenotes_writer.go index 0c6f297a4..e94ed25e1 100644 --- a/releaser/releasenotes_writer.go +++ b/releaser/releasenotes_writer.go @@ -139,9 +139,10 @@ var templateFuncs = template.FuncMap{ } func writeReleaseNotes(version string, infosMain, infosDocs gitInfos, to io.Writer) error { + client := newGitHubAPI("hugo") changes := gitInfosToChangeLog(infosMain, infosDocs) changes.Version = version - repo, err := fetchRepo() + repo, err := client.fetchRepo() if err == nil { changes.Repo = &repo } @@ -190,17 +191,43 @@ func writeReleaseNotesToTmpFile(version string, infosMain, infosDocs gitInfos) ( return f.Name(), nil } -func getReleaseNotesDocsTempDirAndName(version string) (string, string) { +func getReleaseNotesDocsTempDirAndName(version string, final bool) (string, string) { + if final { + return hugoFilepath("temp"), fmt.Sprintf("%s-relnotes-ready.md", version) + } return hugoFilepath("temp"), fmt.Sprintf("%s-relnotes.md", version) } -func getReleaseNotesDocsTempFilename(version string) string { - return filepath.Join(getReleaseNotesDocsTempDirAndName(version)) +func getReleaseNotesDocsTempFilename(version string, final bool) string { + return filepath.Join(getReleaseNotesDocsTempDirAndName(version, final)) +} + +func (r *ReleaseHandler) releaseNotesState(version string) (releaseNotesState, error) { + docsTempPath, name := getReleaseNotesDocsTempDirAndName(version, false) + _, err := os.Stat(filepath.Join(docsTempPath, name)) + + if err == nil { + return releaseNotesCreated, nil + } + + docsTempPath, name = getReleaseNotesDocsTempDirAndName(version, true) + _, err = os.Stat(filepath.Join(docsTempPath, name)) + + if err == nil { + return releaseNotesReady, nil + } + + if !os.IsNotExist(err) { + return releaseNotesNone, err + } + + return releaseNotesNone, nil + } func (r *ReleaseHandler) writeReleaseNotesToTemp(version string, infosMain, infosDocs gitInfos) (string, error) { - docsTempPath, name := getReleaseNotesDocsTempDirAndName(version) + docsTempPath, name := getReleaseNotesDocsTempDirAndName(version, false) var ( w io.WriteCloser |