version: 2
builds:
- id: zrok-amd64
  main: ./cmd/zrok
  binary: zrok
  ldflags: "-s -w -X github.com/openziti/zrok/build.Version={{.Tag}} -X github.com/openziti/zrok/build.Hash={{.ShortCommit}}"
  env:
    - CGO_ENABLED=1
  goos:
    - linux
  goarch:
    - amd64

nfpms:
  - package_name: zrok
    id: zrok-cli
    vendor: NetFoundry
    homepage: https://zrok.io/
    maintainer: support@zrok.io
    description: |-
      zrok is a next-generation sharing platform, designed to make sharing network and file resources simple and
      secure.
    license: Apache 2.0

    # Build IDs for the builds you want to create NFPM packages for.
    builds:
      - zrok-amd64

    # Formats to be generated.
    formats:
      - deb
      - rpm

    # {{ .ConventionalFileName }} satisfies the RPM name convention.
    file_name_template: "{{ .ConventionalFileName }}"

    # Umask to be used on files without explicit mode set. (overridable)
    umask: 0o002

    # Package version within this release version.
    release: 1

    # Section.
    section: default

    # Priority.
    priority: optional

    # GoReleaser will automatically add the binaries here
    bindir: /opt/openziti/bin

    # Contents to add to the package.
    contents:
      - src: /opt/openziti/bin/zrok
        dst: /usr/bin/zrok
        type: "symlink"

  - package_name: zrok-share
    id: zrok-share
    vendor: NetFoundry
    homepage: https://zrok.io/
    maintainer: support@zrok.io
    description: |-
      This package provides zrok-share.service. To enable, edit the "/opt/openziti/etc/zrok/zrok-share.env" file with the
      desired target for sharing, and run "systemctl enable --now zrok-share.service".
    license: Apache 2.0

    # do not bundle the built binaries, only supporting files
    meta: true

    # Formats to be generated.
    formats:
      - deb
      - rpm

    # {{ .ConventionalFileName }} satisfies the RPM name convention.
    file_name_template: "{{ .ConventionalFileName }}"

    # Umask to be used on files without explicit mode set. (overridable)
    umask: 0o002

    # Package version within this release version.
    release: 1

    # Section.
    section: default

    # Priority.
    priority: optional

    # GoReleaser will automatically add the binaries here
    dependencies:
      - zrok

    # this allows users to satisfy the requirement for jq another way, not with the package manager, e.g.
    # apt install --no-recommends zrok-share
    recommends:
      - jq

    overrides:
      # yum and dnf do not automatically install "weak deps" aka "recommends", so we need to add them as a dependency
      rpm:
        dependencies:
          - zrok
          - jq

    # Contents to add to the package.
    contents:
      - dst: /lib/systemd/system/
        src: ./nfpm/zrok-share.service

      - dst: /usr/lib/systemd/user/
        src: ./nfpm/zrok-share@.service

      - dst: /etc/systemd/system/zrok-share.service.d/override.conf
        src: ./nfpm/zrok-share.service.override.conf

      - dst: /opt/openziti/etc/zrok
        type: dir
        file_info:
          mode: 0755

      - dst: /opt/openziti/bin/
        src: ./nfpm/zrok-share.bash
        file_info:
          mode: 0755

      - dst: /opt/openziti/bin/
        src: ./nfpm/zrok-enable.bash
        file_info:
          mode: 0755

      - dst: /opt/openziti/etc/zrok/
        src: ./nfpm/zrok-share.env
        type: config|noreplace

      - dst: /opt/openziti/etc/zrok/
        src: ./etc/caddy/multiple_upstream.Caddyfile
        type: config|noreplace