From 12bce7ccab7dc567a36c18444933af7d31ea16fc Mon Sep 17 00:00:00 2001 From: Dhruv Thakur <13575379+dhth@users.noreply.github.com> Date: Wed, 5 Aug 2026 18:26:43 +0200 Subject: [PATCH] manage dev-tools and tasks via mise Make mise the single source of truth for development tools and project tasks across local development, remote agents, and CI. Keep automatic task installation disabled so each environment installs only the locked tools it needs. Pin GoReleaser to the version compatible with the existing Homebrew formula setup. Temporarily disable back-compatibility jobs until mise is available in both compared revisions. --- .agents/setup | 14 ++ .github/workflows/main.yml | 72 ++++--- .github/workflows/pr.yml | 72 ++++--- .github/workflows/release-check.yml | 17 +- .github/workflows/release.yml | 17 +- .github/workflows/scan.yml | 13 +- .github/workflows/vulncheck.yml | 12 +- .gitignore | 1 - AGENTS.md | 18 +- mise.lock | 292 ++++++++++++++++++++++++++++ mise.toml | 94 +++++++++ 11 files changed, 514 insertions(+), 108 deletions(-) create mode 100755 .agents/setup create mode 100644 mise.lock create mode 100644 mise.toml diff --git a/.agents/setup b/.agents/setup new file mode 100755 index 0000000..8f2d4b6 --- /dev/null +++ b/.agents/setup @@ -0,0 +1,14 @@ +#!/usr/bin/env bash + +set -euo pipefail + +curl -fsSL https://mise.run/bash | sh + +"$HOME/.local/bin/mise" trust +"$HOME/.local/bin/mise" install --locked \ + actionlint \ + go \ + "go:golang.org/x/vuln/cmd/govulncheck" \ + gofumpt \ + golangci-lint \ + yamlfmt diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index e43ecb2..542cd75 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -28,6 +28,8 @@ jobs: - "tests/**" - "**/*.go" - "go.*" + - "mise.toml" + - "mise.lock" - ".golangci.yml" - "main.go" - ".github/actions/**" @@ -35,6 +37,8 @@ jobs: deps: - "go.mod" - "go.sum" + - "mise.toml" + - "mise.lock" - ".github/workflows/main.yml" workflows: - ".github/workflows/**.yml" @@ -48,7 +52,12 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v6.0.2 - - uses: dhth/composite-actions/.github/actions/lint-go@main + - name: Set up mise + uses: jdx/mise-action@v4 + with: + install_args: go golangci-lint + - name: Lint + run: mise run lint build: needs: changes @@ -59,12 +68,12 @@ jobs: runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v6.0.2 - - name: Set up Go - uses: actions/setup-go@v6 + - name: Set up mise + uses: jdx/mise-action@v4 with: - go-version-file: 'go.mod' - - name: go build - run: go build -v ./... + install_args: go + - name: Build + run: mise run build test: needs: changes @@ -72,12 +81,12 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v6.0.2 - - name: Set up Go - uses: actions/setup-go@v6 + - name: Set up mise + uses: jdx/mise-action@v4 with: - go-version-file: 'go.mod' - - name: go test - run: go test -v ./... + install_args: go + - name: Test + run: mise run test lint-yaml: needs: changes @@ -86,7 +95,12 @@ jobs: steps: - name: Checkout uses: actions/checkout@v6.0.2 - - uses: dhth/composite-actions/.github/actions/lint-yaml@main + - name: Set up mise + uses: jdx/mise-action@v4 + with: + install_args: yamlfmt + - name: Lint YAML + run: mise run lint:yaml lint-workflows: needs: changes @@ -95,11 +109,17 @@ jobs: steps: - name: Checkout uses: actions/checkout@v6.0.2 - - uses: dhth/composite-actions/.github/actions/lint-actions@main + - name: Set up mise + uses: jdx/mise-action@v4 + with: + install_args: actionlint + - name: Lint workflows + run: mise run lint:actions back-compat: needs: changes - if: ${{ needs.changes.outputs.code == 'true' }} + # Re-enable after mise is available in both compared revisions. + if: ${{ false && needs.changes.outputs.code == 'true' }} strategy: matrix: os: [ubuntu-latest, macos-latest] @@ -111,20 +131,20 @@ jobs: with: fetch-depth: 2 - run: git checkout HEAD~1 - - name: Set up Go for head~1 - uses: actions/setup-go@v6 + - name: Set up mise for head~1 + uses: jdx/mise-action@v4 with: - go-version-file: 'go.mod' + install_args: go - name: build last commit run: | go build -o omm_prev cp omm_prev /var/tmp rm omm_prev - run: git checkout main - - name: Set up Go for head - uses: actions/setup-go@v6 + - name: Set up mise for head + uses: jdx/mise-action@v4 with: - go-version-file: 'go.mod' + install_args: go - name: build head run: | go build -o omm_head @@ -145,11 +165,9 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v6.0.2 - - name: Set up Go - uses: actions/setup-go@v6 + - name: Set up mise + uses: jdx/mise-action@v4 with: - go-version-file: 'go.mod' - - name: install govulncheck - run: go install golang.org/x/vuln/cmd/govulncheck@latest - - name: govulncheck - run: govulncheck ./... + install_args: go go:golang.org/x/vuln/cmd/govulncheck + - name: Vulnerability check + run: mise run vulncheck diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index ec42362..9c6635b 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -26,6 +26,8 @@ jobs: - "tests/**" - "**/*.go" - "go.*" + - "mise.toml" + - "mise.lock" - ".golangci.yml" - "main.go" - ".github/actions/**" @@ -33,6 +35,8 @@ jobs: deps: - "go.mod" - "go.sum" + - "mise.toml" + - "mise.lock" - ".github/workflows/pr.yml" workflows: - ".github/workflows/**.yml" @@ -46,7 +50,12 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v6.0.2 - - uses: dhth/composite-actions/.github/actions/lint-go@main + - name: Set up mise + uses: jdx/mise-action@v4 + with: + install_args: go golangci-lint + - name: Lint + run: mise run lint build: needs: changes @@ -57,12 +66,12 @@ jobs: runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v6.0.2 - - name: Set up Go - uses: actions/setup-go@v6 + - name: Set up mise + uses: jdx/mise-action@v4 with: - go-version-file: 'go.mod' - - name: go build - run: go build -v ./... + install_args: go + - name: Build + run: mise run build test: needs: changes @@ -70,12 +79,12 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v6.0.2 - - name: Set up Go - uses: actions/setup-go@v6 + - name: Set up mise + uses: jdx/mise-action@v4 with: - go-version-file: 'go.mod' - - name: go test - run: go test -v ./... + install_args: go + - name: Test + run: mise run test lint-yaml: needs: changes @@ -84,7 +93,12 @@ jobs: steps: - name: Checkout uses: actions/checkout@v6.0.2 - - uses: dhth/composite-actions/.github/actions/lint-yaml@main + - name: Set up mise + uses: jdx/mise-action@v4 + with: + install_args: yamlfmt + - name: Lint YAML + run: mise run lint:yaml lint-workflows: needs: changes @@ -93,11 +107,17 @@ jobs: steps: - name: Checkout uses: actions/checkout@v6.0.2 - - uses: dhth/composite-actions/.github/actions/lint-actions@main + - name: Set up mise + uses: jdx/mise-action@v4 + with: + install_args: actionlint + - name: Lint workflows + run: mise run lint:actions back-compat: needs: changes - if: ${{ needs.changes.outputs.code == 'true' }} + # Re-enable after mise is available in both compared revisions. + if: ${{ false && needs.changes.outputs.code == 'true' }} strategy: matrix: os: [ubuntu-latest, macos-latest] @@ -108,20 +128,20 @@ jobs: - uses: actions/checkout@v6.0.2 with: ref: main - - name: Set up Go for main - uses: actions/setup-go@v6 + - name: Set up mise for main + uses: jdx/mise-action@v4 with: - go-version-file: 'go.mod' + install_args: go - name: build main run: | go build -o omm_main cp omm_main /var/tmp rm omm_main - uses: actions/checkout@v6.0.2 - - name: Set up Go for head - uses: actions/setup-go@v6 + - name: Set up mise for head + uses: jdx/mise-action@v4 with: - go-version-file: 'go.mod' + install_args: go - name: build head run: | go build -o omm_head @@ -142,11 +162,9 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v6.0.2 - - name: Set up Go - uses: actions/setup-go@v6 + - name: Set up mise + uses: jdx/mise-action@v4 with: - go-version-file: 'go.mod' - - name: install govulncheck - run: go install golang.org/x/vuln/cmd/govulncheck@latest - - name: govulncheck - run: govulncheck ./... + install_args: go go:golang.org/x/vuln/cmd/govulncheck + - name: Vulnerability check + run: mise run vulncheck diff --git a/.github/workflows/release-check.yml b/.github/workflows/release-check.yml index 486be53..f65e61e 100644 --- a/.github/workflows/release-check.yml +++ b/.github/workflows/release-check.yml @@ -10,16 +10,9 @@ jobs: - uses: actions/checkout@v6.0.2 with: fetch-depth: 0 - - name: Set up Go - uses: actions/setup-go@v6 + - name: Set up mise + uses: jdx/mise-action@v4 with: - go-version-file: 'go.mod' - - name: Install Cosign - uses: sigstore/cosign-installer@v3 - with: - cosign-release: 'v2.5.0' - - name: Release Binaries - uses: goreleaser/goreleaser-action@v7 - with: - version: 'v2.14.1' - args: check + install_args: go goreleaser + - name: Release check + run: mise run release:check diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 9a07e8d..eec5670 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -15,18 +15,11 @@ jobs: - uses: actions/checkout@v6.0.2 with: fetch-depth: 0 - - name: Set up Go - uses: actions/setup-go@v6 + - name: Set up mise + uses: jdx/mise-action@v4 with: - go-version-file: 'go.mod' - - name: Install Cosign - uses: sigstore/cosign-installer@v3 - with: - cosign-release: 'v2.5.0' - - name: Release Binaries - uses: goreleaser/goreleaser-action@v7 - with: - version: 'v2.14.1' - args: release --clean + install_args: go goreleaser cosign + - name: Release binaries + run: mise run release env: GITHUB_TOKEN: ${{secrets.GH_PAT}} diff --git a/.github/workflows/scan.yml b/.github/workflows/scan.yml index a7d0cd5..a8b5fcd 100644 --- a/.github/workflows/scan.yml +++ b/.github/workflows/scan.yml @@ -10,15 +10,12 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v6.0.2 - - name: Set up Go - uses: actions/setup-go@v6 + - name: Set up mise + uses: jdx/mise-action@v4 with: - go-version-file: 'go.mod' - - name: Build Binaries - uses: goreleaser/goreleaser-action@v7 - with: - version: 'v2.9.0' - args: build --snapshot + install_args: go goreleaser + - name: Build binaries + run: mise run release:build - name: List binaries run: | ls -lh ./dist/omm_*/omm diff --git a/.github/workflows/vulncheck.yml b/.github/workflows/vulncheck.yml index 8551f70..a55ea37 100644 --- a/.github/workflows/vulncheck.yml +++ b/.github/workflows/vulncheck.yml @@ -10,11 +10,9 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v6.0.2 - - name: Set up Go - uses: actions/setup-go@v6 + - name: Set up mise + uses: jdx/mise-action@v4 with: - go-version-file: 'go.mod' - - name: install govulncheck - run: go install golang.org/x/vuln/cmd/govulncheck@latest - - name: govulncheck - run: govulncheck ./... + install_args: go go:golang.org/x/vuln/cmd/govulncheck + - name: Vulnerability check + run: mise run vulncheck diff --git a/.gitignore b/.gitignore index b97533a..bd01d62 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,6 @@ omm .quickrun cosign.key -justfile .notes debug.log tasks.txt diff --git a/AGENTS.md b/AGENTS.md index ad246f7..aaba023 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -2,20 +2,10 @@ Keyboard-driven TUI task manager for the terminal, built in Go with Bubbletea. -## Common Commands - -Use **just** (preferred over raw Go commands): - -| Command | Alias | Action | -|----------------|-----------|---------------------| -| `just run` | `just r` | `go run .` | -| `just build` | `just b` | `go build .` | -| `just test` | `just t` | `go test ./...` | -| `just fmt` | `just f` | `gofumpt -l -w .` | -| `just lint` | `just l` | `golangci-lint run` | -| `just install` | `just i` | `go install .` | -| `just tidy` | `just ti` | `go mod tidy` | -| `just vuln` | `just v` | `govulncheck ./...` | +## Commands + +- Run all project commands via mise. +- See `mise.toml` for the list of tasks. ## Architecture diff --git a/mise.lock b/mise.lock new file mode 100644 index 0000000..eae64ff --- /dev/null +++ b/mise.lock @@ -0,0 +1,292 @@ +# @generated - this file is auto-generated by `mise lock` https://mise.jdx.dev/dev-tools/mise-lock.html + +[[tools.actionlint]] +version = "1.7.12" +backend = "aqua:rhysd/actionlint" + +[tools.actionlint."platforms.linux-arm64"] +checksum = "sha256:325e971b6ba9bfa504672e29be93c24981eeb1c07576d730e9f7c8805afff0c6" +url = "https://github.com/rhysd/actionlint/releases/download/v1.7.12/actionlint_1.7.12_linux_arm64.tar.gz" +url_api = "https://api.github.com/repos/rhysd/actionlint/releases/assets/384924897" +provenance = "github-attestations" + +[tools.actionlint."platforms.linux-arm64-musl"] +checksum = "sha256:325e971b6ba9bfa504672e29be93c24981eeb1c07576d730e9f7c8805afff0c6" +url = "https://github.com/rhysd/actionlint/releases/download/v1.7.12/actionlint_1.7.12_linux_arm64.tar.gz" +url_api = "https://api.github.com/repos/rhysd/actionlint/releases/assets/384924897" +provenance = "github-attestations" + +[tools.actionlint."platforms.linux-x64"] +checksum = "sha256:8aca8db96f1b94770f1b0d72b6dddcb1ebb8123cb3712530b08cc387b349a3d8" +url = "https://github.com/rhysd/actionlint/releases/download/v1.7.12/actionlint_1.7.12_linux_amd64.tar.gz" +url_api = "https://api.github.com/repos/rhysd/actionlint/releases/assets/384924896" +provenance = "github-attestations" + +[tools.actionlint."platforms.linux-x64-musl"] +checksum = "sha256:8aca8db96f1b94770f1b0d72b6dddcb1ebb8123cb3712530b08cc387b349a3d8" +url = "https://github.com/rhysd/actionlint/releases/download/v1.7.12/actionlint_1.7.12_linux_amd64.tar.gz" +url_api = "https://api.github.com/repos/rhysd/actionlint/releases/assets/384924896" +provenance = "github-attestations" + +[tools.actionlint."platforms.macos-arm64"] +checksum = "sha256:aba9ced2dee8d27fecca3dc7feb1a7f9a52caefa1eb46f3271ea66b6e0e6953f" +url = "https://github.com/rhysd/actionlint/releases/download/v1.7.12/actionlint_1.7.12_darwin_arm64.tar.gz" +url_api = "https://api.github.com/repos/rhysd/actionlint/releases/assets/384924893" +provenance = "github-attestations" + +[tools.actionlint."platforms.macos-x64"] +checksum = "sha256:5b44c3bc2255115c9b69e30efc0fecdf498fdb63c5d58e17084fd5f16324c644" +url = "https://github.com/rhysd/actionlint/releases/download/v1.7.12/actionlint_1.7.12_darwin_amd64.tar.gz" +url_api = "https://api.github.com/repos/rhysd/actionlint/releases/assets/384924880" +provenance = "github-attestations" + +[tools.actionlint."platforms.windows-x64"] +checksum = "sha256:6e7241b51e6817ea6a047693d8e6fed13b31819c9a0dd6c5a726e1592d22f6e9" +url = "https://github.com/rhysd/actionlint/releases/download/v1.7.12/actionlint_1.7.12_windows_amd64.zip" +url_api = "https://api.github.com/repos/rhysd/actionlint/releases/assets/384924919" +provenance = "github-attestations" + +[[tools.cosign]] +version = "2.5.0" +backend = "aqua:sigstore/cosign" + +[tools.cosign."platforms.linux-arm64"] +checksum = "sha256:080a998f9878f22dafdb9ad54d5b2e2b8e7a38c53527250f9d89a6763a28d545" +url = "https://github.com/sigstore/cosign/releases/download/v2.5.0/cosign-linux-arm64" +url_api = "https://api.github.com/repos/sigstore/cosign/releases/assets/244375255" + +[tools.cosign."platforms.linux-arm64-musl"] +checksum = "sha256:080a998f9878f22dafdb9ad54d5b2e2b8e7a38c53527250f9d89a6763a28d545" +url = "https://github.com/sigstore/cosign/releases/download/v2.5.0/cosign-linux-arm64" +url_api = "https://api.github.com/repos/sigstore/cosign/releases/assets/244375255" + +[tools.cosign."platforms.linux-x64"] +checksum = "sha256:1f6c194dd0891eb345b436bb71ff9f996768355f5e0ce02dde88567029ac2188" +url = "https://github.com/sigstore/cosign/releases/download/v2.5.0/cosign-linux-amd64" +url_api = "https://api.github.com/repos/sigstore/cosign/releases/assets/244375510" + +[tools.cosign."platforms.linux-x64-musl"] +checksum = "sha256:1f6c194dd0891eb345b436bb71ff9f996768355f5e0ce02dde88567029ac2188" +url = "https://github.com/sigstore/cosign/releases/download/v2.5.0/cosign-linux-amd64" +url_api = "https://api.github.com/repos/sigstore/cosign/releases/assets/244375510" + +[tools.cosign."platforms.macos-arm64"] +checksum = "sha256:780da3654d9601367b0d54686ac65cb9716578610cabe292d725c7008de4db85" +url = "https://github.com/sigstore/cosign/releases/download/v2.5.0/cosign-darwin-arm64" +url_api = "https://api.github.com/repos/sigstore/cosign/releases/assets/244375488" + +[tools.cosign."platforms.macos-x64"] +checksum = "sha256:d61cc50f6f32c2b63cb81cd8a935e5dd1be8520d639242031a1102092bee44d4" +url = "https://github.com/sigstore/cosign/releases/download/v2.5.0/cosign-darwin-amd64" +url_api = "https://api.github.com/repos/sigstore/cosign/releases/assets/244375435" + +[tools.cosign."platforms.windows-x64"] +checksum = "sha256:2345667cbcf60767c1a6f678755cbb7465367761084e9d2cbb59ae0cc1a94437" +url = "https://github.com/sigstore/cosign/releases/download/v2.5.0/cosign-windows-amd64.exe" +url_api = "https://api.github.com/repos/sigstore/cosign/releases/assets/244375159" + +[[tools.go]] +version = "1.26.5" +backend = "core:go" + +[tools.go."platforms.linux-arm64"] +checksum = "sha256:fe4789e92b1f33358680864bbe8704289e7bb5fc207d80623c308935bd696d49" +url = "https://dl.google.com/go/go1.26.5.linux-arm64.tar.gz" + +[tools.go."platforms.linux-arm64-musl"] +checksum = "sha256:fe4789e92b1f33358680864bbe8704289e7bb5fc207d80623c308935bd696d49" +url = "https://dl.google.com/go/go1.26.5.linux-arm64.tar.gz" + +[tools.go."platforms.linux-x64"] +checksum = "sha256:5c2c3b16caefa1d968a94c1daca04a7ca301a496d9b086e17ad77bb81393f053" +url = "https://dl.google.com/go/go1.26.5.linux-amd64.tar.gz" + +[tools.go."platforms.linux-x64-musl"] +checksum = "sha256:5c2c3b16caefa1d968a94c1daca04a7ca301a496d9b086e17ad77bb81393f053" +url = "https://dl.google.com/go/go1.26.5.linux-amd64.tar.gz" + +[tools.go."platforms.macos-arm64"] +checksum = "sha256:efb87ff28af9a188d0536ef5d42e63dd52ba8263cd7344a993cc48dd11dedb6a" +url = "https://dl.google.com/go/go1.26.5.darwin-arm64.tar.gz" + +[tools.go."platforms.macos-x64"] +checksum = "sha256:6231d8d3b8f5552ec6cbf6d685bdd5482e1e703214b120e89b3bf0d7bf1ef725" +url = "https://dl.google.com/go/go1.26.5.darwin-amd64.tar.gz" + +[tools.go."platforms.windows-x64"] +checksum = "sha256:97e6b2a833b6d89f9ff17d25419ac0a7e3b482a044e9ab18cdef834bd834fd38" +url = "https://dl.google.com/go/go1.26.5.windows-amd64.zip" + +[[tools."go:golang.org/x/vuln/cmd/govulncheck"]] +version = "1.6.0" +backend = "go:golang.org/x/vuln/cmd/govulncheck" + +[[tools.gofumpt]] +version = "0.11.0" +backend = "aqua:mvdan/gofumpt" + +[tools.gofumpt."platforms.linux-arm64"] +checksum = "sha256:9272c2d1738acc1acae33793419e74c69653e70fe56bec4ad9044b12b54715e5" +url = "https://github.com/mvdan/gofumpt/releases/download/v0.11.0/gofumpt_v0.11.0_linux_arm64" +url_api = "https://api.github.com/repos/mvdan/gofumpt/releases/assets/491232873" + +[tools.gofumpt."platforms.linux-arm64-musl"] +checksum = "sha256:9272c2d1738acc1acae33793419e74c69653e70fe56bec4ad9044b12b54715e5" +url = "https://github.com/mvdan/gofumpt/releases/download/v0.11.0/gofumpt_v0.11.0_linux_arm64" +url_api = "https://api.github.com/repos/mvdan/gofumpt/releases/assets/491232873" + +[tools.gofumpt."platforms.linux-x64"] +checksum = "sha256:9f247ec294f5082375c7b062f3ddf48c8212a8711f65a6d75f5129f7fda0d7da" +url = "https://github.com/mvdan/gofumpt/releases/download/v0.11.0/gofumpt_v0.11.0_linux_amd64" +url_api = "https://api.github.com/repos/mvdan/gofumpt/releases/assets/491232932" + +[tools.gofumpt."platforms.linux-x64-musl"] +checksum = "sha256:9f247ec294f5082375c7b062f3ddf48c8212a8711f65a6d75f5129f7fda0d7da" +url = "https://github.com/mvdan/gofumpt/releases/download/v0.11.0/gofumpt_v0.11.0_linux_amd64" +url_api = "https://api.github.com/repos/mvdan/gofumpt/releases/assets/491232932" + +[tools.gofumpt."platforms.macos-arm64"] +checksum = "sha256:18936628f195369a80a129c73ee33d23e39086286dab538781ba826effc7e10b" +url = "https://github.com/mvdan/gofumpt/releases/download/v0.11.0/gofumpt_v0.11.0_darwin_arm64" +url_api = "https://api.github.com/repos/mvdan/gofumpt/releases/assets/491232979" + +[tools.gofumpt."platforms.macos-x64"] +checksum = "sha256:b93b3d2c326196af9fb1ce34a5436a18e7b9a73a795bf42e5b6a542eea88d322" +url = "https://github.com/mvdan/gofumpt/releases/download/v0.11.0/gofumpt_v0.11.0_darwin_amd64" +url_api = "https://api.github.com/repos/mvdan/gofumpt/releases/assets/491232997" + +[tools.gofumpt."platforms.windows-x64"] +checksum = "sha256:e7ae4253344a600f1116e4b5c7d0d0fcc108abbbf383c3d786a530077b4d4622" +url = "https://github.com/mvdan/gofumpt/releases/download/v0.11.0/gofumpt_v0.11.0_windows_amd64.exe" +url_api = "https://api.github.com/repos/mvdan/gofumpt/releases/assets/491232806" + +[[tools.golangci-lint]] +version = "2.12.2" +backend = "aqua:golangci/golangci-lint" + +[tools.golangci-lint."platforms.linux-arm64"] +checksum = "sha256:44cd40a8c76c86755375adfeea52cfd3533cb43d7bd647771e0ae065e166df3a" +url = "https://github.com/golangci/golangci-lint/releases/download/v2.12.2/golangci-lint-2.12.2-linux-arm64.tar.gz" +url_api = "https://api.github.com/repos/golangci/golangci-lint/releases/assets/413470996" +provenance = "github-attestations" + +[tools.golangci-lint."platforms.linux-arm64-musl"] +checksum = "sha256:44cd40a8c76c86755375adfeea52cfd3533cb43d7bd647771e0ae065e166df3a" +url = "https://github.com/golangci/golangci-lint/releases/download/v2.12.2/golangci-lint-2.12.2-linux-arm64.tar.gz" +url_api = "https://api.github.com/repos/golangci/golangci-lint/releases/assets/413470996" +provenance = "github-attestations" + +[tools.golangci-lint."platforms.linux-x64"] +checksum = "sha256:8df580d2670fed8fa984aac0507099af8df275e665215f5c7a2ae3943893a553" +url = "https://github.com/golangci/golangci-lint/releases/download/v2.12.2/golangci-lint-2.12.2-linux-amd64.tar.gz" +url_api = "https://api.github.com/repos/golangci/golangci-lint/releases/assets/413471054" +provenance = "github-attestations" + +[tools.golangci-lint."platforms.linux-x64-musl"] +checksum = "sha256:8df580d2670fed8fa984aac0507099af8df275e665215f5c7a2ae3943893a553" +url = "https://github.com/golangci/golangci-lint/releases/download/v2.12.2/golangci-lint-2.12.2-linux-amd64.tar.gz" +url_api = "https://api.github.com/repos/golangci/golangci-lint/releases/assets/413471054" +provenance = "github-attestations" + +[tools.golangci-lint."platforms.macos-arm64"] +checksum = "sha256:a9c54498731b3128f79e090be6110f3e5fffccc617b08142ed244d4126c73f29" +url = "https://github.com/golangci/golangci-lint/releases/download/v2.12.2/golangci-lint-2.12.2-darwin-arm64.tar.gz" +url_api = "https://api.github.com/repos/golangci/golangci-lint/releases/assets/413470950" +provenance = "github-attestations" + +[tools.golangci-lint."platforms.macos-x64"] +checksum = "sha256:f6f06d94b6241521c53d15450c5209b028270bf966f842afb11c030c79f5bc16" +url = "https://github.com/golangci/golangci-lint/releases/download/v2.12.2/golangci-lint-2.12.2-darwin-amd64.tar.gz" +url_api = "https://api.github.com/repos/golangci/golangci-lint/releases/assets/413470980" +provenance = "github-attestations" + +[tools.golangci-lint."platforms.windows-x64"] +checksum = "sha256:bd42e3ebc8cb4ececb86941983baaf1dc221bbb04d838e94ce63b49cc91e02bb" +url = "https://github.com/golangci/golangci-lint/releases/download/v2.12.2/golangci-lint-2.12.2-windows-amd64.zip" +url_api = "https://api.github.com/repos/golangci/golangci-lint/releases/assets/413471017" +provenance = "github-attestations" + +[[tools.goreleaser]] +version = "2.9.0" +backend = "aqua:goreleaser/goreleaser" + +[tools.goreleaser."platforms.linux-arm64"] +checksum = "sha256:574e83f5f0fc97803ff734c9342f8fd446d77e5e7ccac53debf09b4a8dbded80" +url = "https://github.com/goreleaser/goreleaser/releases/download/v2.9.0/goreleaser_Linux_arm64.tar.gz" +url_api = "https://api.github.com/repos/goreleaser/goreleaser/releases/assets/250600906" +provenance = "github-attestations" + +[tools.goreleaser."platforms.linux-arm64-musl"] +checksum = "sha256:574e83f5f0fc97803ff734c9342f8fd446d77e5e7ccac53debf09b4a8dbded80" +url = "https://github.com/goreleaser/goreleaser/releases/download/v2.9.0/goreleaser_Linux_arm64.tar.gz" +url_api = "https://api.github.com/repos/goreleaser/goreleaser/releases/assets/250600906" +provenance = "github-attestations" + +[tools.goreleaser."platforms.linux-x64"] +checksum = "sha256:a066fcd713684abed0d750d7559f1a5d794fa2faa8e8f1ad2eecec8c373668a7" +url = "https://github.com/goreleaser/goreleaser/releases/download/v2.9.0/goreleaser_Linux_x86_64.tar.gz" +url_api = "https://api.github.com/repos/goreleaser/goreleaser/releases/assets/250600889" +provenance = "github-attestations" + +[tools.goreleaser."platforms.linux-x64-musl"] +checksum = "sha256:a066fcd713684abed0d750d7559f1a5d794fa2faa8e8f1ad2eecec8c373668a7" +url = "https://github.com/goreleaser/goreleaser/releases/download/v2.9.0/goreleaser_Linux_x86_64.tar.gz" +url_api = "https://api.github.com/repos/goreleaser/goreleaser/releases/assets/250600889" +provenance = "github-attestations" + +[tools.goreleaser."platforms.macos-arm64"] +checksum = "sha256:82953b65c4b64e73b1077827663d97bf8e32592b4fc2cdb55c738bd484260a47" +url = "https://github.com/goreleaser/goreleaser/releases/download/v2.9.0/goreleaser_Darwin_all.tar.gz" +url_api = "https://api.github.com/repos/goreleaser/goreleaser/releases/assets/250600891" +provenance = "github-attestations" + +[tools.goreleaser."platforms.macos-x64"] +checksum = "sha256:82953b65c4b64e73b1077827663d97bf8e32592b4fc2cdb55c738bd484260a47" +url = "https://github.com/goreleaser/goreleaser/releases/download/v2.9.0/goreleaser_Darwin_all.tar.gz" +url_api = "https://api.github.com/repos/goreleaser/goreleaser/releases/assets/250600891" +provenance = "github-attestations" + +[tools.goreleaser."platforms.windows-x64"] +checksum = "sha256:f56e85f8fd52875102dfc2b01dc07fc174486caebbac7e3aa9f29b4f0057d495" +url = "https://github.com/goreleaser/goreleaser/releases/download/v2.9.0/goreleaser_Windows_x86_64.zip" +url_api = "https://api.github.com/repos/goreleaser/goreleaser/releases/assets/250600902" +provenance = "github-attestations" + +[[tools.yamlfmt]] +version = "0.21.0" +backend = "aqua:google/yamlfmt" + +[tools.yamlfmt."platforms.linux-arm64"] +checksum = "sha256:5b2689c963b177271330c5ce8ca7396751107e5a826be46f03d2cb9b6f0c7784" +url = "https://github.com/google/yamlfmt/releases/download/v0.21.0/yamlfmt_0.21.0_Linux_arm64.tar.gz" +url_api = "https://api.github.com/repos/google/yamlfmt/releases/assets/336650208" + +[tools.yamlfmt."platforms.linux-arm64-musl"] +checksum = "sha256:5b2689c963b177271330c5ce8ca7396751107e5a826be46f03d2cb9b6f0c7784" +url = "https://github.com/google/yamlfmt/releases/download/v0.21.0/yamlfmt_0.21.0_Linux_arm64.tar.gz" +url_api = "https://api.github.com/repos/google/yamlfmt/releases/assets/336650208" + +[tools.yamlfmt."platforms.linux-x64"] +checksum = "sha256:1f300d9257b232bb3b541d7fb1b0e6b3c121bcbab381c86cd38cb8722be8a566" +url = "https://github.com/google/yamlfmt/releases/download/v0.21.0/yamlfmt_0.21.0_Linux_x86_64.tar.gz" +url_api = "https://api.github.com/repos/google/yamlfmt/releases/assets/336650203" + +[tools.yamlfmt."platforms.linux-x64-musl"] +checksum = "sha256:1f300d9257b232bb3b541d7fb1b0e6b3c121bcbab381c86cd38cb8722be8a566" +url = "https://github.com/google/yamlfmt/releases/download/v0.21.0/yamlfmt_0.21.0_Linux_x86_64.tar.gz" +url_api = "https://api.github.com/repos/google/yamlfmt/releases/assets/336650203" + +[tools.yamlfmt."platforms.macos-arm64"] +checksum = "sha256:4b417ecb94339d57e4c122ecc948c1a00fe328b5853266de9806e652a92858fa" +url = "https://github.com/google/yamlfmt/releases/download/v0.21.0/yamlfmt_0.21.0_Darwin_arm64.tar.gz" +url_api = "https://api.github.com/repos/google/yamlfmt/releases/assets/336650209" + +[tools.yamlfmt."platforms.macos-x64"] +checksum = "sha256:060e943bcb8583c456810eb1ff4721b4f46c4a0c1a4432449d5dc3bbfe29a22b" +url = "https://github.com/google/yamlfmt/releases/download/v0.21.0/yamlfmt_0.21.0_Darwin_x86_64.tar.gz" +url_api = "https://api.github.com/repos/google/yamlfmt/releases/assets/336650207" + +[tools.yamlfmt."platforms.windows-x64"] +checksum = "sha256:07f80ce5d741eb4b0a9380ac78a19c7cb5bd44e2a9a47a5a04839e3ba54dd463" +url = "https://github.com/google/yamlfmt/releases/download/v0.21.0/yamlfmt_0.21.0_Windows_x86_64.tar.gz" +url_api = "https://api.github.com/repos/google/yamlfmt/releases/assets/336650206" diff --git a/mise.toml b/mise.toml new file mode 100644 index 0000000..11cad32 --- /dev/null +++ b/mise.toml @@ -0,0 +1,94 @@ +[settings] +task.run_auto_install = false + +[tools] +actionlint = "1.7.12" +cosign = "2.5.0" +go = "1.26.5" +"go:golang.org/x/vuln/cmd/govulncheck" = "latest" +gofumpt = "0.11.0" +golangci-lint = "2.12.2" +goreleaser = "2.9.0" +yamlfmt = "0.21.0" + +[tasks.all] +description = "Format, lint, test, and build" +run = [ + { task = "fmt" }, + { task = "lint" }, + { task = "test" }, + { task = "build" }, +] + +[tasks.run] +alias = "r" +description = "Run the application" +run = "go run ." + +[tasks.build] +alias = "b" +description = "Build the application" +run = 'go build -ldflags "-w -s" .' + +[tasks.fmt] +alias = "f" +description = "Format Go source files" +run = "gofumpt -l -w ." + +[tasks.install] +alias = "i" +description = "Install the application" +run = 'go install -ldflags "-w -s" .' + +[tasks.lint] +alias = ["l", "check", "c"] +description = "Lint the codebase" +run = "golangci-lint run" + +[tasks."lint:actions"] +alias = ["l:a"] +description = "Lint GitHub Actions workflows" +run = "actionlint" + +[tasks."lint:yaml"] +alias = ["l:y"] +description = "Lint YAML files" +run = ''' +yamlfmt \ + -lint \ + -quiet \ + -formatter 'retain_line_breaks_single=true' \ + $(git ls-files '*.yml' '*.yaml') +''' + +[tasks.test] +alias = "t" +description = "Run all tests" +run = "go test -v -count=1 ./..." + +[tasks.upgrade] +alias = "up" +description = "Upgrade Go dependencies" +run = "go get -u ./..." + +[tasks.upgradet] +alias = "upt" +description = "Upgrade Go test dependencies" +run = "go get -t -u ./..." + +[tasks.vulncheck] +alias = "v" +description = "Check for known vulnerabilities" +run = "govulncheck ./..." + +[tasks."release:check"] +description = "Validate the GoReleaser configuration" +run = "goreleaser check" + +[tasks."release:build"] +description = "Build release artifacts without publishing" +run = "goreleaser build --snapshot" + +[tasks.release] +description = "Create and publish a release" +run = "goreleaser release --clean"