diff --git a/changelogs/fragments/10012-improve-error-handling-homebrew-missing-tap.yml b/changelogs/fragments/10012-improve-error-handling-homebrew-missing-tap.yml new file mode 100644 index 0000000000..443be8358c --- /dev/null +++ b/changelogs/fragments/10012-improve-error-handling-homebrew-missing-tap.yml @@ -0,0 +1,2 @@ +bugfixes: + - homebrew - emit a useful error message if ``brew info`` reports a package tap is ``null`` (https://github.com/ansible-collections/community.general/pull/10013, https://github.com/ansible-collections/community.general/issues/10012). diff --git a/plugins/modules/homebrew.py b/plugins/modules/homebrew.py index bdc6f65724..25d4fc37e2 100644 --- a/plugins/modules/homebrew.py +++ b/plugins/modules/homebrew.py @@ -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)