diff --git a/contrib/release/README.md b/contrib/release/README.md new file mode 100644 index 0000000..9d9db8e --- /dev/null +++ b/contrib/release/README.md @@ -0,0 +1,14 @@ +# pulls release + +This is a Go "script" to create a new release blog post from a template. + +**NOTE:** Posts could always do with some personal touches. We really are incredibly grateful to each and every person +who helps out the project, big or small. +This contrib is mostly for automating getting those numbers right in all the spots. + +### Usage + +From the base directory +``` +go run contrib/release/release.go --author jolheiser --milestone 1.12.5 +``` diff --git a/contrib/release/release.go b/contrib/release/release.go new file mode 100644 index 0000000..80252c2 --- /dev/null +++ b/contrib/release/release.go @@ -0,0 +1,79 @@ +package main + +import ( + "encoding/json" + "flag" + "fmt" + "io/ioutil" + "net/http" + "os" + "text/template" + "time" +) + +var ( + mergedURLFmt = "https://api.github.com/search/issues?q=repo:go-gitea/gitea+is:pr+is:merged+milestone:%s" + tmpl = template.Must(template.ParseFiles("contrib/release/release.md")) + + author string + milestone string +) + +type Merged struct { + TotalCount int `json:"total_count"` +} + +func main() { + flag.StringVar(&author, "author", "", "The author for this blog post") + flag.StringVar(&milestone, "milestone", "", "The milestone for this release") + flag.Parse() + + if author == "" { + fmt.Println("missing --author flag") + return + } + if milestone == "" { + fmt.Println("missing --milestone flag") + return + } + + resp, err := http.Get(fmt.Sprintf(mergedURLFmt, milestone)) + if err != nil { + fmt.Println(err) + return + } + body, err := ioutil.ReadAll(resp.Body) + if err != nil { + fmt.Println(err) + return + } + defer resp.Body.Close() + + var merged Merged + if err := json.Unmarshal(body, &merged); err != nil { + fmt.Println(err) + return + } + + // This will truncate if you mess up the milestone, but this is in Git so just revert it. YOLO + fi, err := os.Create(fmt.Sprintf("content/post/release-of-%s.md", milestone)) + if err != nil { + fmt.Println(err) + return + } + defer fi.Close() + + date := time.Now() + data := map[string]interface{}{ + "Author": author, + "Milestone": milestone, + "Merged": merged.TotalCount, + "DateLong": date.Format("2006-01-02T15:04:05+07:00"), + "DateShort": date.Format("2006-01-02"), + } + + if err := tmpl.Execute(fi, data); err != nil { + fmt.Println(err) + return + } +} diff --git a/contrib/release/release.md b/contrib/release/release.md new file mode 100644 index 0000000..3835e35 --- /dev/null +++ b/contrib/release/release.md @@ -0,0 +1,28 @@ +--- +date: "{{.DateLong}}" +author: "{{.Author}}" +title: "Gitea {{.Milestone}} is released" +tags: ["release"] +draft: false +--- + +We are proud to present the release of Gitea version {{.Milestone}}. + +We highly encourage users to update to this version for some important bug-fixes. + +We have merged [{{.Merged}}](https://github.com/go-gitea/gitea/pulls?q=is%3Apr+milestone%3A{{.Milestone}}+is%3Amerged) pull requests to release this version. + + + +You can download one of our pre-built binaries from our [downloads page](https://dl.gitea.io/gitea/{{.Milestone}}/) - make sure to select the correct platform! For further details on how to install, follow our [installation guide](https://docs.gitea.io/en-us/install-from-binary/). + + +We would also like to thank all of our supporters on [Open Collective](https://opencollective.com/gitea) who are helping to sustain us financially. + + + +## Changelog + +## [{{.Milestone}}](https://github.com/go-gitea/gitea/releases/tag/v{{.Milestone}}) - {{.DateShort}} + +