diff --git a/dvc/cli.py b/dvc/cli.py index 55949d715..3450aced7 100644 --- a/dvc/cli.py +++ b/dvc/cli.py @@ -33,6 +33,7 @@ import dvc.command.daemon as daemon import dvc.command.commit as commit import dvc.command.tag as tag import dvc.command.diff as diff +import dvc.command.version as version from dvc.exceptions import DvcParserError @@ -65,6 +66,7 @@ COMMANDS = [ commit, tag, diff, + version, ] diff --git a/dvc/command/version.py b/dvc/command/version.py new file mode 100644 index 000000000..422be7472 --- /dev/null +++ b/dvc/command/version.py @@ -0,0 +1,41 @@ +from __future__ import unicode_literals + +import platform +import argparse +import logging + +from dvc.command.base import CmdBase, append_doc_link +from dvc.version import __version__ + + +logger = logging.getLogger(__name__) + + +class CmdVersion(CmdBase): + def run(self): + info = ( + "DVC version: {dvc_version}\n" + "Python version: {python_version}\n" + "Platform: {platform_type}" + ).format( + dvc_version=__version__, + python_version=platform.python_version(), + platform_type=platform.platform(), + ) + logger.info(info) + return 0 + + +def add_parser(subparsers, parent_parser): + VERSION_HELP = ( + "Output the system/environment information along with the DVC version" + ) + + version_parser = subparsers.add_parser( + "version", + parents=[parent_parser], + description=append_doc_link(VERSION_HELP, "version"), + help=VERSION_HELP, + formatter_class=argparse.RawDescriptionHelpFormatter, + ) + version_parser.set_defaults(func=CmdVersion) diff --git a/tests/unit/command/test_version.py b/tests/unit/command/test_version.py new file mode 100644 index 000000000..42adda4c8 --- /dev/null +++ b/tests/unit/command/test_version.py @@ -0,0 +1,19 @@ +import re + +from dvc.command.version import CmdVersion +from dvc.cli import parse_args + + +def test_run(): + cmd = CmdVersion(parse_args(["version"])) + ret = cmd.run_cmd() + assert ret == 0 + + +def test_info(caplog): + cmd = CmdVersion(parse_args(["version"])) + cmd.run() + + assert re.search(re.compile(r"DVC version: \d+\.\d+\.\d+"), caplog.text) + assert re.search(re.compile(r"Python version: \d\.\d\.\d"), caplog.text) + assert re.search(re.compile(r"Platform: .*"), caplog.text)