From 55bfbb2797ede3aefbb14ecab950b108b1895ccc Mon Sep 17 00:00:00 2001 From: Kelly Brazil Date: Wed, 7 Apr 2021 11:13:27 -0700 Subject: [PATCH 1/3] formatting --- EXAMPLES.md | 3 +-- jc/parsers/dir.py | 8 ++++---- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/EXAMPLES.md b/EXAMPLES.md index f719279d..5ad605de 100644 --- a/EXAMPLES.md +++ b/EXAMPLES.md @@ -714,7 +714,6 @@ dig -x 1.1.1.1 | jc --dig -p # or: jc -p dig -x 1.1.1.1 dir | jc --dir -p # or: jc -p dir ``` ```json - [ { "date": "03/24/2021", @@ -2479,7 +2478,7 @@ route -ee | jc --route -p # or: jc -p route -ee } ] ``` -### rpm -qai +### rpm -qi ```bash rpm_qia | jc --rpm_qi -p # or: jc -p rpm -qia ``` diff --git a/jc/parsers/dir.py b/jc/parsers/dir.py index 114dec3d..38a26bb2 100644 --- a/jc/parsers/dir.py +++ b/jc/parsers/dir.py @@ -10,11 +10,11 @@ The `epoch` calculated timestamp field is naive (i.e. based on the local time of Usage (cli): - $ dir | jc --dir + C:> dir | jc --dir or - $ jc dir + C:> jc dir Usage (module): @@ -27,7 +27,7 @@ Compatibility: Examples: - $ dir | jc --dir -p + C:> dir | jc --dir -p [ { "date": "03/24/2021", @@ -68,7 +68,7 @@ Examples: ... ] - $ dir | jc --dir -p -r + C:> dir | jc --dir -p -r [ { "date": "03/24/2021", From f26909eefb236e9ebf63be53cd86ae13cc3d9ea3 Mon Sep 17 00:00:00 2001 From: Kelly Brazil Date: Wed, 7 Apr 2021 11:18:33 -0700 Subject: [PATCH 2/3] formatting --- docs/parsers/dir.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/parsers/dir.md b/docs/parsers/dir.md index 2fdeff77..d58c693b 100644 --- a/docs/parsers/dir.md +++ b/docs/parsers/dir.md @@ -12,11 +12,11 @@ The `epoch` calculated timestamp field is naive (i.e. based on the local time of Usage (cli): - $ dir | jc --dir + C:> dir | jc --dir or - $ jc dir + C:> jc dir Usage (module): @@ -29,7 +29,7 @@ Compatibility: Examples: - $ dir | jc --dir -p + C:> dir | jc --dir -p [ { "date": "03/24/2021", @@ -70,7 +70,7 @@ Examples: ... ] - $ dir | jc --dir -p -r + C:> dir | jc --dir -p -r [ { "date": "03/24/2021", From 5d8f8365e24a7c3a587d4e71ebba4876de08203b Mon Sep 17 00:00:00 2001 From: Kelly Brazil Date: Wed, 7 Apr 2021 14:27:34 -0700 Subject: [PATCH 3/3] gzip man page --- man/jc.1 | 461 ---------------------------------------------------- man/jc.1.gz | Bin 0 -> 2002 bytes mangen.py | 9 + 3 files changed, 9 insertions(+), 461 deletions(-) delete mode 100644 man/jc.1 create mode 100644 man/jc.1.gz diff --git a/man/jc.1 b/man/jc.1 deleted file mode 100644 index d9deefa6..00000000 --- a/man/jc.1 +++ /dev/null @@ -1,461 +0,0 @@ -.TH jc 1 2021-04-07 1.15.0 "JSON CLI output utility" -.SH NAME -jc \- JSONifies the output of many CLI tools and file-types -.SH SYNOPSIS -COMMAND | jc PARSER [OPTIONS] - -or magic syntax: - -jc [OPTIONS] COMMAND - -.SH DESCRIPTION -jc JSONifies the output of many CLI tools and file-types for easier parsing in scripts. jc accepts piped input from \fBSTDIN\fP and outputs a JSON representation of the previous command's output to \fBSTDOUT\fP. Alternatively, the "magic" syntax can be used by prepending jc to the command to be converted. Options can be passed to jc immediately before the command is given. (Note: command aliases are not supported). - -.SH OPTIONS -.B -Parsers: -.RS - - -.TP -.B -\fB--acpi\fP -`acpi` command parser - -.TP -.B -\fB--airport\fP -`airport -I` command parser - -.TP -.B -\fB--airport-s\fP -`airport -s` command parser - -.TP -.B -\fB--arp\fP -`arp` command parser - -.TP -.B -\fB--blkid\fP -`blkid` command parser - -.TP -.B -\fB--cksum\fP -`cksum` and `sum` command parser - -.TP -.B -\fB--crontab\fP -`crontab` command and file parser - -.TP -.B -\fB--crontab-u\fP -`crontab` file parser with user support - -.TP -.B -\fB--csv\fP -CSV file parser - -.TP -.B -\fB--date\fP -`date` command parser - -.TP -.B -\fB--df\fP -`df` command parser - -.TP -.B -\fB--dig\fP -`dig` command parser - -.TP -.B -\fB--dir\fP -`dir` command parser - -.TP -.B -\fB--dmidecode\fP -`dmidecode` command parser - -.TP -.B -\fB--dpkg-l\fP -`dpkg -l` command parser - -.TP -.B -\fB--du\fP -`du` command parser - -.TP -.B -\fB--env\fP -`env` command parser - -.TP -.B -\fB--file\fP -`file` command parser - -.TP -.B -\fB--finger\fP -`finger` command parser - -.TP -.B -\fB--free\fP -`free` command parser - -.TP -.B -\fB--fstab\fP -`/etc/fstab` file parser - -.TP -.B -\fB--group\fP -`/etc/group` file parser - -.TP -.B -\fB--gshadow\fP -`/etc/gshadow` file parser - -.TP -.B -\fB--hash\fP -`hash` command parser - -.TP -.B -\fB--hashsum\fP -hashsum command parser (`md5sum`, `shasum`, etc.) - -.TP -.B -\fB--hciconfig\fP -`hciconfig` command parser - -.TP -.B -\fB--history\fP -`history` command parser - -.TP -.B -\fB--hosts\fP -`/etc/hosts` file parser - -.TP -.B -\fB--id\fP -`id` command parser - -.TP -.B -\fB--ifconfig\fP -`ifconfig` command parser - -.TP -.B -\fB--ini\fP -INI file parser - -.TP -.B -\fB--iptables\fP -`iptables` command parser - -.TP -.B -\fB--iw-scan\fP -`iw dev [device] scan` command parser - -.TP -.B -\fB--jobs\fP -`jobs` command parser - -.TP -.B -\fB--kv\fP -Key/Value file parser - -.TP -.B -\fB--last\fP -`last` and `lastb` command parser - -.TP -.B -\fB--ls\fP -`ls` command parser - -.TP -.B -\fB--lsblk\fP -`lsblk` command parser - -.TP -.B -\fB--lsmod\fP -`lsmod` command parser - -.TP -.B -\fB--lsof\fP -`lsof` command parser - -.TP -.B -\fB--mount\fP -`mount` command parser - -.TP -.B -\fB--netstat\fP -`netstat` command parser - -.TP -.B -\fB--ntpq\fP -`ntpq -p` command parser - -.TP -.B -\fB--passwd\fP -`/etc/passwd` file parser - -.TP -.B -\fB--ping\fP -`ping` and `ping6` command parser - -.TP -.B -\fB--pip-list\fP -`pip list` command parser - -.TP -.B -\fB--pip-show\fP -`pip show` command parser - -.TP -.B -\fB--ps\fP -`ps` command parser - -.TP -.B -\fB--route\fP -`route` command parser - -.TP -.B -\fB--rpm-qi\fP -`rpm -qi` command parser - -.TP -.B -\fB--shadow\fP -`/etc/shadow` file parser - -.TP -.B -\fB--ss\fP -`ss` command parser - -.TP -.B -\fB--stat\fP -`stat` command parser - -.TP -.B -\fB--sysctl\fP -`sysctl` command parser - -.TP -.B -\fB--systemctl\fP -`systemctl` command parser - -.TP -.B -\fB--systemctl-lj\fP -`systemctl list-jobs` command parser - -.TP -.B -\fB--systemctl-ls\fP -`systemctl list-sockets` command parser - -.TP -.B -\fB--systemctl-luf\fP -`systemctl list-unit-files` command parser - -.TP -.B -\fB--time\fP -`/usr/bin/time` command parser - -.TP -.B -\fB--timedatectl\fP -`timedatectl status` command parser - -.TP -.B -\fB--tracepath\fP -`tracepath` and `tracepath6` command parser - -.TP -.B -\fB--traceroute\fP -`traceroute` and `traceroute6` command parser - -.TP -.B -\fB--uname\fP -`uname -a` command parser - -.TP -.B -\fB--upower\fP -`upower` command parser - -.TP -.B -\fB--uptime\fP -`uptime` command parser - -.TP -.B -\fB--w\fP -`w` command parser - -.TP -.B -\fB--wc\fP -`wc` command parser - -.TP -.B -\fB--who\fP -`who` command parser - -.TP -.B -\fB--xml\fP -XML file parser - -.TP -.B -\fB--yaml\fP -YAML file parser - - -.RE -.PP -.B -Options: -.RS - -.TP -.B -\fB-a\fP -about jc (JSON output) -.TP -.B -\fB-d\fP -debug - show traceback (\fB-dd\fP for verbose traceback) -.TP -.B -\fB-h\fP -help -.TP -.B -\fB-m\fP -monochrome output -.TP -.B -\fB-p\fP -pretty print output -.TP -.B -\fB-q\fP -quiet - suppress warnings -.TP -.B -\fB-r\fP -raw JSON output -.TP -.B -\fB-v\fP -version information - -.SH ENVIRONMENT -You can specify custom colors via the \fBJC_COLORS\fP environment variable. The \fBJC_COLORS\fP environment variable takes four comma separated string values in the following format: - -JC_COLORS=,,, - -Where colors are: \fBblack\fP, \fBred\fP, \fBgreen\fP, \fByellow\fP, \fBblue\fP, \fBmagenta\fP, \fBcyan\fP, \fBgray\fP, \fBbrightblack\fP, \fBbrightred\fP, \fBbrightgreen\fP, \fBbrightyellow\fP, \fBbrightblue\fP, \fBbrightmagenta\fP, \fBbrightcyan\fP, \fBwhite\fP, or \fBdefault\fP - -For example, to set to the default colors: - -.RS -JC_COLORS=blue,brightblack,magenta,green - -or - -JC_COLORS=default,default,default,default -.RE - -.SH CUSTOM PARSERS -Custom local parser plugins may be placed in a \fBjc/jcparsers\fP folder in your local "App data directory": - -.RS -- Linux/unix: \fB$HOME/.local/share/jc/jcparsers\fP - -- macOS: \fB$HOME/Library/Application Support/jc/jcparsers\fP - -- Windows: \fB$LOCALAPPDATA\\jc\\jc\\jcparsers\fP -.RE - -Local parser plugins are standard python module files. Use the \fBjc/parsers/foo.py\fP parser as a template and simply place a \fB.py\fP file in the \fBjcparsers\fP subfolder. - -Local plugin filenames must be valid python module names, therefore must consist entirely of alphanumerics and start with a letter. Local plugins may override default plugins. - -Note: The application data directory follows the XDG Base Directory Specification - -.SH EXAMPLE -ls \fB-al\fP | jc \fB--ls\fP \fB-p\fP - - -or using the magic syntax: - - -jc \fB-p\fP ls \fB-al\fP - -.SH AUTHOR -Kelly Brazil (kellyjonbrazil@gmail.com) - -https://github.com/kellyjonbrazil/jc - -.SH COPYRIGHT -Copyright (c) 2019-2021 Kelly Brazil - -License: MIT License \ No newline at end of file diff --git a/man/jc.1.gz b/man/jc.1.gz new file mode 100644 index 0000000000000000000000000000000000000000..43a9638f1cbf7fde63d03e8d30ea92cb33bb1508 GIT binary patch literal 2002 zcmV;@2QBy?iwFpXBW_><|7v3{F#w%dZExea5&o`UK?DVw1tK|F^sZ>o7WF#m#dnEq z#NNGKTn-mnqHQLUs3oa5D*EF)Go)4klKHpEbT%K)qtW!{W;nTE|3znJ!`u1gE&FXcTa2fZ z`R`GrG$>okl$oZq{P{dW%e(K)OGl*h;&MK^9n&X7{a?&7Z>Bn-D*Z!ok_4jt}rbsEsTI^SgA_%1pR`s zC#h<~QdNLw*`H18s#RX&^z#B#CTy5np-Yf{5_xk%(nl1WBOe`>@{%nDs|`4|Y*2S4 z$_(cKeuF*~@ph11B3C{MZAF%_X@!27R!PMTssR|t%AydNGE-NTLUSJyw`P7NqvTUGgK!IN&ZFdZ9>Lee3`ZdZam>?7 zLI|RJB<^?GE0Q>XN{tpA+R-c?ze^@IFQrUCN>>iAtA5}zf0P+PiRuTZkESjNOw>JP z(mheVVp>54ES;dE_X2H-_esX}OW6*dZKd5{Qt5X64m6l2lpW2#ylo|e+#v%<^iL&Q zIp8V)lWT{Q>kv?Tpbh{FnTb?o-qDr|2vv{kICm02vN#XmU7WMJA0|qQ={@}R12N)+ zL?Q$&*Ft+Rk^#6DUNaB@sA+R=AZ$7y_Wtc;SZh^RdpNOuaI@i=+I9roK#$0Vn+@TS z==U8Fe#?3C0M3r@i|hy7fhVvL0Yen{k$gDNlu9V4E1#D;E?{07t90W;932o)#+rRB zi0z4luRNi$BUc^QTP7eB&r`=3JV+D!95)iu+?{m27<+b;}S0(+iaiVj_*nF3W^!Qk?`w- zJP-y_RQ4Y6J{lMpfR`To3 z_1pWk;STg|c!+{#>M}}Z1oaJ`Z?HP@9A)_u)&qOJW9n926Z)YGqnezFWevAns(g&r zammw1c1!?7PzMb?3$+Z!A)g7c8SfNUlZlIZN8}=@Ou8h#rT8pi%EbS{8 zI%mGuQdsm6x)o@-4cl^E!hvAANXin;x2!YW?svK!z&s2#>#~Gd71X%9zV&kQWqdoG z++0o;(Kl67(`+h{%2mVC8m@78i_Dca>`8L!l|kpvqd!K|>*?(r!vr^b3C&g^U>;9g zOS~E-Z1GMcv;2`>D{AeshZ)$I8g_aH`&?to|Ae<1gRd88ex>qUZE@Vq$hg-VfYkVqc*|g#1UITA-B3iCD_Ju7s)UoIWUf6X*2iCo+y$^2Wz!Nvv z^=G@0*2zHT1D}Z%uX8#XqkrRb(lalrT%6!riV?Pbi19EVxATa$<$g`jk(18!PP`u{ zG!c9m>#m?zcJjtAl>tiJ(dYSMdgEW(=F!OIYOYeAxBX6)*K1iCR`7-%g1|aGbTN*z zdq@WlsY4pK-SZ5D;B$k?=rkP-tBS$7!x?nlaQHx1bL3|jvujz_&jUCGpD9uPbTz%X z93&)&R}(D;2R0%QDtJ1bcktJ8skv?jU?`WVds3Ub*NNA}f0ZR%d5lwVJsl0NhqKwm za522Qdq~^AjtIr;`n9OwQx=@0WyUoW?8a`uFkHp!+;tEpVV{j?cl-lhUrFg;rBqU3 z-nI%kz6`>>0OD%}or^{S)3|`UV0#HF>3$=V)=vCQy>v^E>>MUfNeDMJEF>&4t|U|h zdFV4C=rK{dcRd0_|7YN;0;R{o`hibs#duzAI1~b*W$K-ykw zNI@0VGTUdo{|FAd*Fr3Myt9rk6UUb>_l*1X;wScrLx3-KpXXF|y{xa!Uxzod>&qxN zjLtVa9Ni1^zB6OHBZXd>YkKNM69@0jk(WX!>ne1nhMyN#(_3gGbBNL>&Hp2FcKnFk zgDRKA|7%@vnI}-DKSa^S+RB^{25X2~y~M%6OEjde->K8tx7+bgSBq$*s)h;yJ5E2a kkEdsUi}BH(b&bN}LyKG*2q(K4FPP{42N}tI_U0D=0HCJQga7~l literal 0 HcmV?d00001 diff --git a/mangen.py b/mangen.py index adda2da5..6b72355d 100755 --- a/mangen.py +++ b/mangen.py @@ -1,6 +1,9 @@ #!/usr/bin/env python3 # Genereate man page from jc metadata using jinja2 templates from datetime import date +import os +import gzip +import shutil import jc.cli from jinja2 import Environment, FileSystemLoader @@ -12,3 +15,9 @@ output = template.render(today=date.today(), with open('man/jc.1', 'w') as f: f.write(output) + +with open('man/jc.1', 'rb') as f_in: + with gzip.open('man/jc.1.gz', 'wb') as f_out: + shutil.copyfileobj(f_in, f_out) + +os.remove('man/jc.1')