# GoReleaser configuration for beads
# See https://goreleaser.com for documentation

version: 2

before:
  hooks:
    # Ensure dependencies are up to date
    - go mod tidy

builds:
  - id: bd-linux-amd64
    main: ./cmd/bd
    binary: bd
    env:
      - CGO_ENABLED=1
    goos:
      - linux
    goarch:
      - amd64
    ldflags:
      - -s -w
      - -X main.Version={{.Version}}
      - -X main.Build={{.ShortCommit}}
      - -X main.Commit={{.Commit}}
      - -X main.Branch={{.Branch}}

  - id: bd-linux-arm64
    main: ./cmd/bd
    binary: bd
    env:
      - CGO_ENABLED=1
      - CC=aarch64-linux-gnu-gcc
      - CXX=aarch64-linux-gnu-g++
    goos:
      - linux
    goarch:
      - arm64
    ldflags:
      - -s -w
      - -X main.Version={{.Version}}
      - -X main.Build={{.ShortCommit}}
      - -X main.Commit={{.Commit}}
      - -X main.Branch={{.Branch}}

  - id: bd-darwin-amd64
    main: ./cmd/bd
    binary: bd
    env:
      - CGO_ENABLED=1
    goos:
      - darwin
    goarch:
      - amd64
    ldflags:
      - -s -w
      - -X main.Version={{.Version}}
      - -X main.Build={{.ShortCommit}}
      - -X main.Commit={{.Commit}}
      - -X main.Branch={{.Branch}}

  - id: bd-darwin-arm64
    main: ./cmd/bd
    binary: bd
    env:
      - CGO_ENABLED=1
    goos:
      - darwin
    goarch:
      - arm64
    ldflags:
      - -s -w
      - -X main.Version={{.Version}}
      - -X main.Build={{.ShortCommit}}
      - -X main.Commit={{.Commit}}
      - -X main.Branch={{.Branch}}

  - id: bd-windows-amd64
    main: ./cmd/bd
    binary: bd
    env:
      - CGO_ENABLED=1
      - CC=x86_64-w64-mingw32-gcc
      - CXX=x86_64-w64-mingw32-g++
    goos:
      - windows
    goarch:
      - amd64
    ldflags:
      - -s -w
      - -X main.Version={{.Version}}
      - -X main.Build={{.ShortCommit}}
      - -X main.Commit={{.Commit}}
      - -X main.Branch={{.Branch}}
      - -buildmode=exe

archives:
  - id: bd-archive
    format: tar.gz
    name_template: "{{ .ProjectName }}_{{ .Version }}_{{ .Os }}_{{ .Arch }}"
    format_overrides:
      - goos: windows
        format: zip
    files:
      - LICENSE
      - README.md
      - CHANGELOG.md

checksum:
  name_template: "checksums.txt"
  algorithm: sha256

snapshot:
  version_template: "{{ incpatch .Version }}-next"

changelog:
  sort: asc
  filters:
    exclude:
      - "^docs:"
      - "^test:"
      - "^chore:"
      - "Merge pull request"
      - "Merge branch"
  groups:
    - title: "Features"
      regexp: '^.*feat(\(\w+\))?:.*$'
      order: 0
    - title: "Bug Fixes"
      regexp: '^.*fix(\(\w+\))?:.*$'
      order: 1
    - title: "Others"
      order: 999

release:
  github:
    owner: steveyegge
    name: beads
  draft: false
  prerelease: auto
  name_template: "v{{.Version}}"
  header: |
    ## beads v{{.Version}}
    
    Pre-compiled binaries for Linux, macOS (Intel & Apple Silicon), and Windows.
    
    ### Installation
    
    **Homebrew (macOS/Linux):**
    ```bash
    brew install steveyegge/beads/bd
    ```
    
    **Quick Install (macOS/Linux):**
    ```bash
    curl -sSL https://raw.githubusercontent.com/steveyegge/beads/main/scripts/install.sh | bash
    ```
    
    **Windows (PowerShell):**
    ```powershell
    irm https://raw.githubusercontent.com/steveyegge/beads/main/install.ps1 | iex
    ```
    
    **Manual Install:**
    Download the appropriate binary for your platform below, extract it, and place it in your PATH.

# Homebrew tap - disabled, handled by separate workflow
# brews:
#   - name: bd
#     repository:
#       owner: steveyegge
#       name: homebrew-beads
#       branch: main
#     directory: Formula
#     homepage: https://github.com/steveyegge/beads
#     description: "AI-supervised issue tracker for coding workflows"
#     license: MIT
#     test: |
#       system "#{bin}/bd", "version"
#     install: |
#       bin.install "bd"

# Announce the release
announce:
  skip: false
