From 6dc98c08fd9d5c72792a67306a813fe349538676 Mon Sep 17 00:00:00 2001 From: Vlad Mencl Date: Thu, 3 Sep 2020 17:47:34 +1200 Subject: [PATCH] gem: Fix get_installed_versions: correctly parse "default" version. (#783) * Fix get_installed_versions: correctly parse "default" version. gem query output of bundler (default: 2.1.4, 1.17.2) Gets parsed as: ['default:', '1.17.2'] Fix this by skipping "default: " if present in the list of versions - by adding it as an optional part of the regex, grouped as a non-capturing group to keep the index of existing group. This now correctly parses the above input as ['2.1.4:', '1.17.2'] Fixes #782 * Fix gem get_installed_versions (cont): add changelog fragment * Update changelogs/fragments/783-fix-gem-installed-versions.yaml as per suggestion Co-authored-by: Felix Fontein Co-authored-by: Felix Fontein --- changelogs/fragments/783-fix-gem-installed-versions.yaml | 2 ++ plugins/modules/packaging/language/gem.py | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) create mode 100644 changelogs/fragments/783-fix-gem-installed-versions.yaml diff --git a/changelogs/fragments/783-fix-gem-installed-versions.yaml b/changelogs/fragments/783-fix-gem-installed-versions.yaml new file mode 100644 index 0000000000..5ad70f8295 --- /dev/null +++ b/changelogs/fragments/783-fix-gem-installed-versions.yaml @@ -0,0 +1,2 @@ +bugfixes: + - "gem - fix get_installed_versions: correctly parse ``default`` version (https://github.com/ansible-collections/community.general/pull/783)." diff --git a/plugins/modules/packaging/language/gem.py b/plugins/modules/packaging/language/gem.py index f686f74924..3d24039f9b 100644 --- a/plugins/modules/packaging/language/gem.py +++ b/plugins/modules/packaging/language/gem.py @@ -157,7 +157,7 @@ def get_installed_versions(module, remote=False): (rc, out, err) = module.run_command(cmd, environ_update=environ, check_rc=True) installed_versions = [] for line in out.splitlines(): - match = re.match(r"\S+\s+\((.+)\)", line) + match = re.match(r"\S+\s+\((?:default: )?(.+)\)", line) if match: versions = match.group(1) for version in versions.split(', '):