nimona/go-nimona

View on GitHub
Taskfile.yml

Summary

Maintainability
Test Coverage
# yaml-language-server: $schema=https://taskfile.dev/schema.json
version: "3"

vars:
  # Directories
  BIN: bin
  # Tool Versions
  GO_ACC_VERSION: v0.2.6
  GO_MOD_UPGRADE_VERSION: v0.6.1
  GOLANGCI_LINT_VERSION: v1.49.0
  GOTESTSUM_VERSION: v1.8.1
  MOCKGEN_VERSION: v1.7.0-rc.1
  WWHRD_VERSION: v0.3.0

env:
  GOBIN: "{{.PWD}}/{{.BIN}}"

tasks:

  tidy:
    cmds:
      - go mod tidy

  deps:
    cmds:
      - go get

  test:
    cmds:
      - go test -count=1 ./...

  test-all:
    cmds:
      - go test -count=1 -tags=integration ./...

  test-verbose:
    cmds:
      - go test -v -count=1 ./...

  init-bin:
    run: once
    status:
      - "test -d {{.BIN}}"
    cmds:
      - mkdir -p {{.BIN}}

  install-test-tools:
    run: once
    deps:
      - init-bin
    status:
      - go version -m {{.BIN}}/gotestsum | grep gotest.tools/gotestsum | grep {{.GOTESTSUM_VERSION}}
    cmds:
      - go install gotest.tools/gotestsum@{{.GOTESTSUM_VERSION}}

  install-cover-tools:
    run: once
    deps:
      - init-bin
    status:
      - go version -m {{.BIN}}/go-acc | grep github.com/ory/go-acc | grep {{.GO_ACC_VERSION}}
    cmds:
      - go install github.com/ory/go-acc@{{.GO_ACC_VERSION}}

  install-mock-tools:
    run: once
    deps:
      - init-bin
    status:
      - go version -m {{.BIN}}/mockgen | grep github.com/golang/mock | grep {{.MOCKGEN_VERSION}}
    cmds:
      - go install github.com/golang/mock/mockgen@{{.MOCKGEN_VERSION}}

  install-certificate-tools:
    run: once
    deps:
      - init-bin
    status:
      - go version -m {{.BIN}}/mkcert | grep github.com/FiloSottile/mkcert | grep {{.}}
    cmds:
      - go install github.com/FiloSottile/mkcert@{{.}}

  install-license-tools:
    run: once
    deps:
      - init-bin
    status:
      - go version -m {{.BIN}}/wwhrd | grep github.com/frapposelli/wwhrd | grep {{.WWHRD_VERSION}}
    cmds:
      - go install github.com/frapposelli/wwhrd@{{.WWHRD_VERSION}}

  install-deps-tools:
    run: once
    deps:
      - init-bin
    status:
      - go version -m {{.BIN}}/go-mod-upgrade | grep github.com/oligot/go-mod-upgrade | grep {{.GO_MOD_UPGRADE_VERSION}}
    cmds:
      - go install github.com/oligot/go-mod-upgrade@{{.GO_MOD_UPGRADE_VERSION}}

  lint:
    run: once
    cmds:
      - "golangci-lint run"

  generate:
    cmds:
      - task: generate-mocks
      - task: generate-cbor
      - task: generate-docs

  generate-mocks:
    deps:
      - install-mock-tools
    cmds:
      - go generate ./...

  generate-docs:
    cmds:
      - go run cmd/docgen/main.go

  generate-cbor:
    cmds:
      - go run cmd/cborgen/main.go

  goreleaser:
    desc: Run GoReleaser either in snapshot or release mode
    vars:
      NIGHTLY:
        sh: 'if [[ $GITHUB_REF != refs/tags/v* ]]; then echo "GORELEASER_NIGHTLY=true GORELEASER_CURRENT_TAG=v0"; fi'
    cmds:
      - '{{ .NIGHTLY }} goreleaser release --timeout 30m --skip-validate --clean'