Skip to content

Commit

Permalink
feat: better release task
Browse files Browse the repository at this point in the history
  • Loading branch information
pd93 authored and andreynering committed May 16, 2024
1 parent fb3c64c commit f35e51e
Show file tree
Hide file tree
Showing 2 changed files with 63 additions and 6 deletions.
49 changes: 46 additions & 3 deletions Taskfile.yml
Original file line number Diff line number Diff line change
Expand Up @@ -123,10 +123,53 @@ tasks:
cmds:
- go install github.com/goreleaser/goreleaser@latest

release:
release:*:
desc: Prepare the project for a new release
cmds:
- go run ./cmd/release {{.CLI_ARGS}}
summary: |
This task will do the following:
- Update the version and date in the CHANGELOG.md file
- Update the version in the package.json and package-lock.json files
- Copy the latest docs to the "current" version on the website
- Commit the changes
- Create a new tag
- Push the commit/tag to the repository
- Create a GitHub release
To use the task, simply run "task release:<version>" where "<version>" is is one of:
- "major" - Bumps the major number
- "minor" - Bumps the minor number
- "patch" - Bumps the patch number
- A semver compatible version number (e.g. "1.2.3")
vars:
VERSION:
sh: "go run ./cmd/release --version {{index .MATCH 0}}"
COMPLETE_MESSAGE: |
Creating release with GoReleaser: https://github.com/go-task/task/actions/workflows/release.yml
Please wait for the CI to finish and then do the following:
- Copy the changelog for v{{.VERSION}} to the GitHub release
- Publish the package to NPM with `task npm:publish`
- Update and push the snapcraft manifest in https://github.com/go-task/snap/blob/main/snap/snapcraft.yaml
preconditions:
- sh: test $(git rev-parse --abbrev-ref HEAD) = "main"
msg: "You must be on the main branch to release"
- sh: "[[ -z $(git diff --shortstat main) ]]"
msg: "You must have a clean working tree to release"
prompt: "Are you sure you want to release version {{.VERSION}}?"
cmds:
- cmd: echo "Releasing v{{.VERSION}}"
silent: true
- "go run ./cmd/release {{.VERSION}}"
- "git add --all"
- "git commit -m v{{.VERSION}}"
- "git push"
- "git tag v{{.VERSION}}"
- "git push origin tag v{{.VERSION}}"
- cmd: printf "%s" '{{.COMPLETE_MESSAGE}}'
silent: true

npm:publish:
desc: Publish release to npm
Expand Down
20 changes: 17 additions & 3 deletions cmd/release/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import (

"github.com/Masterminds/semver/v3"
"github.com/otiai10/copy"
"github.com/spf13/pflag"
)

const (
Expand All @@ -25,6 +26,16 @@ var (
versionRegex = regexp.MustCompile(`(?m)^ "version": "\d+\.\d+\.\d+",$`)
)

// Flags
var (
versionFlag bool
)

func init() {
pflag.BoolVarP(&versionFlag, "version", "v", false, "resolved version number")
pflag.Parse()
}

func main() {
if err := release(); err != nil {
fmt.Println(err)
Expand All @@ -33,7 +44,7 @@ func main() {
}

func release() error {
if len(os.Args) != 2 {
if len(pflag.Args()) != 1 {
return errors.New("error: expected version number")
}

Expand All @@ -42,11 +53,14 @@ func release() error {
return err
}

if err := bumpVersion(version, os.Args[1]); err != nil {
if err := bumpVersion(version, pflag.Arg(0)); err != nil {
return err
}

fmt.Println(version)
if versionFlag {
fmt.Println(version)
return nil
}

if err := changelog(version); err != nil {
return err
Expand Down

0 comments on commit f35e51e

Please sign in to comment.