list: add --show-json option (#5888)

* list: add --show-json option

* list: add test for --show-json
This commit is contained in:
Paweł Redzyński
2021-04-30 11:40:44 +02:00
committed by GitHub
parent 102817e53a
commit d509d77193
2 changed files with 26 additions and 1 deletions
+8 -1
View File
@@ -34,7 +34,11 @@ class CmdList(CmdBaseNoRepo):
recursive=self.args.recursive,
dvc_only=self.args.dvc_only,
)
if entries:
if self.args.show_json:
import json
logger.info(json.dumps(entries))
elif entries:
entries = _prettify(entries, sys.stdout.isatty())
logger.info("\n".join(entries))
return 0
@@ -65,6 +69,9 @@ def add_parser(subparsers, parent_parser):
list_parser.add_argument(
"--dvc-only", action="store_true", help="Show only DVC outputs."
)
list_parser.add_argument(
"--show-json", action="store_true", help="Show output in JSON format."
)
list_parser.add_argument(
"--rev",
nargs="?",
+18
View File
@@ -1,3 +1,6 @@
import json
import logging
from dvc.cli import parse_args
from dvc.command.ls import CmdList
@@ -52,3 +55,18 @@ def test_list_outputs_only(mocker):
m.assert_called_once_with(
url, None, recursive=False, rev=None, dvc_only=True
)
def test_show_json(mocker, caplog):
cli_args = parse_args(["list", "local_dir", "--show-json"])
assert cli_args.func == CmdList
cmd = cli_args.func(cli_args)
result = [{"key": "val"}]
mocker.patch("dvc.repo.Repo.ls", return_value=result)
with caplog.at_level(logging.INFO, "dvc"):
assert cmd.run() == 0
assert json.dumps(result) in caplog.messages