version: 2
# GoReleaser config for kubeasy-cli
# Docs: https://goreleaser.com/customization/build/

project_name: kubeasy-cli
before:
  hooks:
    - sh -c 'echo {{ .Tag }} > .latest-version'
release:
  github:
    owner: kubeasy-dev
    name: kubeasy-cli
builds:
  - id: kubeasy-cli
    main: ./main.go
    binary: kubeasy
    goos:
      - linux
      - windows
      - darwin
    goarch:
      - amd64
      - arm64
    ldflags:
      - "-s -w -X 'github.com/kubeasy-dev/kubeasy-cli/internal/constants.Version={{.Tag}}' -X 'github.com/kubeasy-dev/kubeasy-cli/internal/constants.LogFilePath=/tmp/kubeasy-cli.log' -X 'github.com/kubeasy-dev/kubeasy-cli/internal/constants.WebsiteURL=https://kubeasy.dev' -X 'github.com/kubeasy-dev/kubeasy-cli/internal/constants.ExercicesRepoBranch=main'"
    env:
      - GOPRIVATE=github.com/kubeasy-dev/challenge-operator
archives:
  - id: archive
    name_template: "{{ .ProjectName }}_{{ .Tag }}_{{ .Os }}_{{ .Arch }}"
    files:
      - LICENSE
      - README.md
      - "build/**"
checksum:
  name_template: "checksums.txt"
blobs:
  - provider: s3
    bucket: kubeasy-cli-binaries
    region: weur
    ids:
      - archive
      - checksums
    endpoint: https://57e2edb42742bf00d9a2526736f3ea36.r2.cloudflarestorage.com
    acl: public-read
    extra_files:
      - glob: scripts/install.sh
        name_template: install.sh
      - glob: .latest-version
        name_template: latest
  # Upload install.sh and latest to bucket root (not under project/version/)
  - provider: s3
    bucket: kubeasy-cli-binaries
    region: weur
    endpoint: https://57e2edb42742bf00d9a2526736f3ea36.r2.cloudflarestorage.com
    acl: public-read
    directory: "."
    extra_files_only: true
    extra_files:
      - glob: scripts/install.sh
        name_template: install.sh
      - glob: .latest-version
        name_template: latest
homebrew_casks:
  - name: kubeasy
    repository:
      owner: kubeasy-dev
      name: homebrew-tap
      token: "{{ .Env.TAP_GITHUB_TOKEN }}"
    directory: Casks
    binaries:
      - kubeasy
    commit_msg_template: "chore: update cask for {{ .ProjectName }} {{ .Tag }}"
    homepage: "https://kubeasy.dev"
    description: "CLI tool to learn Kubernetes through practical challenges"
    license: "MIT"
    hooks:
      post:
        install: |
          if OS.mac?
            system_command "/usr/bin/xattr", args: ["-dr", "com.apple.quarantine", "#{staged_path}/kubeasy"]
          end
scoops:
  - name: kubeasy
    repository:
      owner: kubeasy-dev
      name: scoop-bucket
      token: "{{ .Env.TAP_GITHUB_TOKEN }}"
    commit_msg_template: "chore: update manifest for {{ .ProjectName }} {{ .Tag }}"
    homepage: "https://kubeasy.dev"
    description: "CLI tool to learn Kubernetes through practical challenges"
    license: "MIT"
snapshot: {}
changelog:
  use: github
  sort: asc
  filters:
    exclude:
      - "^docs:"
      - "^test:"
      - "^ci:"
      - "^chore(deps):"
      - Merge pull request
      - Merge branch
  groups:
    - title: "🚀 Features"
      regexp: '^feat(\(.+\))?:'
      order: 0
    - title: "🐛 Bug Fixes"
      regexp: '^fix(\(.+\))?:'
      order: 1
    - title: "📚 Documentation"
      regexp: '^docs(\(.+\))?:'
      order: 2
    - title: "🔧 Improvements"
      regexp: '^(refactor|perf|style)(\(.+\))?:'
      order: 3
    - title: "🧰 Maintenance"
      regexp: '^chore(\(.+\))?:'
      order: 4
    - title: "Others"
      order: 999
