mirror of
https://github.com/kellyjonbrazil/jc.git
synced 2025-07-15 01:24:29 +02:00
16
README.md
16
README.md
@ -144,6 +144,22 @@ The JSON output can be compact (default) or pretty formatted with the `-p` optio
|
|||||||
- `-q` quiet mode. Suppresses warning messages
|
- `-q` quiet mode. Suppresses warning messages
|
||||||
- `-r` raw output. Provides a more literal JSON output with all values as text and no additional sematic processing
|
- `-r` raw output. Provides a more literal JSON output with all values as text and no additional sematic processing
|
||||||
|
|
||||||
|
### Setting Custom Colors via Environment Variable
|
||||||
|
You can specify custom colors via the `JC_COLORS` environment variable. The `JC_COLORS` environment variable takes four comma separated string values in the following format:
|
||||||
|
```
|
||||||
|
JELLO_COLORS=<keyname_color>,<keyword_color>,<number_color>,<string_color>
|
||||||
|
```
|
||||||
|
Where colors are: `black`, `red`, `green`, `yellow`, `blue`, `magenta`, `cyan`, `gray`, `brightblack`, `brightred`, `brightgreen`, `brightyellow`, `brightblue`, `brightmagenta`, `brightcyan`, `white`, or `default`
|
||||||
|
|
||||||
|
For example, to set to the default colors:
|
||||||
|
```
|
||||||
|
JC_COLORS=blue,brightblack,magenta,green
|
||||||
|
```
|
||||||
|
or
|
||||||
|
```
|
||||||
|
JC_COLORS=default,default,default,default
|
||||||
|
```
|
||||||
|
|
||||||
## Contributions
|
## Contributions
|
||||||
Feel free to add/improve code or parsers! You can use the [`jc/parsers/foo.py`](https://github.com/kellyjonbrazil/jc/blob/master/jc/parsers/foo.py) parser as a template and submit your parser with a pull request.
|
Feel free to add/improve code or parsers! You can use the [`jc/parsers/foo.py`](https://github.com/kellyjonbrazil/jc/blob/master/jc/parsers/foo.py) parser as a template and submit your parser with a pull request.
|
||||||
|
|
||||||
|
@ -1,5 +1,8 @@
|
|||||||
jc changelog
|
jc changelog
|
||||||
|
|
||||||
|
20200412 v1.10.4
|
||||||
|
- Add color customization via JC_COLORS env variable
|
||||||
|
|
||||||
20200409 v1.10.3
|
20200409 v1.10.3
|
||||||
- Fix break on pipe error
|
- Fix break on pipe error
|
||||||
|
|
||||||
|
59
jc/cli.py
59
jc/cli.py
@ -18,7 +18,7 @@ import jc.utils
|
|||||||
|
|
||||||
|
|
||||||
class info():
|
class info():
|
||||||
version = '1.10.3'
|
version = '1.10.4'
|
||||||
description = 'jc cli output JSON conversion tool'
|
description = 'jc cli output JSON conversion tool'
|
||||||
author = 'Kelly Brazil'
|
author = 'Kelly Brazil'
|
||||||
author_email = 'kellyjonbrazil@gmail.com'
|
author_email = 'kellyjonbrazil@gmail.com'
|
||||||
@ -80,12 +80,52 @@ parsers = [
|
|||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
class JcStyle(Style):
|
def set_env_colors():
|
||||||
styles = {
|
"""
|
||||||
Name.Tag: 'bold ansiblue', # key names
|
Grab custom colors from JC_COLORS environment variable. JC_COLORS env variable takes 4 comma
|
||||||
Keyword: 'ansibrightblack', # true, false, null
|
separated string values and should be in the format of:
|
||||||
Number: 'ansimagenta', # int, float
|
|
||||||
String: 'ansigreen' # string
|
JC_COLORS=<keyname_color>,<keyword_color>,<number_color>,<string_color>
|
||||||
|
|
||||||
|
Where colors are: black, red, green, yellow, blue, magenta, cyan, gray, brightblack, brightred,
|
||||||
|
brightgreen, brightyellow, brightblue, brightmagenta, brightcyan, white, default
|
||||||
|
|
||||||
|
Default colors:
|
||||||
|
|
||||||
|
JC_COLORS=blue,brightblack,magenta,green
|
||||||
|
or
|
||||||
|
JC_COLORS=default,default,default,default
|
||||||
|
|
||||||
|
"""
|
||||||
|
env_colors = os.getenv('JC_COLORS')
|
||||||
|
input_error = False
|
||||||
|
|
||||||
|
if env_colors:
|
||||||
|
color_list = env_colors.split(',')
|
||||||
|
else:
|
||||||
|
input_error = True
|
||||||
|
|
||||||
|
if env_colors and len(color_list) != 4:
|
||||||
|
print('jc: Warning: could not parse JC_COLORS environment variable\n', file=sys.stderr)
|
||||||
|
input_error = True
|
||||||
|
|
||||||
|
if env_colors:
|
||||||
|
for color in color_list:
|
||||||
|
if color not in ['black', 'red', 'green', 'yellow', 'blue', 'magenta', 'cyan', 'gray', 'brightblack', 'brightred',
|
||||||
|
'brightgreen', 'brightyellow', 'brightblue', 'brightmagenta', 'brightcyan', 'white', 'default']:
|
||||||
|
print('jc: Warning: could not parse JC_COLORS environment variable\n', file=sys.stderr)
|
||||||
|
input_error = True
|
||||||
|
|
||||||
|
# if there is an issue with the env variable, just set all colors to default and move on
|
||||||
|
if input_error:
|
||||||
|
color_list = ['default', 'default', 'default', 'default']
|
||||||
|
|
||||||
|
# Try the color set in the JC_COLORS env variable first. If it is set to default, then fall back to default colors
|
||||||
|
return {
|
||||||
|
Name.Tag: f'bold ansi{color_list[0]}' if not color_list[0] == 'default' else f'bold ansiblue', # key names
|
||||||
|
Keyword: f'ansi{color_list[1]}' if not color_list[1] == 'default' else f'ansibrightblack', # true, false, null
|
||||||
|
Number: f'ansi{color_list[2]}' if not color_list[2] == 'default' else f'ansimagenta', # numbers
|
||||||
|
String: f'ansi{color_list[3]}' if not color_list[3] == 'default' else f'ansigreen' # strings
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -205,6 +245,11 @@ def helptext(message):
|
|||||||
|
|
||||||
|
|
||||||
def json_out(data, pretty=False, mono=False, piped_out=False):
|
def json_out(data, pretty=False, mono=False, piped_out=False):
|
||||||
|
# set colors
|
||||||
|
class JcStyle(Style):
|
||||||
|
styles = set_env_colors()
|
||||||
|
|
||||||
|
|
||||||
if not mono and not piped_out:
|
if not mono and not piped_out:
|
||||||
if pretty:
|
if pretty:
|
||||||
print(highlight(json.dumps(data, indent=2), JsonLexer(), Terminal256Formatter(style=JcStyle))[0:-1])
|
print(highlight(json.dumps(data, indent=2), JsonLexer(), Terminal256Formatter(style=JcStyle))[0:-1])
|
||||||
|
2
setup.py
2
setup.py
@ -5,7 +5,7 @@ with open('README.md', 'r') as f:
|
|||||||
|
|
||||||
setuptools.setup(
|
setuptools.setup(
|
||||||
name='jc',
|
name='jc',
|
||||||
version='1.10.3',
|
version='1.10.4',
|
||||||
author='Kelly Brazil',
|
author='Kelly Brazil',
|
||||||
author_email='kellyjonbrazil@gmail.com',
|
author_email='kellyjonbrazil@gmail.com',
|
||||||
description='This tool serializes the output of popular command line tools and filetypes to structured JSON output.',
|
description='This tool serializes the output of popular command line tools and filetypes to structured JSON output.',
|
||||||
|
Reference in New Issue
Block a user