before:
  hooks:
    - go mod download
    - go generate ./...

builds:
  - id: default
    env:
      - CGO_ENABLED=0
    goos:
      - darwin
      - linux
    ignore:
      - goos: darwin
        goarch: 386
      - goos: linux
        goarch: 386
    ldflags:
      - -X github.com/superfly/flyctl/internal/buildinfo.environment=production
      - -X github.com/superfly/flyctl/internal/buildinfo.buildDate={{ .Date }}
      - -X github.com/superfly/flyctl/internal/buildinfo.version={{ .Version }}
      - -X github.com/superfly/flyctl/internal/buildinfo.commit={{ .ShortCommit }}
  - id: windows
    env:
      - CGO_ENABLED=0
    goos:
      - windows
    ignore:
      - goos: windows
        goarch: 386
    ldflags:
      - -X github.com/superfly/flyctl/internal/buildinfo.environment=production
      - -X github.com/superfly/flyctl/internal/buildinfo.buildDate={{ .Date }}
      - -X github.com/superfly/flyctl/internal/buildinfo.version={{ .Version }}
      - -X github.com/superfly/flyctl/internal/buildinfo.commit={{ .ShortCommit }}

archives:
  - id: windows
    replacements:
      windows: Windows
      amd64: x86_64
    builds:
      - windows
    files: 
      - wintun.dll
    wrap_in_directory: false
    format: zip
  - id: default
    replacements:
      darwin: macOS
      linux: Linux
      windows: Windows
      amd64: x86_64
    builds:
      - default
    files: [only-the-binary*]
    wrap_in_directory: false
    format: tar.gz

release:
  prerelease: auto

dockers:
  - goos: linux
    goarch: amd64
    image_templates:
      - "flyio/flyctl:latest"
      - "flyio/flyctl:v{{ .Version }}"
    skip_push: auto

checksum:
  name_template: "checksums.txt"

snapshot:
  name_template: "{{.Branch}}-{{.ShortCommit}}"

changelog:
  sort: asc
  filters:
    exclude:
      - "^docs:"
      - "^test:"

brews:
  - tap:
      owner: superfly
      name: homebrew-tap
    folder: Formula
    homepage: https://fly.io
    skip_upload: auto
    test: |
      system "#{bin}/flyctl version"
    install: |
      bin.install "flyctl"
      bin.install_symlink "flyctl" => "fly"

      bash_output = Utils.safe_popen_read("#{bin}/flyctl", "completion", "bash")
      (bash_completion/"flyctl").write bash_output
      zsh_output = Utils.safe_popen_read("#{bin}/flyctl", "completion", "zsh")
      (zsh_completion/"_flyctl").write zsh_output
      fish_output = Utils.safe_popen_read("#{bin}/flyctl", "completion", "fish")
      (fish_completion/"flyctl.fish").write fish_output
