From 88bf252c0df3c583640286880d7992e4399e23f4 Mon Sep 17 00:00:00 2001 From: Kelly Brazil Date: Thu, 7 Nov 2019 08:04:07 -0800 Subject: [PATCH] rename jc.py to cli.py --- jc/cli.py | 139 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ jc/jc.py | 128 ------------------------------------------------- 2 files changed, 139 insertions(+), 128 deletions(-) create mode 100644 jc/cli.py delete mode 100755 jc/jc.py diff --git a/jc/cli.py b/jc/cli.py new file mode 100644 index 00000000..4a68fe39 --- /dev/null +++ b/jc/cli.py @@ -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() diff --git a/jc/jc.py b/jc/jc.py deleted file mode 100755 index 8e5b8d7a..00000000 --- a/jc/jc.py +++ /dev/null @@ -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()