.goreleaser.yml

  1# This is the configuration file for GoReleaser.
  2# It defines how your project should be built, packaged, and released.
  3# For more information, see: https://goreleaser.com/customization/
  4version: 2
  5
  6# The 'before' hook runs commands before the build process starts.
  7before:
  8  hooks:
  9    # Tidy up the go.mod file to ensure all dependencies are clean.
 10    - go mod tidy
 11
 12# 'builds' defines the matrix of binaries to create.
 13builds:
 14  - # The main build configuration for your CLI.
 15    # The binary name will be 'matcha'.
 16    id: "matcha"
 17    # The main entrypoint of your application.
 18    main: .
 19    # The Go compiler to use.
 20    goos:
 21      - linux
 22      - darwin # macOS
 23      - windows
 24    goarch:
 25      - amd64 # Intel
 26      - arm64 # Apple Silicon
 27    # Environment variables to pass to the Go compiler.
 28    env:
 29      - CGO_ENABLED=0
 30    # Build flags for smaller binaries and reproducible builds.
 31    flags:
 32      - -trimpath
 33    # Linker flags to strip debug information and reduce binary size.
 34    ldflags:
 35      - -s -w -buildid= -X main.version={{.Version}} -X main.commit={{.Commit}} -X main.date={{.Date}}
 36
 37# 'archives' defines how to package the built binaries.
 38# 'archives' defines how to package the built binaries.
 39archives:
 40  - # The archive configuration.
 41    # This will create .tar.gz files.
 42    formats: [tar.gz]
 43
 44    # A template for the archive file names.
 45    # e.g., matcha_1.2.3_darwin_amd64.tar.gz
 46    name_template: "{{ .ProjectName }}_{{ .Version }}_{{ .Os }}_{{ .Arch }}"
 47    # Files to include in the archive.
 48    format_overrides:
 49      - goos: windows
 50        formats: ["zip"]
 51    files:
 52      - LICENSE
 53
 54      - README.md
 55
 56# 'snapshot' configures how test releases are named when running on non-tagged commits.
 57snapshot:
 58  version_template: "{{ .Tag }}-next"
 59
 60# 'checksum' creates a file with SHA256 checksums for all artifacts.
 61checksum:
 62  name_template: "checksums.txt"
 63
 64# 'changelog' configures the automatic generation of release notes.
 65changelog:
 66  # Use 'github-native' to leverage GitHub's release notes API.
 67  # This automatically includes contributors and links to PRs/issues.
 68  # Categories are configured in .github/release.yml
 69  use: github-native
 70
 71# 'release' configures the GitHub Release creation.
 72release:
 73  # If set to true, GoReleaser will automatically draft a new release.
 74  # Set to false to automatically publish the release.
 75  draft: false
 76  # If set to true, will mark the release as a pre-release.
 77  prerelease: auto
 78  # Add a footer to the release notes featuring full changelog.
 79  footer: |
 80    ---
 81    This version is also available on **[Snapcraft](https://snapcraft.io/matcha)**, **Homebrew**, **[Flatpak](https://matcha.floatpane.com/matcha.flatpakref)**!
 82
 83    View the [installation instructions](https://docs.matcha.floatpane.com/installation) for more details.
 84
 85# 'brews' configures the Homebrew tap integration.
 86brews:
 87  - # The configuration for your Homebrew tap.
 88    # The name of your formula file will be 'matcha.rb'.
 89    name: matcha
 90    # The GitHub repository for your Homebrew tap.
 91    repository:
 92      owner: floatpane
 93      name: homebrew-matcha
 94      # The token to use for pushing to the tap repository.
 95      # It uses the secret you'll create in your repository settings.
 96      token: "{{ .Env.HOMEBREW_TAP_GITHUB_TOKEN }}"
 97
 98    # The commit author for the tap update.
 99    commit_author:
100      name: goreleaserbot
101      email: bot@goreleaser.com
102
103    # A description for your formula.
104    description: "A beautiful and functional email client for your terminal."
105    # The homepage URL for your formula.
106    homepage: "https://matcha.floatpane.com"
107
108    # The dependencies for your formula.
109    # Since it's a pre-compiled binary, there are no runtime dependencies.
110    dependencies: []
111
112    # The test block for your formula.
113    # This command will be run by `brew test matcha`.
114    test: |
115      system "#{bin}/matcha --version"
116
117    # The installation instructions for your formula.
118    # This tells Homebrew to just install the binary.
119    install: |
120      bin.install "matcha"
121# 'winget' configures the WinGet manifest generation and publication.
122winget:
123  - # Name of the package in WinGet.
124    name: matcha
125    # Unique package identifier used by WinGet.
126    package_identifier: floatpane.matcha
127    # WinGet publisher metadata.
128    publisher: floatpane
129    publisher_url: "https://matcha.floatpane.com"
130    publisher_support_url: "https://github.com/floatpane/matcha/issues"
131
132    # Package metadata.
133    short_description: "A beautiful and functional email client for your terminal."
134    description: |
135      A beautiful and functional email client for your terminal, built with Go and the charming Bubble Tea TUI library.
136      Never leave your command line to check your inbox or send an email again!
137    homepage: "https://matcha.floatpane.com"
138    license: MIT
139    tags:
140      - email
141      - terminal
142      - tui
143
144    # Use release changelog as WinGet release notes.
145    release_notes: "{{ .Changelog }}"
146
147    # Commit to a feature branch in winget-pkgs and open a PR.
148    repository:
149      owner: floatpane
150      name: winget-pkgs
151      branch: "{{ .ProjectName }}-{{ .Version }}"
152      token: "{{ .Env.HOMEBREW_TAP_GITHUB_TOKEN }}"
153      pull_request:
154        enabled: true
155        base:
156          owner: microsoft
157          name: winget-pkgs
158          branch: master
159
160    # Commit author for manifest updates.
161    commit_author:
162      name: goreleaserbot
163      email: bot@goreleaser.com
164
165# 'snapcrafts' configures the Snapcraft integration.
166snapcrafts:
167  - # The configuration for your Snapcraft package.
168    name: matcha
169    publish: true
170    summary: "A beautiful and functional email client for your terminal."
171    description: |
172      A beautiful and functional email client for your terminal, built with Go and the charming Bubble Tea TUI library.
173      Never leave your command line to check your inbox or send an email again!
174    grade: stable
175    confinement: strict
176    license: MIT