diff --git a/requirements.txt b/requirements.txt index 9086f22e2da..3daa4695ddd 100644 --- a/requirements.txt +++ b/requirements.txt @@ -6,6 +6,7 @@ colorama==0.3.7 jmespath mock==1.3.0 pip +pygments==2.1.3 pylint==1.5.4 pyyaml==3.11 requests==2.9.1 diff --git a/setup.py b/setup.py index e16c24b5269..1eac18b9a11 100644 --- a/setup.py +++ b/setup.py @@ -62,6 +62,7 @@ 'msrest>=0.4.0', 'msrestazure>=0.4.0', 'pip', + 'pygments', 'pyyaml', 'requests', 'six', diff --git a/src/azure/cli/_output.py b/src/azure/cli/_output.py index 411e30177eb..3851e993eda 100644 --- a/src/azure/cli/_output.py +++ b/src/azure/cli/_output.py @@ -34,6 +34,10 @@ def format_json(obj): return json.dumps(input_dict, indent=2, sort_keys=True, cls=ComplexEncoder, separators=(',', ': ')) + '\n' +def format_json_color(obj): + from pygments import highlight, lexers, formatters + return highlight(format_json(obj), lexers.JsonLexer(), formatters.TerminalFormatter()) # pylint: disable=no-member + def format_table(obj): result = obj.result try: @@ -90,6 +94,7 @@ class OutputProducer(object): #pylint: disable=too-few-public-methods format_dict = { 'json': format_json, + 'jsonc': format_json_color, 'table': format_table, 'text': format_text, 'list': format_list, diff --git a/src/azure/cli/application.py b/src/azure/cli/application.py index 9478e0a2bf2..83d7d1e8ce9 100644 --- a/src/azure/cli/application.py +++ b/src/azure/cli/application.py @@ -165,7 +165,7 @@ def _register_builtin_arguments(**kwargs): global_group = kwargs['global_group'] global_group.add_argument('--subscription', dest='_subscription_id', help=argparse.SUPPRESS) global_group.add_argument('--output', '-o', dest='_output_format', - choices=['json', 'tsv', 'list', 'table'], + choices=['json', 'tsv', 'list', 'table', 'jsonc'], default='json', help='Output format', type=str.lower)