123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186 |
- version: '3'
- includes:
- website:
- aliases: [w, docs, d]
- taskfile: ./website
- dir: ./website
- vars:
- BIN: "{{.ROOT_DIR}}/bin"
- env:
- CGO_ENABLED: '0'
- tasks:
- default:
- cmds:
- - task: lint
- - task: test
- install:
- desc: Installs Task
- aliases: [i]
- sources:
- - './**/*.go'
- cmds:
- - go install -v ./cmd/task
- generate:
- desc: Runs Mockery to create mocks
- aliases: [gen, g]
- deps: [install:mockery]
- sources:
- - "internal/fingerprint/checker.go"
- generates:
- - "internal/mocks/*.go"
- cmds:
- - "{{.BIN}}/mockery --dir ./internal/fingerprint --name SourcesCheckable"
- - "{{.BIN}}/mockery --dir ./internal/fingerprint --name StatusCheckable"
- install:mockery:
- desc: Installs mockgen; a tool to generate mock files
- vars:
- MOCKERY_VERSION: v2.24.0
- env:
- GOBIN: "{{.BIN}}"
- status:
- - go version -m {{.BIN}}/mockery | grep github.com/vektra/mockery | grep {{.MOCKERY_VERSION}}
- cmds:
- - go install github.com/vektra/mockery/v2@{{.MOCKERY_VERSION}}
- mod:
- desc: Downloads and tidy Go modules
- cmds:
- - go mod download
- - go mod tidy
- clean:
- desc: Cleans temp files and folders
- aliases: [clear]
- cmds:
- - rm -rf dist/
- - rm -rf tmp/
- lint:
- desc: Runs golangci-lint
- aliases: [l]
- sources:
- - './**/*.go'
- - .golangci.yml
- cmds:
- - golangci-lint run
- lint:fix:
- desc: Runs golangci-lint and fixes any issues
- sources:
- - './**/*.go'
- - .golangci.yml
- cmds:
- - golangci-lint run --fix
- sleepit:build:
- desc: Builds the sleepit test helper
- sources:
- - ./cmd/sleepit/**/*.go
- generates:
- - "{{.BIN}}/sleepit"
- cmds:
- - go build -o {{.BIN}}/sleepit{{exeExt}} ./cmd/sleepit
- sleepit:run:
- desc: Builds the sleepit test helper
- deps: [sleepit:build]
- cmds:
- - "{{.BIN}}/sleepit {{.CLI_ARGS}}"
- silent: true
- test:
- desc: Runs test suite
- aliases: [t]
- deps: [install]
- cmds:
- - go test {{catLines .GO_PACKAGES}}
- vars:
- GO_PACKAGES:
- sh: go list ./...
- test:all:
- desc: Runs test suite with signals and watch tests included
- deps: [install, sleepit:build]
- cmds:
- - go test {{catLines .GO_PACKAGES}} -tags 'signals watch'
- vars:
- GO_PACKAGES:
- sh: go list ./...
- goreleaser:test:
- desc: Tests release process without publishing
- cmds:
- - goreleaser --snapshot --clean
- goreleaser:install:
- desc: Installs goreleaser
- cmds:
- - go install github.com/goreleaser/goreleaser/v2@latest
- release:*:
- desc: Prepare the project for a new release
- 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
- cmds:
- - npm publish --access=public
- packages:
- cmds:
- - echo '{{.GO_PACKAGES}}'
- vars:
- GO_PACKAGES:
- sh: go list ./...
- silent: true
|