From 74c096b00c8c2076544d8f83fd9d782ed661ac8b Mon Sep 17 00:00:00 2001 From: Alexei Znamensky <103110+russoz@users.noreply.github.com> Date: Fri, 17 Apr 2026 18:42:00 +1200 Subject: [PATCH] homebrew_cask: handle placeholder version from brew --version (#11849) * homebrew_cask: handle placeholder version from brew --version When brew is run as the wrong user, git repositories may be owned by a different user, causing brew --version to output a placeholder like "Homebrew >= 4.3.0 (shallow or no git repository)" instead of the real version. The parsed version would then be lower than the 2.6.0 threshold, causing _brew_cask_command_is_deprecated() to return False and the module to use the disabled "brew cask" command syntax. Detect the ">=" prefix in the parsed version and treat it as a modern installation. Fixes #4708 Co-Authored-By: Claude Sonnet 4.6 * homebrew_cask: add changelog fragment for #11849 Co-Authored-By: Claude Sonnet 4.6 --------- Co-authored-by: Claude Sonnet 4.6 --- changelogs/fragments/11849-homebrew-cask-brew-version.yml | 4 ++++ plugins/modules/homebrew_cask.py | 8 ++++++-- 2 files changed, 10 insertions(+), 2 deletions(-) create mode 100644 changelogs/fragments/11849-homebrew-cask-brew-version.yml diff --git a/changelogs/fragments/11849-homebrew-cask-brew-version.yml b/changelogs/fragments/11849-homebrew-cask-brew-version.yml new file mode 100644 index 0000000000..6d17b6cab6 --- /dev/null +++ b/changelogs/fragments/11849-homebrew-cask-brew-version.yml @@ -0,0 +1,4 @@ +bugfixes: + - homebrew_cask - fix failure when ``brew --version`` returns a placeholder version string + (https://github.com/ansible-collections/community.general/issues/4708, + https://github.com/ansible-collections/community.general/pull/11849). diff --git a/plugins/modules/homebrew_cask.py b/plugins/modules/homebrew_cask.py index 7729c8c1bd..d85fce61bd 100644 --- a/plugins/modules/homebrew_cask.py +++ b/plugins/modules/homebrew_cask.py @@ -438,14 +438,18 @@ class HomebrewCask: return self.brew_version cmd = [self.brew_path, "--version"] - dummy, out, dummy = self.module.run_command(cmd, check_rc=True) pattern = r"Homebrew (.*)(\d+\.\d+\.\d+)(-dirty)?" rematch = re.search(pattern, out) if not rematch: self.module.fail_json(msg="Failed to match regex to get brew version", stdout=out) - self.brew_version = rematch.groups()[1] + + prefix, version, dummy = rematch.groups() + if ">=" in prefix: + version = "99.0.0" + + self.brew_version = version return self.brew_version def _brew_cask_command_is_deprecated(self):