# Release configuration for goreleaser v2. A tag push runs it through
# .github/workflows/release.yml; `goreleaser release --snapshot --clean` runs
# the same thing locally into dist/ without publishing anything.
version: 2
project_name: codey
before:
hooks:
# A go.sum that disagrees with go.mod fails here, before four builds
# each fail the same way.
- go mod tidy -diff
builds:
- id: codey
main: ./cmd/codey
binary: codey
env:
# Codey has no cgo dependencies, and a static binary is what lets the
# one linux archive run on any distribution's libc.
- CGO_ENABLED=0
goos: [linux, darwin]
goarch: [amd64, arm64]
flags:
# Builder paths stay out of panics and the binary is reproducible.
- -trimpath
ldflags:
# -s -w drops the symbol table and DWARF, which a release has no use
# for. The version is stamped from the tag; cmd/codey/version.go puts
# the v back on and says what is used when nothing is stamped.
- -s -w -X main.version={{.Version}}
mod_timestamp: "{{ .CommitTimestamp }}"
archives:
- id: codey
ids: [codey]
formats: [tar.gz]
# No version in the name, so .../releases/latest/download/codey_linux_amd64.tar.gz
# is a URL the README can print once and that never goes stale. The
# release a file belongs to already says which version it is, and so
# does codey --version.
name_template: "{{ .ProjectName }}_{{ .Os }}_{{ .Arch }}"
files:
- README.md
- LICENSE
- docs/user/*.md
checksum:
name_template: checksums.txt
algorithm: sha256
snapshot:
version_template: "{{ incpatch .Version }}-SNAPSHOT-{{ .ShortCommit }}"
changelog:
sort: asc
use: git
filters:
exclude:
- "^Merge "
- "^wip"
release:
github:
owner: johannSo
name: codey
# A tag like v0.7.0-rc.1 is published as a pre-release rather than as the
# latest, so go install ...@latest and the download page agree.
prerelease: auto
# Homebrew, once there is a tap to publish to. Create the repository
# johannSo/homebrew-tap, give the release workflow a token that can push to
# it (the default GITHUB_TOKEN is scoped to this repository only) as the
# secret HOMEBREW_TAP_TOKEN, pass it through as an env var in release.yml,
# and uncomment this. `brew install johannSo/tap/codey` then works.
#
# homebrew_casks:
# - name: codey
# ids: [codey]
# repository:
# owner: johannSo
# name: homebrew-tap
# token: "{{ .Env.HOMEBREW_TAP_TOKEN }}"
# homepage: https://github.com/johannSo/codey
# description: A coding agent harness, with a TUI and a one-prompt mode.
# license: MIT
# # The binaries are not notarized, so Gatekeeper would quarantine the
# # download; this clears the flag on install.
# hooks:
# post:
# install: |
# if system_command("/usr/bin/xattr", args: ["-h"]).exit_status == 0
# system_command "/usr/bin/xattr", args: ["-dr", "com.apple.quarantine", "#{staged_path}/codey"]
# end