# yaml-language-server: $schema=https://taskfile.dev/schema.json
#
# github.com/go-task/task/v3/cmd/task@latest
# Requirements:
# github.com/caarlos0/svu@latest
# github.com/goreleaser/goreleaser/v2@latest

version: '3'

tasks:

  release:
    desc: Create and publish an new release
    vars:
      RELEASE:
        sh: svu next
      BRANCH:
        sh: git branch --show-current
      COMMIT:
        sh: git rev-parse --short --verify {{.BRANCH}}
    preconditions:
      - sh: test "{{.BRANCH}}" == "main"
        msg: "You must be on the main branch to release"
      - sh: test -z "$(git status --porcelain)"
        msg: "You must have a clean working tree to release"
    prompt: Create new release {{.RELEASE}} from {{.COMMIT}}@{{.BRANCH}}?
    cmds:
      - git tag {{.RELEASE}}
      - git push
      - git push origin tag {{.RELEASE}}
      - goreleaser release --clean

  snapshot:
    desc: Create a local snapshot release
    cmds:
      - goreleaser release --clean --snapshot

  install:
    desc: Install the latest published version locally
    cmds:
      - go install git.smsvc.net/pomodoro/ChronoTomato@latest