before:
  hooks:
    - go mod download
    - go mod tidy
builds:
  -
    id: ntfy_linux_amd64
    binary: ntfy
    env:
      - CGO_ENABLED=1 # required for go-sqlite3
    tags: [sqlite_omit_load_extension,osusergo,netgo]
    ldflags:
      - "-linkmode=external -extldflags=-static -s -w -X main.version={{.Version}} -X main.commit={{.Commit}} -X main.date={{.Date}}"
    goos: [linux]
    goarch: [amd64]
    hooks:
      post:
        - upx "{{ .Path }}" # apt install upx
  -
    id: ntfy_linux_armv6
    binary: ntfy
    env:
      - CGO_ENABLED=1 # required for go-sqlite3
      - CC=arm-linux-gnueabi-gcc # apt install gcc-arm-linux-gnueabi
    tags: [sqlite_omit_load_extension,osusergo,netgo]
    ldflags:
      - "-linkmode=external -extldflags=-static -s -w -X main.version={{.Version}} -X main.commit={{.Commit}} -X main.date={{.Date}}"
    goos: [linux]
    goarch: [arm]
    goarm: [6]
    # No "upx" for ARM, see https://github.com/binwiederhier/ntfy/issues/191#issuecomment-1083406546
  -
    id: ntfy_linux_armv7
    binary: ntfy
    env:
      - CGO_ENABLED=1 # required for go-sqlite3
      - CC=arm-linux-gnueabi-gcc # apt install gcc-arm-linux-gnueabi
    tags: [sqlite_omit_load_extension,osusergo,netgo]
    ldflags:
      - "-linkmode=external -extldflags=-static -s -w -X main.version={{.Version}} -X main.commit={{.Commit}} -X main.date={{.Date}}"
    goos: [linux]
    goarch: [arm]
    goarm: [7]
    # No "upx" for ARM, see https://github.com/binwiederhier/ntfy/issues/191#issuecomment-1083406546
  -
    id: ntfy_linux_arm64
    binary: ntfy
    env:
      - CGO_ENABLED=1 # required for go-sqlite3
      - CC=aarch64-linux-gnu-gcc # apt install gcc-aarch64-linux-gnu
    tags: [sqlite_omit_load_extension,osusergo,netgo]
    ldflags:
      - "-linkmode=external -extldflags=-static -s -w -X main.version={{.Version}} -X main.commit={{.Commit}} -X main.date={{.Date}}"
    goos: [linux]
    goarch: [arm64]
    # No "upx" for ARM, see https://github.com/binwiederhier/ntfy/issues/191#issuecomment-1083406546
  -
    id: ntfy_windows_amd64
    binary: ntfy
    env:
      - CGO_ENABLED=0 # explicitly disable, since we don't need go-sqlite3
    tags: [noserver] # don't include server files
    ldflags:
      - "-X main.version={{.Version}} -X main.commit={{.Commit}} -X main.date={{.Date}}"
    goos: [windows]
    goarch: [amd64]
    # No "upx" for Windows to hopefully avoid Virus warnings
  -
    id: ntfy_darwin_all
    binary: ntfy
    env:
      - CGO_ENABLED=0 # explicitly disable, since we don't need go-sqlite3
    tags: [noserver] # don't include server files
    ldflags:
      - "-X main.version={{.Version}} -X main.commit={{.Commit}} -X main.date={{.Date}}"
    goos: [darwin]
    goarch: [amd64, arm64] # will be combined to "universal binary" (see below)
nfpms:
  -
    package_name: ntfy
    homepage: https://heckel.io/ntfy
    maintainer: Philipp C. Heckel <philipp.heckel@gmail.com>
    description: Simple pub-sub notification service
    license: Apache 2.0
    formats:
      - deb
      - rpm
    bindir: /usr/bin
    contents:
      - src: server/server.yml
        dst: /etc/ntfy/server.yml
        type: "config|noreplace"
      - src: server/ntfy.service
        dst: /lib/systemd/system/ntfy.service
      - src: client/client.yml
        dst: /etc/ntfy/client.yml
        type: "config|noreplace"
      - src: client/ntfy-client.service
        dst: /lib/systemd/system/ntfy-client.service
      - dst: /var/cache/ntfy
        type: dir
      - dst: /var/cache/ntfy/attachments
        type: dir
      - dst: /var/lib/ntfy
        type: dir
      - dst: /usr/share/ntfy/logo.png
        src: web/public/static/img/ntfy.png
    scripts:
      preinstall: "scripts/preinst.sh"
      postinstall: "scripts/postinst.sh"
      preremove: "scripts/prerm.sh"
      postremove: "scripts/postrm.sh"
archives:
  -
    id: ntfy_linux
    builds:
      - ntfy_linux_amd64
      - ntfy_linux_armv6
      - ntfy_linux_armv7
      - ntfy_linux_arm64
    wrap_in_directory: true
    files:
      - LICENSE
      - README.md
      - server/server.yml
      - server/ntfy.service
      - client/client.yml
      - client/ntfy-client.service
    replacements:
      amd64: x86_64
  -
    id: ntfy_windows
    builds:
      - ntfy_windows_amd64
    format: zip
    wrap_in_directory: true
    files:
      - LICENSE
      - README.md
      - client/client.yml
    replacements:
      amd64: x86_64
  -
    id: ntfy_darwin
    builds:
      - ntfy_darwin_all
    wrap_in_directory: true
    files:
      - LICENSE
      - README.md
      - client/client.yml
    replacements:
      darwin: macOS
universal_binaries:
  -
    id: ntfy_darwin_all
    replace: true
    name_template: ntfy
checksum:
  name_template: 'checksums.txt'
snapshot:
  name_template: "{{ .Tag }}-next"
changelog:
  sort: asc
  filters:
    exclude:
      - '^docs:'
      - '^test:'
dockers:
  - image_templates:
      - &amd64_image "binwiederhier/ntfy:{{ .Tag }}-amd64"
    use: buildx
    dockerfile: Dockerfile
    goarch: amd64
    build_flag_templates:
      - "--platform=linux/amd64"
  - image_templates:
      - &arm64v8_image "binwiederhier/ntfy:{{ .Tag }}-arm64v8"
    use: buildx
    dockerfile: Dockerfile
    goarch: arm64
    build_flag_templates:
      - "--platform=linux/arm64/v8"
  - image_templates:
      - &armv7_image "binwiederhier/ntfy:{{ .Tag }}-armv7"
    use: buildx
    dockerfile: Dockerfile
    goarch: arm
    goarm: 7
    build_flag_templates:
      - "--platform=linux/arm/v7"
  - image_templates:
      - &armv6_image "binwiederhier/ntfy:{{ .Tag }}-armv6"
    use: buildx
    dockerfile: Dockerfile
    goarch: arm
    goarm: 6
    build_flag_templates:
      - "--platform=linux/arm/v6"
docker_manifests:
  - name_template: "binwiederhier/ntfy:latest"
    image_templates:
      - *amd64_image
      - *arm64v8_image
      - *armv7_image
      - *armv6_image
  - name_template: "binwiederhier/ntfy:{{ .Tag }}"
    image_templates:
      - *amd64_image
      - *arm64v8_image
      - *armv7_image
      - *armv6_image