mirror of
https://github.com/kellyjonbrazil/jc.git
synced 2025-06-19 00:17:51 +02:00
rename jc.py to cli.py
This commit is contained in:
139
jc/cli.py
Normal file
139
jc/cli.py
Normal file
@ -0,0 +1,139 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
"""jc - JSON CLI output utility
|
||||||
|
|
||||||
|
JC cli module
|
||||||
|
"""
|
||||||
|
import sys
|
||||||
|
import textwrap
|
||||||
|
import signal
|
||||||
|
import json
|
||||||
|
import jc.parsers.arp
|
||||||
|
import jc.parsers.df
|
||||||
|
import jc.parsers.dig
|
||||||
|
import jc.parsers.env
|
||||||
|
import jc.parsers.free
|
||||||
|
import jc.parsers.history
|
||||||
|
import jc.parsers.ifconfig
|
||||||
|
import jc.parsers.iptables
|
||||||
|
import jc.parsers.jobs
|
||||||
|
import jc.parsers.ls
|
||||||
|
import jc.parsers.lsblk
|
||||||
|
import jc.parsers.lsmod
|
||||||
|
import jc.parsers.lsof
|
||||||
|
import jc.parsers.mount
|
||||||
|
import jc.parsers.netstat
|
||||||
|
import jc.parsers.ps
|
||||||
|
import jc.parsers.route
|
||||||
|
import jc.parsers.uname
|
||||||
|
import jc.parsers.uptime
|
||||||
|
import jc.parsers.w
|
||||||
|
|
||||||
|
|
||||||
|
def ctrlc(signum, frame):
|
||||||
|
exit()
|
||||||
|
|
||||||
|
|
||||||
|
def helptext(message):
|
||||||
|
helptext_string = f'''
|
||||||
|
jc: {message}
|
||||||
|
|
||||||
|
Usage: jc PARSER [OPTIONS]
|
||||||
|
|
||||||
|
Parsers:
|
||||||
|
--arp arp parser
|
||||||
|
--df df parser
|
||||||
|
--dig dig parser
|
||||||
|
--env env parser
|
||||||
|
--free free parser
|
||||||
|
--history history parser
|
||||||
|
--ifconfig iconfig parser
|
||||||
|
--iptables iptables parser
|
||||||
|
--jobs jobs parser
|
||||||
|
--ls ls parser
|
||||||
|
--lsblk lsblk parser
|
||||||
|
--lsmod lsmod parser
|
||||||
|
--lsof lsof parser
|
||||||
|
--mount mount parser
|
||||||
|
--netstat netstat parser
|
||||||
|
--ps ps parser
|
||||||
|
--route route parser
|
||||||
|
--uname uname -a parser
|
||||||
|
--uptime uptime parser
|
||||||
|
--w w parser
|
||||||
|
|
||||||
|
Options:
|
||||||
|
-p pretty print output
|
||||||
|
-q quiet - suppress warnings
|
||||||
|
-r raw JSON output
|
||||||
|
|
||||||
|
Example:
|
||||||
|
ls -al | jc --ls -p
|
||||||
|
'''
|
||||||
|
print(textwrap.dedent(helptext_string), file=sys.stderr)
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
signal.signal(signal.SIGINT, ctrlc)
|
||||||
|
|
||||||
|
if sys.stdin.isatty():
|
||||||
|
helptext('missing piped data')
|
||||||
|
exit()
|
||||||
|
|
||||||
|
data = sys.stdin.read()
|
||||||
|
pretty = False
|
||||||
|
quiet = False
|
||||||
|
raw = False
|
||||||
|
|
||||||
|
# options
|
||||||
|
if '-p' in sys.argv:
|
||||||
|
pretty = True
|
||||||
|
|
||||||
|
if '-q' in sys.argv:
|
||||||
|
quiet = True
|
||||||
|
|
||||||
|
if '-r' in sys.argv:
|
||||||
|
raw = True
|
||||||
|
|
||||||
|
# parsers
|
||||||
|
parser_map = {
|
||||||
|
'--arp': jc.parsers.arp.parse,
|
||||||
|
'--df': jc.parsers.df.parse,
|
||||||
|
'--dig': jc.parsers.dig.parse,
|
||||||
|
'--env': jc.parsers.env.parse,
|
||||||
|
'--free': jc.parsers.free.parse,
|
||||||
|
'--history': jc.parsers.history.parse,
|
||||||
|
'--ifconfig': jc.parsers.ifconfig.parse,
|
||||||
|
'--iptables': jc.parsers.iptables.parse,
|
||||||
|
'--jobs': jc.parsers.jobs.parse,
|
||||||
|
'--ls': jc.parsers.ls.parse,
|
||||||
|
'--lsblk': jc.parsers.lsblk.parse,
|
||||||
|
'--lsmod': jc.parsers.lsmod.parse,
|
||||||
|
'--lsof': jc.parsers.lsof.parse,
|
||||||
|
'--mount': jc.parsers.mount.parse,
|
||||||
|
'--netstat': jc.parsers.netstat.parse,
|
||||||
|
'--ps': jc.parsers.ps.parse,
|
||||||
|
'--route': jc.parsers.route.parse,
|
||||||
|
'--uname': jc.parsers.uname.parse,
|
||||||
|
'--uptime': jc.parsers.uptime.parse,
|
||||||
|
'--w': jc.parsers.w.parse
|
||||||
|
}
|
||||||
|
|
||||||
|
for arg in sys.argv:
|
||||||
|
if arg in list(parser_map.keys()):
|
||||||
|
result = parser_map[arg](data, raw=raw, quiet=quiet)
|
||||||
|
found = True
|
||||||
|
break
|
||||||
|
|
||||||
|
if not found:
|
||||||
|
helptext('missing or incorrect arguments')
|
||||||
|
exit()
|
||||||
|
|
||||||
|
# output resulting dictionary as json
|
||||||
|
if pretty:
|
||||||
|
print(json.dumps(result, indent=2))
|
||||||
|
else:
|
||||||
|
print(json.dumps(result))
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
main()
|
128
jc/jc.py
128
jc/jc.py
@ -1,128 +0,0 @@
|
|||||||
#!/usr/bin/env python3
|
|
||||||
"""jc - JSON CLI output utility
|
|
||||||
|
|
||||||
Main input module
|
|
||||||
"""
|
|
||||||
|
|
||||||
import sys
|
|
||||||
import signal
|
|
||||||
import json
|
|
||||||
from jc.utils import *
|
|
||||||
import jc.parsers.arp
|
|
||||||
import jc.parsers.df
|
|
||||||
import jc.parsers.dig
|
|
||||||
import jc.parsers.env
|
|
||||||
import jc.parsers.free
|
|
||||||
import jc.parsers.history
|
|
||||||
import jc.parsers.ifconfig
|
|
||||||
import jc.parsers.iptables
|
|
||||||
import jc.parsers.jobs
|
|
||||||
import jc.parsers.ls
|
|
||||||
import jc.parsers.lsblk
|
|
||||||
import jc.parsers.lsmod
|
|
||||||
import jc.parsers.lsof
|
|
||||||
import jc.parsers.mount
|
|
||||||
import jc.parsers.netstat
|
|
||||||
import jc.parsers.ps
|
|
||||||
import jc.parsers.route
|
|
||||||
import jc.parsers.uname
|
|
||||||
import jc.parsers.uptime
|
|
||||||
import jc.parsers.w
|
|
||||||
|
|
||||||
|
|
||||||
def main():
|
|
||||||
signal.signal(signal.SIGINT, ctrlc)
|
|
||||||
|
|
||||||
if sys.stdin.isatty():
|
|
||||||
helptext('missing piped data')
|
|
||||||
exit()
|
|
||||||
|
|
||||||
data = sys.stdin.read()
|
|
||||||
pretty = False
|
|
||||||
quiet = False
|
|
||||||
raw = False
|
|
||||||
|
|
||||||
# options
|
|
||||||
if '-p' in sys.argv:
|
|
||||||
pretty = True
|
|
||||||
|
|
||||||
if '-q' in sys.argv:
|
|
||||||
quiet = True
|
|
||||||
|
|
||||||
if '-r' in sys.argv:
|
|
||||||
raw = True
|
|
||||||
|
|
||||||
# parsers
|
|
||||||
if '--arp' in sys.argv:
|
|
||||||
result = jc.parsers.arp.parse(data, raw=raw, quiet=quiet)
|
|
||||||
|
|
||||||
elif '--df' in sys.argv:
|
|
||||||
result = jc.parsers.df.parse(data, raw=raw, quiet=quiet)
|
|
||||||
|
|
||||||
elif '--dig' in sys.argv:
|
|
||||||
result = jc.parsers.dig.parse(data, raw=raw, quiet=quiet)
|
|
||||||
|
|
||||||
elif '--env' in sys.argv:
|
|
||||||
result = jc.parsers.env.parse(data, raw=raw, quiet=quiet)
|
|
||||||
|
|
||||||
elif '--free' in sys.argv:
|
|
||||||
result = jc.parsers.free.parse(data, raw=raw, quiet=quiet)
|
|
||||||
|
|
||||||
elif '--history' in sys.argv:
|
|
||||||
result = jc.parsers.history.parse(data, raw=raw, quiet=quiet)
|
|
||||||
|
|
||||||
elif '--ifconfig' in sys.argv:
|
|
||||||
result = jc.parsers.ifconfig.parse(data, raw=raw, quiet=quiet)
|
|
||||||
|
|
||||||
elif '--iptables' in sys.argv:
|
|
||||||
result = jc.parsers.iptables.parse(data, raw=raw, quiet=quiet)
|
|
||||||
|
|
||||||
elif '--jobs' in sys.argv:
|
|
||||||
result = jc.parsers.jobs.parse(data, raw=raw, quiet=quiet)
|
|
||||||
|
|
||||||
elif '--ls' in sys.argv:
|
|
||||||
result = jc.parsers.ls.parse(data, raw=raw, quiet=quiet)
|
|
||||||
|
|
||||||
elif '--lsblk' in sys.argv:
|
|
||||||
result = jc.parsers.lsblk.parse(data, raw=raw, quiet=quiet)
|
|
||||||
|
|
||||||
elif '--lsmod' in sys.argv:
|
|
||||||
result = jc.parsers.lsmod.parse(data, raw=raw, quiet=quiet)
|
|
||||||
|
|
||||||
elif '--lsof' in sys.argv:
|
|
||||||
result = jc.parsers.lsof.parse(data, raw=raw, quiet=quiet)
|
|
||||||
|
|
||||||
elif '--mount' in sys.argv:
|
|
||||||
result = jc.parsers.mount.parse(data, raw=raw, quiet=quiet)
|
|
||||||
|
|
||||||
elif '--netstat' in sys.argv:
|
|
||||||
result = jc.parsers.netstat.parse(data, raw=raw, quiet=quiet)
|
|
||||||
|
|
||||||
elif '--ps' in sys.argv:
|
|
||||||
result = jc.parsers.ps.parse(data, raw=raw, quiet=quiet)
|
|
||||||
|
|
||||||
elif '--route' in sys.argv:
|
|
||||||
result = jc.parsers.route.parse(data, raw=raw, quiet=quiet)
|
|
||||||
|
|
||||||
elif '--uname' in sys.argv:
|
|
||||||
result = jc.parsers.uname.parse(data, raw=raw, quiet=quiet)
|
|
||||||
|
|
||||||
elif '--uptime' in sys.argv:
|
|
||||||
result = jc.parsers.uptime.parse(data, raw=raw, quiet=quiet)
|
|
||||||
|
|
||||||
elif '--w' in sys.argv:
|
|
||||||
result = jc.parsers.w.parse(data, raw=raw, quiet=quiet)
|
|
||||||
|
|
||||||
else:
|
|
||||||
helptext('missing or incorrect arguments')
|
|
||||||
exit()
|
|
||||||
|
|
||||||
# output resulting dictionary as json
|
|
||||||
if pretty:
|
|
||||||
print(json.dumps(result, indent=2))
|
|
||||||
else:
|
|
||||||
print(json.dumps(result))
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
|
||||||
main()
|
|
Reference in New Issue
Block a user