diff --git a/.goreleaser.yaml b/.goreleaser.yaml index 49b468a..54bcb19 100644 --- a/.goreleaser.yaml +++ b/.goreleaser.yaml @@ -65,7 +65,7 @@ checksum: snapshot: version_template: "{{ .Tag }}-dev" -brews: +homebrew_casks: - name: stave repository: owner: yaklabco @@ -78,25 +78,26 @@ brews: description: "Make(file) replacement that is pure Go based (a fork of `makefile/mage`)." license: "Apache-2.0" - # Installation logic for the binary and completions - # We point to the 'completions' folder created in the archive step above - install: | - bin.install "stave" - bash_completion.install "completions/stave.bash" => "stave" - zsh_completion.install "completions/stave.zsh" => "_stave" - fish_completion.install "completions/stave.fish" + binaries: + - stave - # Useful information displayed after 'brew install' + # The property must be an object map rather than a boolean 'true' + generate_completions_from_executable: + executable: "stave" + args: ["completion"] # Subcommand your binary runs to spit out completions + shell_parameter_format: cobra # Options: cobra, clap, click, flag, none, typer + + # Informing users to clean up the legacy formula to prevent overlap issues caveats: | + If you previously installed stave via homebrew formulas, please run: + brew uninstall yaklabco/tap/stave + To enable completions, you may need to add the following to your shell profile, and then open a new shell: zsh: autoload -U compinit && compinit bash: [[ -r "$(brew --prefix)/etc/profile.d/bash_completion.sh" ]] && . "$(brew --prefix)/etc/profile.d/bash_completion.sh" - test: | - system "#{bin}/stave --version" - release: draft: false github: diff --git a/CHANGELOG.md b/CHANGELOG.md index 86a20c9..322eef5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [0.14.9] - 2026-05-24 + +### Changed + +- Transition to new Goreleaser `homebrew_casks:` apparatus (after deprecation of `brews:`). This means that `stave` will now be released to Homebrew as a cask rather than a formula, and the new cask is intentionally configured to _conflict_ with the old formula. + +- Bump all updatable Go dependencies to their latest versions as of this date. + ## [0.14.8] - 2026-05-19 ### Changed @@ -553,7 +561,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Added parallelism-by-default to use of Go tools from inside Stave. - Parallelized tests where possible, including locking mechanism to prevent parallel tests in same `testdata/(xyz/)` subdir. -[unreleased]: https://github.com/yaklabco/stave/compare/v0.14.8...HEAD +[unreleased]: https://github.com/yaklabco/stave/compare/v0.14.9...HEAD +[0.14.9]: https://github.com/yaklabco/stave/compare/v0.14.8...v0.14.9 [0.14.8]: https://github.com/yaklabco/stave/compare/v0.14.7...v0.14.8 [0.14.7]: https://github.com/yaklabco/stave/compare/v0.14.6...v0.14.7 [0.14.6]: https://github.com/yaklabco/stave/compare/v0.14.5...v0.14.6 diff --git a/go.mod b/go.mod index 3bdd1f6..0f2831d 100644 --- a/go.mod +++ b/go.mod @@ -18,7 +18,7 @@ require ( github.com/spf13/cobra v1.10.2 github.com/spf13/viper v1.21.0 github.com/stretchr/testify v1.11.1 - github.com/yaklabco/direnv/v2 v2.37.2-0.20260408140756-a0bfab26dddf + github.com/yaklabco/direnv/v2 v2.37.2-0.20260524202835-d4a632bddfe5 golang.org/x/tools v0.45.0 ) @@ -32,7 +32,7 @@ require ( github.com/charmbracelet/ultraviolet v0.0.0-20260511121909-c840852527f3 // indirect github.com/charmbracelet/x/ansi v0.11.7 // indirect github.com/charmbracelet/x/cellbuf v0.0.15 // indirect - github.com/charmbracelet/x/exp/charmtone v0.0.0-20260519012233-798e623c8447 // indirect + github.com/charmbracelet/x/exp/charmtone v0.0.0-20260524005558-961435f30453 // indirect github.com/charmbracelet/x/termios v0.1.1 // indirect github.com/charmbracelet/x/windows v0.2.2 // indirect github.com/clipperhouse/displaywidth v0.11.0 // indirect @@ -68,9 +68,9 @@ require ( go.yaml.in/yaml/v3 v3.0.4 // indirect golang.org/x/exp v0.0.0-20260508232706-74f9aab9d74a // indirect golang.org/x/mod v0.36.0 // indirect - golang.org/x/net v0.54.0 // indirect + golang.org/x/net v0.55.0 // indirect golang.org/x/sync v0.20.0 // indirect - golang.org/x/sys v0.44.0 // indirect + golang.org/x/sys v0.45.0 // indirect golang.org/x/term v0.43.0 // indirect golang.org/x/text v0.37.0 // indirect gopkg.in/warnings.v0 v0.1.2 // indirect diff --git a/go.sum b/go.sum index 8cd7389..dcd2028 100644 --- a/go.sum +++ b/go.sum @@ -26,8 +26,8 @@ github.com/charmbracelet/x/ansi v0.11.7 h1:kzv1kJvjg2S3r9KHo8hDdHFQLEqn4RBCb39dA github.com/charmbracelet/x/ansi v0.11.7/go.mod h1:9qGpnAVYz+8ACONkZBUWPtL7lulP9No6p1epAihUZwQ= github.com/charmbracelet/x/cellbuf v0.0.15 h1:ur3pZy0o6z/R7EylET877CBxaiE1Sp1GMxoFPAIztPI= github.com/charmbracelet/x/cellbuf v0.0.15/go.mod h1:J1YVbR7MUuEGIFPCaaZ96KDl5NoS0DAWkskup+mOY+Q= -github.com/charmbracelet/x/exp/charmtone v0.0.0-20260519012233-798e623c8447 h1:ZJxL6oPAQXzr21550ad/ZNkHKC3Ita70bl4xVZUPqqE= -github.com/charmbracelet/x/exp/charmtone v0.0.0-20260519012233-798e623c8447/go.mod h1:nsExn0DGyX0lh9LwLHTn2Gg+hafdzfSXnC+QmEJTZFY= +github.com/charmbracelet/x/exp/charmtone v0.0.0-20260524005558-961435f30453 h1:WC+pgy4wN563yShDytCj7lp6FpG19V+wPeXhpCRbHkY= +github.com/charmbracelet/x/exp/charmtone v0.0.0-20260524005558-961435f30453/go.mod h1:nsExn0DGyX0lh9LwLHTn2Gg+hafdzfSXnC+QmEJTZFY= github.com/charmbracelet/x/exp/golden v0.0.0-20250806222409-83e3a29d542f h1:pk6gmGpCE7F3FcjaOEKYriCvpmIN4+6OS/RD0vm4uIA= github.com/charmbracelet/x/exp/golden v0.0.0-20250806222409-83e3a29d542f/go.mod h1:IfZAMTHB6XkZSeXUqriemErjAWCCzT0LwjKFYCZyw0I= github.com/charmbracelet/x/term v0.2.2 h1:xVRT/S2ZcKdhhOuSP4t5cLi5o+JxklsoEObBSgfgZRk= @@ -134,20 +134,20 @@ github.com/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8 github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU= github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e h1:JVG44RsyaB9T2KIHavMF/ppJZNG9ZpyihvCd0w101no= github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e/go.mod h1:RbqR21r5mrJuqunuUZ/Dhy/avygyECGrLceyNeo4LiM= -github.com/yaklabco/direnv/v2 v2.37.2-0.20260408140756-a0bfab26dddf h1:vBvd306Igh58n1yP/+g3RPGYJ0voPliGwRWhTccMXzM= -github.com/yaklabco/direnv/v2 v2.37.2-0.20260408140756-a0bfab26dddf/go.mod h1:Q6SgBrVaKeL+JevNgbtZ9MnqqnV5YFCRf61RkxDLfU4= +github.com/yaklabco/direnv/v2 v2.37.2-0.20260524202835-d4a632bddfe5 h1:mTM6am4L9HntIAHA0SRfX5RHAU/s7wbjRKGocvo4XnY= +github.com/yaklabco/direnv/v2 v2.37.2-0.20260524202835-d4a632bddfe5/go.mod h1:fc8HRAhQPQdPWpFjKxZ5NGgA3Dn4I71VGtIJVPZS5LM= go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc= go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= golang.org/x/exp v0.0.0-20260508232706-74f9aab9d74a h1:+3jdDGGB8NGb1Zktc737jlt3/A5f6UlwSzmvqUuufxw= golang.org/x/exp v0.0.0-20260508232706-74f9aab9d74a/go.mod h1:d2fgXJLVs4dYDHUk5lwMIfzRzSrWCfGZb0ZqeLa/Vcw= golang.org/x/mod v0.36.0 h1:JJjpVx6myfUsUdAzZuOSTTmRE0PfZeNWzzvKrP7amb4= golang.org/x/mod v0.36.0/go.mod h1:moc6ELqsWcOw5Ef3xVprK5ul/MvtVvkIXLziUOICjUQ= -golang.org/x/net v0.54.0 h1:2zJIZAxAHV/OHCDTCOHAYehQzLfSXuf/5SoL/Dv6w/w= -golang.org/x/net v0.54.0/go.mod h1:Sj4oj8jK6XmHpBZU/zWHw3BV3abl4Kvi+Ut7cQcY+cQ= +golang.org/x/net v0.55.0 h1:bcvxaJn3e1U6InsFWt1JUq1aSjnRxLzT2rtD2KfkDF8= +golang.org/x/net v0.55.0/go.mod h1:L5U2KuzuOe1lY7Z+aWVIKK6qEeJXnXV9yzGA+WCHJww= golang.org/x/sync v0.20.0 h1:e0PTpb7pjO8GAtTs2dQ6jYa5BWYlMuX047Dco/pItO4= golang.org/x/sync v0.20.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0= -golang.org/x/sys v0.44.0 h1:ildZl3J4uzeKP07r2F++Op7E9B29JRUy+a27EibtBTQ= -golang.org/x/sys v0.44.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= +golang.org/x/sys v0.45.0 h1:dO4czNzziLiiXplLQgBCEpCvXQ3dnkn0SdaZSYdQ+FY= +golang.org/x/sys v0.45.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= golang.org/x/term v0.43.0 h1:S4RLU2sB31O/NCl+zFN9Aru9A/Cq2aqKpTZJ6B+DwT4= golang.org/x/term v0.43.0/go.mod h1:lrhlHNdQJHO+1qVYiHfFKVuVioJIheAc3fBSMFYEIsk= golang.org/x/text v0.37.0 h1:Cqjiwd9eSg8e0QAkyCaQTNHFIIzWtidPahFWR83rTrc= diff --git a/stavefile.go b/stavefile.go index 2d3e674..c687ae9 100644 --- a/stavefile.go +++ b/stavefile.go @@ -102,7 +102,7 @@ func Init() { // Build builds artifacts via goreleaser snapshot build func Build() error { - st.Deps(Init) + st.Deps(Init, Clean) if err := sh.RunV("goreleaser", "check"); err != nil { return err @@ -113,6 +113,8 @@ func Build() error { // Release tags the next version and runs goreleaser release func Release() error { + st.Deps(Clean) + if err := releasePrepper(tagAndPush); err != nil { return err } @@ -123,6 +125,8 @@ func Release() error { // Snapshot is like Release except it runs locally and does not push a new tag; // useful for debugging the release process. func Snapshot() error { + st.Deps(Clean) + noopTaggingFunc := func(string) error { return nil } if err := releasePrepper(noopTaggingFunc); err != nil { return err