mirror of
https://github.com/kellyjonbrazil/jc.git
synced 2025-07-09 01:05:53 +02:00
add version option (-v) and copyright information. add 'ensure_ascii=False' to json dumps to properly show UTF-8 copyright character
This commit is contained in:
@ -936,4 +936,6 @@ cat istio.yaml | jc --yaml -p
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
```
|
```
|
||||||
|
|
||||||
|
© 2019-2021 Kelly Brazil
|
||||||
|
35
jc/cli.py
35
jc/cli.py
@ -31,6 +31,7 @@ class info():
|
|||||||
description = 'JSON CLI output utility'
|
description = 'JSON CLI output utility'
|
||||||
author = 'Kelly Brazil'
|
author = 'Kelly Brazil'
|
||||||
author_email = 'kellyjonbrazil@gmail.com'
|
author_email = 'kellyjonbrazil@gmail.com'
|
||||||
|
copyright = '© 2019-2021 Kelly Brazil'
|
||||||
|
|
||||||
|
|
||||||
__version__ = info.version
|
__version__ = info.version
|
||||||
@ -286,6 +287,7 @@ def about_jc():
|
|||||||
'description': info.description,
|
'description': info.description,
|
||||||
'author': info.author,
|
'author': info.author,
|
||||||
'author_email': info.author_email,
|
'author_email': info.author_email,
|
||||||
|
'copyright': info.copyright,
|
||||||
'parser_count': len(parser_list),
|
'parser_count': len(parser_list),
|
||||||
'parsers': parser_list
|
'parsers': parser_list
|
||||||
}
|
}
|
||||||
@ -325,6 +327,17 @@ def helptext():
|
|||||||
return textwrap.dedent(helptext_string)
|
return textwrap.dedent(helptext_string)
|
||||||
|
|
||||||
|
|
||||||
|
def versiontext():
|
||||||
|
"""Return the version text"""
|
||||||
|
|
||||||
|
versiontext_string = f'''
|
||||||
|
jc version {info.version}
|
||||||
|
© 2019-2021 Kelly Brazil
|
||||||
|
'''
|
||||||
|
|
||||||
|
return textwrap.dedent(versiontext_string)
|
||||||
|
|
||||||
|
|
||||||
def json_out(data, pretty=False, env_colors=None, mono=False, piped_out=False):
|
def json_out(data, pretty=False, env_colors=None, mono=False, piped_out=False):
|
||||||
"""Return a JSON formatted string. String may include color codes or be pretty printed."""
|
"""Return a JSON formatted string. String may include color codes or be pretty printed."""
|
||||||
if not mono and not piped_out:
|
if not mono and not piped_out:
|
||||||
@ -333,14 +346,14 @@ def json_out(data, pretty=False, env_colors=None, mono=False, piped_out=False):
|
|||||||
styles = set_env_colors(env_colors)
|
styles = set_env_colors(env_colors)
|
||||||
|
|
||||||
if pretty:
|
if pretty:
|
||||||
return str(highlight(json.dumps(data, indent=2), JsonLexer(), Terminal256Formatter(style=JcStyle))[0:-1])
|
return str(highlight(json.dumps(data, indent=2, ensure_ascii=False), JsonLexer(), Terminal256Formatter(style=JcStyle))[0:-1])
|
||||||
else:
|
else:
|
||||||
return str(highlight(json.dumps(data), JsonLexer(), Terminal256Formatter(style=JcStyle))[0:-1])
|
return str(highlight(json.dumps(data, ensure_ascii=False), JsonLexer(), Terminal256Formatter(style=JcStyle))[0:-1])
|
||||||
else:
|
else:
|
||||||
if pretty:
|
if pretty:
|
||||||
return json.dumps(data, indent=2)
|
return json.dumps(data, indent=2, ensure_ascii=False)
|
||||||
else:
|
else:
|
||||||
return json.dumps(data)
|
return json.dumps(data, ensure_ascii=False)
|
||||||
|
|
||||||
|
|
||||||
def generate_magic_command(args):
|
def generate_magic_command(args):
|
||||||
@ -436,6 +449,7 @@ def main():
|
|||||||
if opt.startswith('-') and not opt.startswith('--'):
|
if opt.startswith('-') and not opt.startswith('--'):
|
||||||
options.extend(opt[1:])
|
options.extend(opt[1:])
|
||||||
|
|
||||||
|
about = 'a' in options
|
||||||
debug = 'd' in options
|
debug = 'd' in options
|
||||||
verbose_debug = True if options.count('d') > 1 else False
|
verbose_debug = True if options.count('d') > 1 else False
|
||||||
mono = 'm' in options
|
mono = 'm' in options
|
||||||
@ -443,22 +457,27 @@ def main():
|
|||||||
pretty = 'p' in options
|
pretty = 'p' in options
|
||||||
quiet = 'q' in options
|
quiet = 'q' in options
|
||||||
raw = 'r' in options
|
raw = 'r' in options
|
||||||
|
version_info = 'v' in options
|
||||||
|
|
||||||
if not pygments_installed:
|
if not pygments_installed:
|
||||||
mono = True
|
mono = True
|
||||||
|
|
||||||
|
if about:
|
||||||
|
print(json_out(about_jc(), pretty=pretty, env_colors=jc_colors, mono=mono, piped_out=piped_output()))
|
||||||
|
sys.exit(0)
|
||||||
|
|
||||||
if help_me:
|
if help_me:
|
||||||
print(helptext())
|
print(helptext())
|
||||||
sys.exit(0)
|
sys.exit(0)
|
||||||
|
|
||||||
|
if version_info:
|
||||||
|
print(versiontext())
|
||||||
|
sys.exit(0)
|
||||||
|
|
||||||
if verbose_debug:
|
if verbose_debug:
|
||||||
import jc.tracebackplus
|
import jc.tracebackplus
|
||||||
jc.tracebackplus.enable(context=11)
|
jc.tracebackplus.enable(context=11)
|
||||||
|
|
||||||
if 'a' in options:
|
|
||||||
print(json_out(about_jc(), pretty=pretty, env_colors=jc_colors, mono=mono, piped_out=piped_output()))
|
|
||||||
sys.exit(0)
|
|
||||||
|
|
||||||
if sys.stdin.isatty():
|
if sys.stdin.isatty():
|
||||||
jc.utils.error_message('missing piped data')
|
jc.utils.error_message('missing piped data')
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
Reference in New Issue
Block a user