env:
  - GO111MODULE=on

before:
  hooks:
    - go mod tidy
    - ./scripts/completions.sh

snapshot:
  name_template: '{{ incpatch .Version }}-next'

gomod:
  proxy: true

builds:
- env:
    - CGO_ENABLED=0
  goos:
    - linux
    - darwin
    - windows
  goarch:
    - 386
    - amd64
    - arm
    - arm64
  mod_timestamp: '{{ .CommitTimestamp }}'
  flags:
    - -trimpath
  ldflags:
    - -s -w -X main.version={{.Version}} -X main.commit={{.Commit}} -X main.date={{ .CommitDate }} -X main.builtBy=goreleaser

checksum:
  name_template: 'checksums.txt'

changelog:
  sort: asc
  filters:
    exclude:
    - '^docs:'
    - '^test:'
    - Merge pull request
    - Merge branch
    - go mod tidy

dockers:
- image_templates:
  - 'goreleaser/goreleaser:{{ .Tag }}-amd64'
  - 'ghcr.io/goreleaser/goreleaser:{{ .Tag }}-amd64'
  dockerfile: Dockerfile
  use: buildx
  build_flag_templates:
  - "--pull"
  - "--label=org.opencontainers.image.created={{.Date}}"
  - "--label=org.opencontainers.image.name={{.ProjectName}}"
  - "--label=org.opencontainers.image.revision={{.FullCommit}}"
  - "--label=org.opencontainers.image.version={{.Version}}"
  - "--label=org.opencontainers.image.source={{.GitURL}}"
  - "--platform=linux/amd64"
  extra_files:
  - scripts/entrypoint.sh
- image_templates:
  - 'goreleaser/goreleaser:{{ .Tag }}-arm64'
  - 'ghcr.io/goreleaser/goreleaser:{{ .Tag }}-arm64'
  dockerfile: Dockerfile
  use: buildx
  build_flag_templates:
  - "--pull"
  - "--label=org.opencontainers.image.created={{.Date}}"
  - "--label=org.opencontainers.image.name={{.ProjectName}}"
  - "--label=org.opencontainers.image.revision={{.FullCommit}}"
  - "--label=org.opencontainers.image.version={{.Version}}"
  - "--label=org.opencontainers.image.source={{.GitURL}}"
  - "--platform=linux/arm64"
  goarch: arm64
  extra_files:
  - scripts/entrypoint.sh

docker_manifests:
- name_template: 'goreleaser/goreleaser:{{ .Tag }}'
  image_templates:
  - 'goreleaser/goreleaser:{{ .Tag }}-amd64'
  - 'goreleaser/goreleaser:{{ .Tag }}-arm64'
- name_template: 'ghcr.io/goreleaser/goreleaser:{{ .Tag }}'
  image_templates:
  - 'ghcr.io/goreleaser/goreleaser:{{ .Tag }}-amd64'
  - 'ghcr.io/goreleaser/goreleaser:{{ .Tag }}-arm64'
- name_template: 'goreleaser/goreleaser:latest'
  image_templates:
  - 'goreleaser/goreleaser:{{ .Tag }}-amd64'
  - 'goreleaser/goreleaser:{{ .Tag }}-arm64'
- name_template: 'ghcr.io/goreleaser/goreleaser:latest'
  image_templates:
  - 'ghcr.io/goreleaser/goreleaser:{{ .Tag }}-amd64'
  - 'ghcr.io/goreleaser/goreleaser:{{ .Tag }}-arm64'

archives:
  - name_template: '{{ .ProjectName }}_{{ .Os }}_{{ .Arch }}{{ if .Arm }}v{{ .Arm }}{{ end }}'
    replacements:
      darwin: Darwin
      linux: Linux
      windows: Windows
      386: i386
      amd64: x86_64
    format_overrides:
    - goos: windows
      format: zip
    files:
      - README.md
      - LICENSE.md
      - completions/*

brews:
  - tap:
      owner: goreleaser
      name: homebrew-tap
    folder: Formula
    homepage:  https://goreleaser.com
    description: Deliver Go binaries as fast and easily as possible
    license: MIT
    test: |
      system "#{bin}/goreleaser -v"
    dependencies:
    - name: go
      type: optional
    - name: git
    install: |-
      bin.install "goreleaser"
      bash_completion.install "completions/goreleaser.bash" => "goreleaser"
      zsh_completion.install "completions/goreleaser.zsh" => "_goreleaser"
      fish_completion.install "completions/goreleaser.fish"

scoop:
  bucket:
    owner: goreleaser
    name: scoop-bucket
  homepage:  https://goreleaser.com
  description: Deliver Go binaries as fast and easily as possible
  license: MIT

nfpms:
  - file_name_template: '{{ .ProjectName }}_{{ .Arch }}{{ if .Arm }}v{{ .Arm }}{{ end }}'
    id: packages
    homepage:  https://goreleaser.com
    description: Deliver Go binaries as fast and easily as possible
    maintainer: Carlos Alexandro Becker <root@carlosbecker.com>
    license: MIT
    vendor: GoReleaser
    contents:
      - src: ./completions/goreleaser.bash
        dst: /etc/bash_completion.d/goreleaser
      - src: ./completions/goreleaser.fish
        dst: /usr/share/fish/completions/goreleaser.fish
      - src: ./completions/goreleaser.zsh
        dst: /usr/local/share/zsh/site-functions/_goreleaser
    formats:
    - apk
    - deb
    - rpm
    dependencies:
    - git
    recommends:
    - golang

snapcrafts:
  - name_template: '{{ .ProjectName }}_{{ .Arch }}{{ if .Arm }}v{{ .Arm }}{{ end }}'
    summary: Deliver Go binaries as fast and easily as possible
    description: |
      GoReleaser builds Go binaries for several platforms, creates a GitHub
      release and then pushes a Homebrew formula to a repository. All that
      wrapped in your favorite CI.
    grade: stable
    confinement: classic
    publish: true

signs:
- cmd: cosign
  stdin: '{{ .Env.COSIGN_PWD }}'
  args: ["sign-blob", "-key=cosign.key", "-output=${signature}", "${artifact}"]
  artifacts: checksum

docker_signs:
- artifacts: manifests
  stdin: '{{ .Env.COSIGN_PWD }}'

publishers:
  - name: fury.io
    ids:
    - packages
    env:
    - 'FURY_TOKEN={{ .Env.FURY_TOKEN }}'
    cmd: ./scripts/fury-upload.sh {{ .ArtifactName }}

release:
  discussion_category_name: Announcements
  footer: |
    ---

    __Check out [GoReleaser Pro](https://goreleaser.com/pro) as well!__

announce:
  twitter:
    enabled: true
    message_template: 'GoReleaser {{ .Tag }} was just released! Get it while its fresh: https://github.com/goreleaser/goreleaser/releases/tag/{{ .Tag }}'
