mirror of
https://github.com/thegeeklab/ansible-later.git
synced 2024-11-18 10:50:40 +00:00
70 lines
2.0 KiB
Python
70 lines
2.0 KiB
Python
"""Module containing the logic for our debugging logic."""
|
|
from __future__ import print_function
|
|
|
|
import json
|
|
import platform
|
|
|
|
import entrypoints
|
|
|
|
|
|
def print_information(
|
|
option, option_string, value, parser, option_manager=None
|
|
):
|
|
"""Print debugging information used in bug reports.
|
|
|
|
:param option:
|
|
The optparse Option instance.
|
|
:type option:
|
|
optparse.Option
|
|
:param str option_string:
|
|
The option name
|
|
:param value:
|
|
The value passed to the callback parsed from the command-line
|
|
:param parser:
|
|
The optparse OptionParser instance
|
|
:type parser:
|
|
optparse.OptionParser
|
|
:param option_manager:
|
|
The Flake8 OptionManager instance.
|
|
:type option_manager:
|
|
flake8.options.manager.OptionManager
|
|
"""
|
|
if not option_manager.registered_plugins:
|
|
# NOTE(sigmavirus24): Flake8 parses options twice. The first time, we
|
|
# will not have any registered plugins. We can skip this one and only
|
|
# take action on the second time we're called.
|
|
return
|
|
print(json.dumps(information(option_manager), indent=2, sort_keys=True))
|
|
raise SystemExit(False)
|
|
|
|
|
|
def information(option_manager):
|
|
"""Generate the information to be printed for the bug report."""
|
|
return {
|
|
"version": option_manager.version,
|
|
"plugins": plugins_from(option_manager),
|
|
"dependencies": dependencies(),
|
|
"platform": {
|
|
"python_implementation": platform.python_implementation(),
|
|
"python_version": platform.python_version(),
|
|
"system": platform.system(),
|
|
},
|
|
}
|
|
|
|
|
|
def plugins_from(option_manager):
|
|
"""Generate the list of plugins installed."""
|
|
return [
|
|
{
|
|
"plugin": plugin.name,
|
|
"version": plugin.version,
|
|
"is_local": plugin.local,
|
|
}
|
|
for plugin in sorted(option_manager.registered_plugins)
|
|
]
|
|
|
|
|
|
def dependencies():
|
|
"""Generate the list of dependencies we care about."""
|
|
return [{"dependency": "entrypoints", "version": entrypoints.__version__}]
|