Skip to content

Commit

Permalink
cmd/pin: Update pinned formula messaging
Browse files Browse the repository at this point in the history
The hope is that this will be clearer and less annoying for users.

A user came to us a couple weeks ago stating that it was confusing
that the `brew upgrade` command printed an error when a pinned
formula had a new version available and didn't get upgraded.

This PR changes that message to a warning from an error. While looking
into this we found that there is another message that gets printed
when a package dependency doesn't get upgraded because it is pinned
and that got turned into a warning from a normal message. Honestly,
that should be more worrying for the user anyway; it could lead to
a program not working correctly in the worst case.

I also added a message to the `brew pin` command warning about
potential unintended behavior if a dependency gets pinned and another
package requires a newer version of it.

Lastly, I added a commented out deprecation notice for the
`brew upgrade --ignore-pinned` command since it's now the default.
  • Loading branch information
apainintheneck committed Dec 6, 2023
1 parent ab6a7ed commit bb36203
Show file tree
Hide file tree
Showing 5 changed files with 15 additions and 3 deletions.
3 changes: 3 additions & 0 deletions Library/Homebrew/cmd/pin.rb
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,9 @@ def pin_args
description <<~EOS
Pin the specified <formula>, preventing them from being upgraded when
issuing the `brew upgrade` <formula> command. See also `unpin`.
Note: Other packages which depend on newer versions of a pinned formula
might not install or run correctly.
EOS

named_args :installed_formula, min: 1
Expand Down
7 changes: 5 additions & 2 deletions Library/Homebrew/cmd/upgrade.rb
Original file line number Diff line number Diff line change
Expand Up @@ -126,6 +126,9 @@ def upgrade_args
def upgrade
args = upgrade_args.parse

# Deprecated since this is now the default behavior.
# odeprecated "`brew upgrade --ignore-pinned`" if args.ignore_pinned?

formulae, casks = args.named.to_resolved_formulae_to_casks
# If one or more formulae are specified, but no casks were
# specified, we want to make note of that so we don't
Expand Down Expand Up @@ -191,8 +194,8 @@ def upgrade_outdated_formulae(formulae, args:)
end
end

if !pinned.empty? && !args.ignore_pinned?
ofail "Not upgrading #{pinned.count} pinned #{Utils.pluralize("package", pinned.count)}:"
unless pinned.empty?
opoo "Not upgrading #{pinned.count} pinned #{Utils.pluralize("package", pinned.count)}:"
puts pinned.map { |f| "#{f.full_specified_name} #{f.pkg_version}" } * ", "
end

Expand Down
2 changes: 1 addition & 1 deletion Library/Homebrew/upgrade.rb
Original file line number Diff line number Diff line change
Expand Up @@ -337,7 +337,7 @@ def check_installed_dependents(

if pinned_dependents.present?
plural = Utils.pluralize("dependent", pinned_dependents.count)
ohai "Not upgrading #{pinned_dependents.count} pinned #{plural}:"
opoo "Not upgrading #{pinned_dependents.count} pinned #{plural}:"

Check warning on line 340 in Library/Homebrew/upgrade.rb

View check run for this annotation

Codecov / codecov/patch

Library/Homebrew/upgrade.rb#L340

Added line #L340 was not covered by tests
puts(pinned_dependents.map do |f|
"#{f.full_specified_name} #{f.pkg_version}"
end.join(", "))
Expand Down
3 changes: 3 additions & 0 deletions docs/Manpage.md
Original file line number Diff line number Diff line change
Expand Up @@ -541,6 +541,9 @@ information is displayed in interactive shells, and suppressed otherwise.
Pin the specified *`formula`*, preventing them from being upgraded when
issuing the `brew upgrade` *`formula`* command. See also `unpin`.

Note: Other packages which depend on newer versions of a pinned formula
might not install or run correctly.

### `postinstall`, `post_install` *`installed_formula`* [...]

Rerun the post-install steps for *`formula`*.
Expand Down
3 changes: 3 additions & 0 deletions manpages/brew.1
Original file line number Diff line number Diff line change
Expand Up @@ -758,6 +758,9 @@ Also include outdated casks including those with \fBauto_updates true\fR\.
.SS "\fBpin\fR \fIinstalled_formula\fR [\.\.\.]"
Pin the specified \fIformula\fR, preventing them from being upgraded when issuing the \fBbrew upgrade\fR \fIformula\fR command\. See also \fBunpin\fR\.
.
.P
Note: Other packages which depend on newer versions of a pinned formula might not install or run correctly\.
.
.SS "\fBpostinstall\fR, \fBpost_install\fR \fIinstalled_formula\fR [\.\.\.]"
Rerun the post\-install steps for \fIformula\fR\.
.
Expand Down

0 comments on commit bb36203

Please sign in to comment.