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"