'project_name': 'AdGuardHome'

'env':
- 'GO111MODULE=on'
- 'GOPROXY=https://goproxy.io'

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

'builds':
- 'main': './main.go'
  'ldflags':
  - '-s -w -X main.version={{.Version}} -X main.channel={{.Env.CHANNEL}} -X main.goarm={{.Env.GOARM}}'
  'env':
  - 'CGO_ENABLED=0'
  'goos':
  - 'darwin'
  - 'linux'
  - 'freebsd'
  - 'windows'
  'goarch':
  - '386'
  - 'amd64'
  - 'arm'
  - 'arm64'
  - 'mips'
  - 'mipsle'
  - 'mips64'
  - 'mips64le'
  'goarm':
  - '5'
  - '6'
  - '7'
  'gomips':
  - 'softfloat'
  'ignore':
  - 'goos': 'freebsd'
    'goarch': 'mips'
  - 'goos': 'freebsd'
    'goarch': 'mipsle'

'archives':
- # Archive name template.
  # Defaults:
  # - if format is `tar.gz`, `tar.xz`, `gz` or `zip`:
  #   - `{{ .ProjectName }}_{{ .Version }}_{{ .Os }}_{{ .Arch }}{{ if .Arm }}v{{ .Arm }}{{ end }}{{ if .Mips }}_{{ .Mips }}{{ end }}`
  # - if format is `binary`:
  #   - `{{ .Binary }}_{{ .Version }}_{{ .Os }}_{{ .Arch }}{{ if .Arm }}v{{ .Arm }}{{ end }}{{ if .Mips }}_{{ .Mips }}{{ end }}`
  'name_template': '{{ .ProjectName }}_{{ .Os }}_{{ .Arch }}{{ if .Arm }}v{{ .Arm }}{{ end }}{{ if .Mips }}_{{ .Mips }}{{ end }}'
  'wrap_in_directory': 'AdGuardHome'
  'format_overrides':
  - 'goos': 'windows'
    'format': 'zip'
  - 'goos': 'darwin'
    'format': 'zip'
  'files':
  - 'LICENSE.txt'
  - 'README.md'

'snapcrafts':
- 'name': 'adguard-home'
  'base': 'core20'
  'name_template': '{{ .ProjectName }}_{{ .Arch }}{{ if .Arm }}v{{ .Arm }}{{ end }}'
  'summary': 'Network-wide ads & trackers blocking DNS server'
  'description': |
    AdGuard Home is a network-wide software for blocking ads & tracking. After
    you set it up, it'll cover ALL your home devices, and you don't need any
    client-side software for that.

    It operates as a DNS server that re-routes tracking domains to a "black hole,"
    thus preventing your devices from connecting to those servers. It's based
    on software we use for our public AdGuard DNS servers -- both share a lot
    of common code.
  'grade': 'stable'
  'confinement': 'strict'
  'publish': false
  'license': 'GPL-3.0'
  'extra_files':
  - 'source': 'scripts/snap/local/adguard-home-web.sh'
    'destination': 'adguard-home-web.sh'
    'mode': 0755
  - 'source': 'scripts/snap/gui/adguard-home-web.desktop'
    'destination': 'meta/gui/adguard-home-web.desktop'
    'mode': 0644
  - 'source': 'scripts/snap/gui/adguard-home-web.png'
    'destination': 'meta/gui/adguard-home-web.png'
    'mode': 0644
  'apps':
    'adguard-home':
      'command': 'AdGuardHome -w $SNAP_DATA --no-check-update'
      'plugs':
      # Add the "netrwork-bind" plug to bind to interfaces.
      - 'network-bind'
      # Add the "netrwork-observe" plug to be able to bind to ports below 1024
      # (cap_net_bind_service) and also to bind to a particular interface using
      # SO_BINDTODEVICE (cap_net_raw).
      - 'network-observe'
      'daemon': 'simple'
    'adguard-home-web':
      'command': 'adguard-home-web.sh'
      'plugs':
      - 'desktop'

'checksum':
  'name_template': 'checksums.txt'

'snapshot':
  # TODO(a.garipov): A temporary solution to trim the prerelease versions.
  # A real solution would consist of making a better versioning scheme that also
  # doesn't break SemVer or Snapcraft.
  #
  # See https://github.com/AdguardTeam/AdGuardHome/issues/2412.
  'name_template': '{{ slice .Tag 0 8 }}-SNAPSHOT-{{ .ShortCommit }}'