mirror of
https://github.com/ansible-collections/community.general.git
synced 2024-09-14 20:13:21 +02:00
[PR #6129/df34569f backport][stable-6] Updating yarn.list to not fail when when warnings are emitted (#6189)
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>
(cherry picked from commit df34569fad
)
Co-authored-by: John Daly <john.daly2@gmail.com>
This commit is contained in:
parent
1676b09573
commit
48b20894b3
2 changed files with 13 additions and 5 deletions
2
changelogs/fragments/6127-yarn-ignore-warnings.yml
Normal file
2
changelogs/fragments/6127-yarn-ignore-warnings.yml
Normal 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).
|
|
@ -226,6 +226,15 @@ class Yarn(object):
|
||||||
|
|
||||||
return None, None
|
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):
|
def list(self):
|
||||||
cmd = ['list', '--depth=0', '--json']
|
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.
|
# 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)
|
result, error = self._exec(cmd, run_in_check_mode=True, check_rc=False, unsupported_with_global=True)
|
||||||
|
|
||||||
if error:
|
self._process_yarn_error(error)
|
||||||
self.module.fail_json(msg=error)
|
|
||||||
|
|
||||||
for json_line in result.strip().split('\n'):
|
for json_line in result.strip().split('\n'):
|
||||||
data = json.loads(json_line)
|
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)
|
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
|
# the package.json in the global dir is missing a license field, so warnings are expected on stderr
|
||||||
for line in err.splitlines():
|
self._process_yarn_error(err)
|
||||||
if json.loads(line)['type'] == 'error':
|
|
||||||
self.module.fail_json(msg=err)
|
|
||||||
|
|
||||||
if not cmd_result:
|
if not cmd_result:
|
||||||
return outdated
|
return outdated
|
||||||
|
|
Loading…
Reference in a new issue