diff --git a/dvc/command/version.py b/dvc/command/version.py index 078f1fdec1..7cf00c7516 100644 --- a/dvc/command/version.py +++ b/dvc/command/version.py @@ -18,7 +18,7 @@ from dvc.version import __version__ from dvc.exceptions import DvcException, NotDvcRepoError from dvc.system import System - +from dvc.utils.pkg import get_package_manager logger = logging.getLogger(__name__) @@ -31,17 +31,19 @@ def run(self): python_version = platform.python_version() platform_type = platform.platform() binary = is_binary() - + package_manager = get_package_manager() info = ( "DVC version: {dvc_version}\n" "Python version: {python_version}\n" "Platform: {platform_type}\n" "Binary: {binary}\n" + "Package manager: {package_manager}\n" ).format( dvc_version=dvc_version, python_version=python_version, platform_type=platform_type, binary=binary, + package_manager=package_manager, ) try: diff --git a/dvc/updater.py b/dvc/updater.py index 18625029f7..b6571de64d 100644 --- a/dvc/updater.py +++ b/dvc/updater.py @@ -9,7 +9,7 @@ from dvc import __version__ from dvc.lock import Lock, LockError -from dvc.utils import is_binary, boxify, env2bool +from dvc.utils import boxify, env2bool logger = logging.getLogger(__name__) @@ -143,49 +143,3 @@ def _get_update_instructions(self): package_manager = self._get_package_manager() return instructions[package_manager] - - def _get_linux(self): - import distro - - if not is_binary(): - return "pip" - - package_managers = { - "rhel": "yum", - "centos": "yum", - "fedora": "yum", - "amazon": "yum", - "opensuse": "yum", - "ubuntu": "apt", - "debian": "apt", - } - - return package_managers.get(distro.id()) - - def _get_darwin(self): - if not is_binary(): - if __file__.startswith("/usr/local/Cellar"): - return "formula" - else: - return "pip" - return None - - def _get_windows(self): - return None if is_binary() else "pip" - - def _get_package_manager(self): - import platform - from dvc.exceptions import DvcException - - m = { - "Windows": self._get_windows, - "Darwin": self._get_darwin, - "Linux": self._get_linux, - } - - system = platform.system() - func = m.get(system) - if func is None: - raise DvcException("not supported system '{}'".format(system)) - - return func() diff --git a/dvc/utils/pkg.py b/dvc/utils/pkg.py new file mode 100644 index 0000000000..a35bd73063 --- /dev/null +++ b/dvc/utils/pkg.py @@ -0,0 +1,51 @@ +from dvc.utils import is_binary + + +def get_linux(): + import distro + + if not is_binary(): + return "pip" + + package_managers = { + "rhel": "yum", + "centos": "yum", + "fedora": "yum", + "amazon": "yum", + "opensuse": "yum", + "ubuntu": "apt", + "debian": "apt", + } + + return package_managers.get(distro.id()) + + +def get_darwin(): + if not is_binary(): + if __file__.startswith("/usr/local/Cellar"): + return "formula" + else: + return "pip" + return None + + +def get_windows(): + return None if is_binary() else "pip" + + +def get_package_manager(): + import platform + from dvc.exceptions import DvcException + + m = { + "Windows": get_windows(), + "Darwin": get_darwin(), + "Linux": get_linux(), + } + + system = platform.system() + func = m.get(system) + if func is None: + raise DvcException("not supported system '{}'".format(system)) + + return func