Skip to content

Instantly share code, notes, and snippets.

@sbp-bvanb
Last active March 16, 2024 13:08
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save sbp-bvanb/a5622dd986aff11af47a96918b7c960b to your computer and use it in GitHub Desktop.
Save sbp-bvanb/a5622dd986aff11af47a96918b7c960b to your computer and use it in GitHub Desktop.
#
# do not make any modifications to this file as this resides on github gist
#
# https://taskfile.dev
#
# go install github.com/go-task/task/v3/cmd/task@v3.33.1
# ~/go/bin/task --list-all
#
# 0.1.0
#
---
version: 3
vars:
TASK_COVERAGE_DIR: build/coverage
TASK_GCI_VERSION: v0.12.1
TASK_SWAG_VERSION: v1.16.2
TASK_VEKTRA_MOCKERY_VERSION: v2.42.0
tasks:
#
# build
#
build:
# deps: tasks that will be run in parallel
deps:
- task: build-golang
- task: build-docker
desc: builds both a docker image and golang library
build-docker:
# cmd: steps that will be run sequentially
cmds:
- |
docker build --no-cache -t {{.TASK_PROJECT_NAME}}:{{.TASK_PROJECT_VERSION}} .
desc: builds a docker image
build-golang:
cmds:
- task: build-golang-download-modules
- |
go build -C cmd/{{.TASK_PROJECT_NAME}}
desc: builds a golang binary
build-golang-download-modules:
cmds:
- |
go mod tidy
desc: download go modules
#
# coverage
#
coverage:
cmds:
- |
mkdir -p {{.TASK_COVERAGE_DIR}}
go test -coverprofile={{.TASK_COVERAGE_DIR}}/coverage.cov ./... -cover -race -p=4 -v --tags=integration
go tool cover -func={{.TASK_COVERAGE_DIR}}/coverage.cov > {{.TASK_COVERAGE_DIR}}/functioncoverage.out
go tool cover -html={{.TASK_COVERAGE_DIR}}/coverage.cov -o {{.TASK_COVERAGE_DIR}}/coverage.html
open ./{{.TASK_COVERAGE_DIR}}/coverage.html
#
# docker
#
docker-run:
cmds:
- task: build-docker
- |
docker run \
--rm \
{{.DOCKER_RUN_EXTRA_PARAMETERS}} \
-d \
--name {{.TASK_PROJECT_NAME}} {{.TASK_PROJECT_NAME}}:{{.TASK_PROJECT_VERSION}}
sleep 3
docker ps
echo "Issue: 'docker logs {{.TASK_PROJECT_NAME}} -f' to inspect the logging"
docker-stop:
cmds:
- |
docker stop {{.TASK_PROJECT_NAME}}
#
# formatting
#
gci:
cmds:
- |
go install github.com/daixiang0/gci@{{.TASK_GCI_VERSION}}
~/go/bin/gci write --skip-generated -s standard -s default .
#
# mocks
#
mock-generate:
cmds:
- go install github.com/vektra/mockery/v2@{{.TASK_VEKTRA_MOCKERY_VERSION}}
- echo "{{.MOCK_GENERATE_DIR}} {{.MOCK_GENERATE_INTERFACE_NAME}}"
- ~/go/bin/mockery --dir {{.MOCK_GENERATE_DIR}} --name {{.MOCK_GENERATE_INTERFACE_NAME}} --output {{.MOCK_GENERATE_DIR}}/mocks
prefix: "print-{{.TEXT}}"
#
# test
#
test-integration:
cmds:
- |
go test ./... -v --tags=integration
test-unit:
cmds:
- |
go test ./... -v
#
# swagger
#
swagger:
cmds:
- |
go install github.com/swaggo/swag/cmd/swag@{{.TASK_SWAG_VERSION}}
~/go/bin/swag init -g cmd/{{.TASK_PROJECT_NAME}}/main.go --parseDependency
~/go/bin/swag fmt
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment