Homebrew: Emit a useful error message if brew info reports a package tap is null. (#10013)

* Fix #10012.

Homebrew: Emit a useful error message if a package tap is null.  This can happen if an installed package is subsequently removed from the tap (e.g. it is withdrawn by homebrew).

* Added changelogs fragment for PR 10013

* Do not raise error when tap is null in package_detail
pylint: remove trailing whitespace

* Minor: Update plugins/modules/homebrew.py

Co-authored-by: Felix Fontein <felix@fontein.de>

* Minor: Update changelogs/fragments/10012-improve-error-handling-homebrew-missing-tap.yml

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>

* Update plugins/modules/homebrew.py

Co-authored-by: Felix Fontein <felix@fontein.de>

---------

Co-authored-by: Felix Fontein <felix@fontein.de>
Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
This commit is contained in:
brad2014 2025-04-21 12:35:25 +02:00 committed by GitHub
parent ce421dbd7d
commit 4b9373f694
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 10 additions and 3 deletions

View file

@ -399,10 +399,15 @@ class Homebrew(object):
name = package_detail["name"]
full_name = package_detail["full_name"]
tapped_name = package_detail["tap"] + "/" + name
# Issue https://github.com/ansible-collections/community.general/issues/9803:
# name can include the tap as a prefix, in order to disambiguate,
# e.g. casks from identically named formulae.
#
# Issue https://github.com/ansible-collections/community.general/issues/10012:
# package_detail["tap"] is None if package is no longer available.
tapped_name = [package_detail["tap"] + "/" + name] if package_detail["tap"] else []
aliases = package_detail.get("aliases", [])
package_names = set([name, full_name, tapped_name] + aliases)
package_names = set([name, full_name] + tapped_name + aliases)
# Finally, identify which of all those package names was the one supplied by the user.
package_names = package_names & set(self.packages)