# yaml-language-server: $schema=https://goreleaser.com/static/schema-pro.json
version: 2
env:
  - GO111MODULE=on

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

metadata:
  mod_timestamp: "{{ .CommitTimestamp }}"
  description: nFPM is a simple, 0-dependencies, deb, rpm, and apk packager.
  full_description: |-
    Simple, 0-dependencies, deb, rpm, and apk packager.
    nFPM (not FPM) is configurable via YAML and does not need any
    packaging software installed.
  homepage: https://nfpm.goreleaser.com
  license: MIT
  maintainers:
    - Carlos Alexandro Becker <carlos@becker.software>

gomod:
  proxy: true

builds:
  - main: ./cmd/nfpm
    env:
      - CGO_ENABLED=0
    goos:
      - linux
      - darwin
      - windows
    goarch:
      - amd64
      - arm64
      - ppc64le
      - s390x
    mod_timestamp: "{{ .CommitTimestamp }}"
    flags:
      - -trimpath
    ldflags:
      - -s -w -X main.version={{ .Version }} -X main.commit={{ .Commit }} -X main.date={{ .CommitDate }} -X main.builtBy=goreleaser -X main.treeState={{ .IsGitDirty }}

dockers:
  - image_templates:
      - "goreleaser/nfpm:{{ .Tag }}-amd64"
      - "ghcr.io/goreleaser/nfpm:{{ .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"
  - image_templates:
      - "goreleaser/nfpm:{{ .Tag }}-arm64v8"
      - "ghcr.io/goreleaser/nfpm:{{ .Tag }}-arm64v8"
    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/v8"
    goarch: arm64

docker_manifests:
  - name_template: "goreleaser/nfpm:{{ .Tag }}"
    image_templates:
      - "goreleaser/nfpm:{{ .Tag }}-amd64"
      - "goreleaser/nfpm:{{ .Tag }}-arm64v8"
  - name_template: "ghcr.io/goreleaser/nfpm:{{ .Tag }}"
    image_templates:
      - "ghcr.io/goreleaser/nfpm:{{ .Tag }}-amd64"
      - "ghcr.io/goreleaser/nfpm:{{ .Tag }}-arm64v8"
  - name_template: "goreleaser/nfpm:latest"
    image_templates:
      - "goreleaser/nfpm:{{ .Tag }}-amd64"
      - "goreleaser/nfpm:{{ .Tag }}-arm64v8"
  - name_template: "ghcr.io/goreleaser/nfpm:latest"
    image_templates:
      - "ghcr.io/goreleaser/nfpm:{{ .Tag }}-amd64"
      - "ghcr.io/goreleaser/nfpm:{{ .Tag }}-arm64v8"

archives:
  - name_template: >-
      {{ .ProjectName }}_
      {{- .Version }}_
      {{- title .Os }}_
      {{- if eq .Arch "amd64" }}x86_64
      {{- else if eq .Arch "386" }}i386
      {{- else }}{{ .Arch }}{{ end }}
    format_overrides:
      - goos: windows
        format: zip
    files:
      - README.md
      - LICENSE.md
      - completions/*
      - manpages/*

source:
  enabled: true
  name_template: '{{ .ProjectName }}_{{ .Version }}_source'

brews:
  - repository:
      owner: goreleaser
      name: homebrew-tap
    directory: Formula
    test: |
      system "#{bin}/nfpm -v"
    install: |-
      bin.install "nfpm"
      bash_completion.install "completions/nfpm.bash" => "nfpm"
      zsh_completion.install "completions/nfpm.zsh" => "_nfpm"
      fish_completion.install "completions/nfpm.fish"
      man1.install "manpages/nfpm.1.gz"

scoops:
  - repository:
      owner: goreleaser
      name: scoop-bucket
    directory: bucket

nix:
  - name: nfpm
    repository:
      owner: goreleaser
      name: nur
    path: pkgs/nfpm/default.nix
    extra_install: |-
      installManPage ./manpages/nfpm.1.gz
      installShellCompletion ./completions/*

winget:
  - name: nfpm
    license_url: https://github.com/goreleaser/nfpm/blob/main/LICENSE.md
    publisher: goreleaser
    copyright: Becker Software LTDA
    repository:
      owner: goreleaser
      name: winget-pkgs
      branch: "nfpm-{{.Version}}"
      pull_request:
        enabled: true
        draft: false
        check_boxes: true
        base:
          owner: microsoft
          name: winget-pkgs
          branch: master

nfpms:
  - file_name_template: "{{ .ConventionalFileName }}"
    vendor: GoReleaser
    formats:
      - apk
      - deb
      - rpm
    bindir: /usr/bin
    section: utils
    contents:
      - src: ./completions/nfpm.bash
        dst: /usr/share/bash-completion/completions/nfpm
        file_info:
          mode: 0644
      - src: ./completions/nfpm.fish
        dst: /usr/share/fish/vendor_completions.d/nfpm.fish
        file_info:
          mode: 0644
      - src: ./completions/nfpm.zsh
        dst: /usr/share/zsh/vendor-completions/_nfpm
        file_info:
          mode: 0644
      - src: ./manpages/nfpm.1.gz
        dst: /usr/share/man/man1/nfpm.1.gz
        file_info:
          mode: 0644
      - src: ./LICENSE.md
        dst: /usr/share/doc/nfpm/copyright
        file_info:
          mode: 0644
      - src: .lintian-overrides
        dst: ./usr/share/lintian/overrides/nfpm
        packager: deb
        file_info:
          mode: 0644

aurs:
  - maintainers:
      - "Fernandez Ludovic <lfernandez dot dev at gmail dot com>"
      - "Carlos Alexandro Becker <carlos at becker dot software>"
    private_key: "{{ .Env.AUR_KEY }}"
    git_url: "ssh://aur@aur.archlinux.org/nfpm-bin.git"
    package: |-
      # bin
      install -Dm755 "./nfpm" "${pkgdir}/usr/bin/nfpm"
      # license
      install -Dm644 "./LICENSE.md" "${pkgdir}/usr/share/licenses/nfpm/LICENSE"
      # completions
      mkdir -p "${pkgdir}/usr/share/bash-completion/completions/"
      mkdir -p "${pkgdir}/usr/share/zsh/site-functions/"
      mkdir -p "${pkgdir}/usr/share/fish/vendor_completions.d/"
      install -Dm644 "./completions/nfpm.bash" "${pkgdir}/usr/share/bash-completion/completions/nfpm"
      install -Dm644 "./completions/nfpm.zsh" "${pkgdir}/usr/share/zsh/site-functions/_nfpm"
      install -Dm644 "./completions/nfpm.fish" "${pkgdir}/usr/share/fish/vendor_completions.d/nfpm.fish"
      # man pages
      install -Dm644 "./manpages/nfpm.1.gz" "${pkgdir}/usr/share/man/man1/nfpm.1.gz"

aur_sources:
  - homepage: https://nfpm.goreleaser.com
    description: nFPM is a simple, 0-dependencies, deb, rpm and apk packager.
    maintainers:
      - "Fernandez Ludovic <lfernandez dot dev at gmail dot com>"
      - "Carlos Alexandro Becker <carlos at becker dot software>"
    license: MIT
    private_key: "{{ .Env.AUR_KEY }}"
    git_url: "ssh://aur@aur.archlinux.org/nfpm.git"
    build: |-
      export CGO_CPPFLAGS="${CPPFLAGS}"
      export CGO_CFLAGS="${CFLAGS}"
      export CGO_CXXFLAGS="${CXXFLAGS}"
      export CGO_LDFLAGS="${LDFLAGS}"
      export GOFLAGS="-buildmode=pie -trimpath -mod=readonly -modcacherw"
      go build -ldflags="-w -s -buildid='' -linkmode=external -X main.version=v${pkgver}" ./cmd/nfpm

      chmod +x "./${pkgname}"
    package: |-
      # Bin
      install -Dsm755 "./${pkgname}" "${pkgdir}/usr/bin/${pkgname}"

      # License
      install -Dm644 "./LICENSE.md" "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"

      # Completions
      mkdir -p "${pkgdir}/usr/share/bash-completion/completions/"
      mkdir -p "${pkgdir}/usr/share/zsh/site-functions/"
      mkdir -p "${pkgdir}/usr/share/fish/vendor_completions.d/"
      ./${pkgname} completion bash > "${pkgdir}/usr/share/bash-completion/completions/${pkgname}"
      ./${pkgname} completion zsh > "${pkgdir}/usr/share/zsh/site-functions/_${pkgname}"
      ./${pkgname} completion fish > "${pkgdir}/usr/share/fish/vendor_completions.d/${pkgname}.fish"

furies:
  - account: goreleaser

sboms:
  - artifacts: archive

signs:
  - cmd: cosign
    certificate: "${artifact}.pem"
    output: true
    artifacts: checksum
    args:
      - sign-blob
      - "--output-certificate=${certificate}"
      - "--output-signature=${signature}"
      - "${artifact}"
      - --yes

docker_signs:
  - cmd: cosign
    artifacts: manifests
    output: true
    args:
      - "sign"
      - "${artifact}"
      - --yes

changelog:
  sort: asc
  use: github
  filters:
    exclude:
      - "^test:"
      - "^chore"
      - "merge conflict"
      - Merge pull request
      - Merge remote-tracking branch
      - Merge branch
      - go mod tidy
  groups:
    - title: Dependency updates
      regexp: '^.*?(feat|fix|chore)\(deps\)!?:.+$'
      order: 300
    - title: "New Features"
      regexp: '^.*?feat(\([[:word:]]+\))??!?:.+$'
      order: 100
    - title: "Security updates"
      regexp: '^.*?sec(\([[:word:]]+\))??!?:.+$'
      order: 150
    - title: "Bug fixes"
      regexp: '^.*?fix(\([[:word:]]+\))??!?:.+$'
      order: 200
    - title: "Documentation updates"
      regexp: ^.*?doc(\([[:word:]]+\))??!?:.+$
      order: 400
    - title: "Build process updates"
      regexp: ^.*?(build|ci)(\([[:word:]]+\))??!?:.+$
      order: 400
    - title: Other work
      order: 9999

checksum:
  name_template: "checksums.txt"

release:
  footer: |
    **Full Changelog**: https://github.com/goreleaser/nfpm/compare/{{ .PreviousTag }}...{{ .Tag }}

    ## Helping out

    This release is only possible thanks to **all** the support of **awesome people**!

    Want to be one of them?
    You can [sponsor](https://goreleaser.com/sponsors/) or [contribute with code](https://goreleaser.com/contributing).

    ## Where to go next?

    * nFPM is a satellite project from GoReleaser. [Check it out](https://goreleaser.com)!
    * Find examples and commented usage of all options in our [website](https://nfpm.goreleaser.com/).
    * Reach out on [Discord](https://discord.gg/RGEBtg8vQ6) and [Twitter](https://twitter.com/goreleaser)!

    <a href="https://goreleaser.com"><img src="https://raw.githubusercontent.com/goreleaser/artwork/master/opencollective-header.png" with="100%" alt="GoReleaser logo"></a>

milestones:
  - close: true

announce:
  twitter:
    enabled: false
    message_template: "nFPM {{ .Tag }} was just released! See what's new: https://github.com/goreleaser/nfpm/releases/tag/{{ .Tag }}"
  discord:
    enabled: true
    message_template: "nFPM {{ .Tag }} is out! See what's new: https://github.com/goreleaser/nfpm/releases/tag/{{ .Tag }}"
