1
0
Fork 0
mirror of https://github.com/ansible-collections/community.general.git synced 2024-09-14 20:13:21 +02:00

Updating yarn.list to not fail when when warnings are emitted (#6129)

* Updating yarn.list to not fail when when warnings are emitted

* Adding changelog fragment

* Adding _process_yarn_error function

* - Adding back changes to the changelog fragment
- Fixing formatting

* Fix trailing whitespace

* Update plugins/modules/yarn.py

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

---------

Co-authored-by: Felix Fontein <felix@fontein.de>
This commit is contained in:
John Daly 2023-03-14 15:00:23 -07:00 committed by GitHub
parent e939cd07ef
commit df34569fad
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 13 additions and 5 deletions

View file

@ -0,0 +1,2 @@
bugfixes:
- yarn - fixes bug where yarn module tasks would fail when warnings were emitted from Yarn. The ``yarn.list`` method was not filtering out warnings (https://github.com/ansible-collections/community.general/issues/6127).

View file

@ -226,6 +226,15 @@ class Yarn(object):
return None, None
def _process_yarn_error(self, err):
try:
# We need to filter for errors, since Yarn warnings are included in stderr
for line in err.splitlines():
if json.loads(line)['type'] == 'error':
self.module.fail_json(msg=err)
except Exception:
self.module.fail_json(msg="Unexpected stderr output from Yarn: %s" % err, stderr=err)
def list(self):
cmd = ['list', '--depth=0', '--json']
@ -240,8 +249,7 @@ class Yarn(object):
# because it only only lists binaries, but `yarn global add` can install libraries too.
result, error = self._exec(cmd, run_in_check_mode=True, check_rc=False, unsupported_with_global=True)
if error:
self.module.fail_json(msg=error)
self._process_yarn_error(error)
for json_line in result.strip().split('\n'):
data = json.loads(json_line)
@ -279,9 +287,7 @@ class Yarn(object):
cmd_result, err = self._exec(['outdated', '--json'], True, False, unsupported_with_global=True)
# the package.json in the global dir is missing a license field, so warnings are expected on stderr
for line in err.splitlines():
if json.loads(line)['type'] == 'error':
self.module.fail_json(msg=err)
self._process_yarn_error(err)
if not cmd_result:
return outdated