Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

dev-cmd/livecheck: Skip autobumped formulae #18984

Draft
wants to merge 3 commits into
base: master
Choose a base branch
from
Draft
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 25 additions & 1 deletion Library/Homebrew/dev-cmd/livecheck.rb
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
Check for newer versions of formulae and/or casks from upstream.
If no formula or cask argument is passed, the list of formulae and
casks to check is taken from `HOMEBREW_LIVECHECK_WATCHLIST` or
`~/.homebrew/livecheck_watchlist.txt`.
`~/.homebrew/livecheck_watchlist.txt`, excluding autobumped formulae.
Copy link
Member

@samford samford Dec 22, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If we add a way to disable this filtering behavior, this statement may not always be true. It may be better to simply leave out this added language (i.e., overarching assumptions about what livecheck will/won't check apply here).

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
`~/.homebrew/livecheck_watchlist.txt`, excluding autobumped formulae.
`~/.homebrew/livecheck_watchlist.txt`.

EOS
switch "--full-name",
description: "Print formulae and casks with fully-qualified names."
Expand Down Expand Up @@ -90,6 +90,20 @@
end
end

# Skip packages that are autobumped by BrewTestBot, if there are any.
if autobump_core_path.exist? && autobump_cask_path.exist?
autobump_core = File.read(autobump_core_path).lines.map(&:strip)
autobump_cask = File.read(autobump_cask_path).lines.map(&:strip)

Check warning on line 96 in Library/Homebrew/dev-cmd/livecheck.rb

View check run for this annotation

Codecov / codecov/patch

Library/Homebrew/dev-cmd/livecheck.rb#L96

Added line #L96 was not covered by tests
Comment on lines +95 to +96
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
autobump_core = File.read(autobump_core_path).lines.map(&:strip)
autobump_cask = File.read(autobump_cask_path).lines.map(&:strip)
autobump_core = autobump_core_path.read.lines.map(&:strip)
autobump_cask = autobump_cask_path.read.lines.map(&:strip)

or .readlines may make sense


formulae_and_casks_to_check = formulae_and_casks_to_check.reject do |formula_or_cask|

Check warning on line 98 in Library/Homebrew/dev-cmd/livecheck.rb

View check run for this annotation

Codecov / codecov/patch

Library/Homebrew/dev-cmd/livecheck.rb#L98

Added line #L98 was not covered by tests
name = formula_or_cask.respond_to?(:token) ? formula_or_cask.token : formula_or_cask.name
if (autobump_core + autobump_cask).include?(name)
Copy link
Member

@samford samford Dec 22, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think this logic will work as intended if a formula and cask both share the same name and the formula/cask is only in one of the autobump lists. For example, if the cask is in its autobump list but the formula isn't, the formula would still be skipped like the cask. Instead, we should only be checking the autobump file from the formula_or_cask tap.

I could be wrong but it may be technically possible for a tap other than core/cask to have an autobump.txt file and it seems like we would want to respect that in the same way. Either way, we could take a more generic approach instead of special-casing first-party taps. You may be able to borrow some ideas from Livecheck::load_other_tap_strategies (omitting the logic to skip first-party taps, of course).

The basic idea is to identify the taps that are in use for formulae_and_casks_to_check and then gather the autobump files, mapping them to the tap (as before, only doing this once before filtering packages).

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah, thanks for reminding me of packages with the same name in both core and cask!

odebug "Skipping #{name} as it is autobumped."
true

Check warning on line 102 in Library/Homebrew/dev-cmd/livecheck.rb

View check run for this annotation

Codecov / codecov/patch

Library/Homebrew/dev-cmd/livecheck.rb#L102

Added line #L102 was not covered by tests
end
end
end

formulae_and_casks_to_check = formulae_and_casks_to_check.sort_by do |formula_or_cask|
formula_or_cask.respond_to?(:token) ? formula_or_cask.token : formula_or_cask.name
end
Expand Down Expand Up @@ -117,6 +131,16 @@
def watchlist_path
@watchlist_path ||= T.let(File.expand_path(Homebrew::EnvConfig.livecheck_watchlist), T.nilable(String))
end

sig { returns(Pathname) }
def autobump_core_path
@autobump_core_path ||= T.let(Tap.fetch("homebrew/core").path/".github/autobump.txt", T.nilable(Pathname))
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
@autobump_core_path ||= T.let(Tap.fetch("homebrew/core").path/".github/autobump.txt", T.nilable(Pathname))
@autobump_core_path ||= T.let(Tap.fetch("homebrew/core").path/".github/autobump.txt", Pathname)

maybe?

end

sig { returns(Pathname) }
def autobump_cask_path
@autobump_cask_path ||= T.let(Tap.fetch("homebrew/cask").path/".github/autobump.txt", T.nilable(Pathname))

Check warning on line 142 in Library/Homebrew/dev-cmd/livecheck.rb

View check run for this annotation

Codecov / codecov/patch

Library/Homebrew/dev-cmd/livecheck.rb#L142

Added line #L142 was not covered by tests
end
end
end
end
Loading