Add --list-deps command with Pykka adapter
This commit is contained in:
parent
2262bf91d5
commit
5fcc4e67aa
@ -22,6 +22,7 @@ from mopidy import (get_version, settings, OptionalDependencyError,
|
|||||||
SettingsError, DATA_PATH, SETTINGS_PATH, SETTINGS_FILE)
|
SettingsError, DATA_PATH, SETTINGS_PATH, SETTINGS_FILE)
|
||||||
from mopidy.gstreamer import GStreamer
|
from mopidy.gstreamer import GStreamer
|
||||||
from mopidy.utils import get_class
|
from mopidy.utils import get_class
|
||||||
|
from mopidy.utils.deps import list_deps_optparse_callback
|
||||||
from mopidy.utils.log import setup_logging
|
from mopidy.utils.log import setup_logging
|
||||||
from mopidy.utils.path import get_or_create_folder, get_or_create_file
|
from mopidy.utils.path import get_or_create_folder, get_or_create_file
|
||||||
from mopidy.utils.process import (exit_handler, stop_remaining_actors,
|
from mopidy.utils.process import (exit_handler, stop_remaining_actors,
|
||||||
@ -77,6 +78,9 @@ def parse_options():
|
|||||||
parser.add_option('--list-settings',
|
parser.add_option('--list-settings',
|
||||||
action='callback', callback=list_settings_optparse_callback,
|
action='callback', callback=list_settings_optparse_callback,
|
||||||
help='list current settings')
|
help='list current settings')
|
||||||
|
parser.add_option('--list-deps',
|
||||||
|
action='callback', callback=list_deps_optparse_callback,
|
||||||
|
help='list dependencies and their versions')
|
||||||
return parser.parse_args(args=mopidy_args)[0]
|
return parser.parse_args(args=mopidy_args)[0]
|
||||||
|
|
||||||
def check_old_folders():
|
def check_old_folders():
|
||||||
|
|||||||
43
mopidy/utils/deps.py
Normal file
43
mopidy/utils/deps.py
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
import sys
|
||||||
|
|
||||||
|
import pykka
|
||||||
|
|
||||||
|
|
||||||
|
def list_deps_optparse_callback(*args):
|
||||||
|
"""
|
||||||
|
Prints a list of all dependencies.
|
||||||
|
|
||||||
|
Called by optparse when Mopidy is run with the :option:`--list-deps`
|
||||||
|
option.
|
||||||
|
"""
|
||||||
|
print format_dependency_list()
|
||||||
|
sys.exit(0)
|
||||||
|
|
||||||
|
|
||||||
|
def format_dependency_list(adapters=None):
|
||||||
|
if adapters is None:
|
||||||
|
adapters = [
|
||||||
|
pykka_info,
|
||||||
|
]
|
||||||
|
|
||||||
|
lines = []
|
||||||
|
for adapter in adapters:
|
||||||
|
dep_info = adapter()
|
||||||
|
lines.append('%(name)s: %(version)s' % dep_info)
|
||||||
|
if 'path' in dep_info:
|
||||||
|
lines.append(' Imported from: %(path)s' % dep_info)
|
||||||
|
return '\n'.join(lines)
|
||||||
|
|
||||||
|
|
||||||
|
def pykka_info():
|
||||||
|
if hasattr(pykka, '__version__'):
|
||||||
|
# Pykka >= 0.14
|
||||||
|
version = pykka.__version__
|
||||||
|
else:
|
||||||
|
# Pykka < 0.14
|
||||||
|
version = pykka.get_version()
|
||||||
|
return {
|
||||||
|
'name': 'Pykka',
|
||||||
|
'version': version,
|
||||||
|
'path': pykka.__file__,
|
||||||
|
}
|
||||||
27
tests/utils/deps_test.py
Normal file
27
tests/utils/deps_test.py
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
import pykka
|
||||||
|
|
||||||
|
from mopidy.utils import deps
|
||||||
|
|
||||||
|
from tests import unittest
|
||||||
|
|
||||||
|
|
||||||
|
class DepsTest(unittest.TestCase):
|
||||||
|
def test_format_dependency_list(self):
|
||||||
|
adapters = [
|
||||||
|
lambda: dict(name='Python', version='FooPython 2.7.3'),
|
||||||
|
lambda: dict(name='Platform', version='Loonix 4.0.1'),
|
||||||
|
lambda: dict(name='Pykka', version='0.1337', path='/foo/bar/baz')
|
||||||
|
]
|
||||||
|
|
||||||
|
result = deps.format_dependency_list(adapters)
|
||||||
|
|
||||||
|
self.assertIn('Python: FooPython 2.7.3', result)
|
||||||
|
self.assertIn('Platform: Loonix 4.0.1', result)
|
||||||
|
self.assertIn('Imported from: /foo/bar/baz', result)
|
||||||
|
|
||||||
|
def test_pykka_info(self):
|
||||||
|
result = deps.pykka_info()
|
||||||
|
|
||||||
|
self.assertEquals('Pykka', result['name'])
|
||||||
|
self.assertEquals(pykka.__version__, result['version'])
|
||||||
|
self.assertIn('pykka', result['path'])
|
||||||
Loading…
Reference in New Issue
Block a user