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 'email-cli'.
16 id: "email-cli"
17 # The main entrypoint of your application.
18 main: .
19 # The Go compiler to use.
20 goos:
21 - linux
22 - darwin # macOS
23 goarch:
24 - amd64 # Intel
25 - arm64 # Apple Silicon
26 # Environment variables to pass to the Go compiler.
27 env:
28 - CGO_ENABLED=0
29 # Linker flags to strip debug information and reduce binary size.
30 ldflags:
31 - -s -w -X main.version={{.Version}} -X main.commit={{.Commit}} -X main.date={{.Date}}
32
33# 'archives' defines how to package the built binaries.
34archives:
35 - # The archive configuration.
36 # This will create .tar.gz files.
37 format: tar.gz
38 # A template for the archive file names.
39 # e.g., email-cli_1.2.3_darwin_amd64.tar.gz
40 name_template: "{{ .ProjectName }}_{{ .Version }}_{{ .Os }}_{{ .Arch }}"
41 # Files to include in the archive.
42 files:
43 - LICENSE
44 - README.md
45
46# 'checksum' creates a file with SHA256 checksums for all artifacts.
47checksum:
48 name_template: "checksums.txt"
49
50# 'snapshot' configures how test releases are named when running on non-tagged commits.
51snapshot:
52 name_template: "{{ .Tag }}-next"
53
54# 'changelog' configures the automatic generation of release notes.
55changelog:
56 sort: asc
57 filters:
58 # Exclude commit messages that match these patterns from the changelog.
59 exclude:
60 - "^docs:"
61 - "^test:"
62 - "Merge branch"
63
64# 'release' configures the GitHub Release creation.
65release:
66 # If set to true, GoReleaser will automatically draft a new release.
67 # Set to false to automatically publish the release.
68 draft: false
69 # If set to true, will mark the release as a pre-release.
70 prerelease: auto
71
72brews:
73 - name: email-cli
74 homepage: "https://github.com/andrinoff/email-cli"
75 description: "A beautiful and functional email client for your terminal."
76 tap:
77 owner: andrinoff
78 name: homebrew-email-cli
79 token: "{{ .Env.HOMEBREW_TAP_GITHUB_TOKEN }}"
80 commit_author:
81 name: goreleaserbot
82 email: bot@goreleaser.com
83 install: |
84 bin.install "email-cli"
85 test: |
86 system "#{bin}/email-cli --version"