1
0
mirror of https://github.com/kellyjonbrazil/jc.git synced 2026-04-03 17:44:07 +02:00

Compare commits

...

2856 Commits

Author SHA1 Message Date
Kelly Brazil
abda8735be Merge pull request #551 from kellyjonbrazil/dev
Dev v1.25.2
2024-03-23 11:11:00 -07:00
Kelly Brazil
79cb156441 doc update 2024-03-23 10:58:36 -07:00
Kelly Brazil
1da080dc52 fix for unhandled lines in xrandr output 2024-03-23 10:57:46 -07:00
Kelly Brazil
3ca8e1ef11 iptables -x support for larger numbers and doc update 2024-03-19 14:38:20 -07:00
Kelly Brazil
1d31d3570a add -x support to iptables parser 2024-03-18 10:52:26 -07:00
Kelly Brazil
b84123a09b doc update 2024-03-18 10:26:00 -07:00
Kelly Brazil
475eedb142 Merge pull request #547 from lyterk/xrandr_fix_schema
[xrandr] Add props schema
2024-03-18 10:15:34 -07:00
Kelly Brazil
ebd0432b82 Merge branch 'dev' into xrandr_fix_schema 2024-03-18 10:05:29 -07:00
Kelly Brazil
ee1135003b add space after bullets 2024-03-16 18:28:52 -07:00
Kelly Brazil
aaee394e51 formatting 2024-03-16 18:25:45 -07:00
Kelly Brazil
ad91a71488 doc update 2024-03-15 12:19:14 -07:00
Kelly Brazil
c2adc46db4 make all summary docstrings raw 2024-03-15 12:17:39 -07:00
Kelly Brazil
3e9afca803 formatting 2024-03-15 11:39:27 -07:00
Kelly Brazil
ee2a7ddc2e remove python path update since the script will be run from the correct directory 2024-03-15 11:37:56 -07:00
Kelly Brazil
4fc7232d44 update all docs with new script 2024-03-14 22:46:52 -07:00
Kelly Brazil
a0dff721b1 reduce TOC level 2024-03-14 21:58:43 -07:00
Kelly Brazil
37061227d9 New doc generation script 2024-03-14 21:44:37 -07:00
Kelly Brazil
401b7b31b8 remove sys.path print 2024-03-14 17:31:38 -07:00
Kelly Brazil
86a4bd12b5 fix for tests run inside vscode 2024-03-14 17:29:31 -07:00
Kelly Brazil
50638cc11e fix escape warnings 2024-03-14 12:06:34 -07:00
Kelly Brazil
36de08a6f8 change existing_src to existing_pkg_ver 2024-03-13 19:01:09 -07:00
Kelly Brazil
83fa32f615 ethtool - convert units 2024-03-08 16:39:23 -08:00
Kevin Lyter
a3ca2814b3 Add props schema 2024-03-02 17:46:13 -08:00
Kevin Lyter
5c06712fba [xrandr] Fix schema 2024-03-02 17:46:13 -08:00
Kevin Lyter
fdadba226f [xrandr] Update schema 2024-03-02 17:46:13 -08:00
Kelly Brazil
5ac36befe2 add apt-get-sqq parser tests 2024-03-01 14:25:33 -08:00
Kelly Brazil
527b5ab5c5 doc update 2024-03-01 13:57:21 -08:00
Kelly Brazil
495c353c5d clean up template 2024-03-01 13:53:02 -08:00
Kelly Brazil
abbd4820fd add ethtool parser tests 2024-03-01 13:52:45 -08:00
Kelly Brazil
5e88eb0c8b add --module-info support to ethtool parser 2024-03-01 11:43:19 -08:00
Kelly Brazil
b0c98a56ce add operation value updates to _process 2024-02-29 14:32:46 -08:00
Kelly Brazil
07e9b46535 add new parsers 2024-02-29 14:00:33 -08:00
Kelly Brazil
87419750fc add apt-get-sqq command parser 2024-02-29 13:59:32 -08:00
Kelly Brazil
412a772b42 fix for multiple list items on a line 2024-02-29 10:09:24 -08:00
Kelly Brazil
52a816cc45 add ethtool command parser 2024-02-28 18:03:00 -08:00
Kelly Brazil
48deacf875 doc update 2024-02-28 13:33:56 -08:00
Kelly Brazil
7a377f7b8d add needrestart command parser 2024-02-28 13:28:03 -08:00
Kelly Brazil
e2f97d7d8e add simple summary support to rsync and rsync-s parsers 2024-02-27 10:26:07 -08:00
Kelly Brazil
f9bf889654 add apt_cache_show tests and fix parser name in warning messeages for parser aliases 2024-02-26 20:18:57 -08:00
Kelly Brazil
026846650a add apt_cache_show parser. Split list values into an array. fix tests. 2024-02-26 19:56:07 -08:00
Kelly Brazil
850917ada0 remove extra fields from df parser. All size values are now normalized to bytes. Size field is now an integer. 2024-02-26 11:17:42 -08:00
Kelly Brazil
bce4eb536a add human readable output support to the free parser 2024-02-26 10:42:26 -08:00
Kelly Brazil
ef2a2121b5 add human-readable support to the df parser 2024-02-26 10:00:42 -08:00
Kelly Brazil
4bed8392b8 update release notes section 2024-02-20 08:56:53 -08:00
Kelly Brazil
8e2bcba352 use get_parser instead of importlib 2024-02-14 15:45:18 -08:00
Kelly Brazil
588e5c2653 add Idle support to state_map 2024-02-14 15:31:10 -08:00
Kelly Brazil
25085c3412 doc update 2024-02-14 15:25:22 -08:00
Kelly Brazil
bfa99d99af Merge pull request #544 from viktory683/iwconfig-fix
Iwconfig fix
2024-02-14 23:19:31 +00:00
Kelly Brazil
b8f7ddcfc8 Merge branch 'dev' into iwconfig-fix 2024-02-14 22:46:49 +00:00
bzglve
413ea4bc68 added some more symbols following "SSID Naming Conventions"
from https://www.cisco.com/assets/sol/sb/WAP321_Emulators/WAP321_Emulator_v1.0.0.3/help/Wireless05.html
2024-02-14 15:36:04 +06:00
bzglve
13948fff26 #541 fix 2024-02-14 15:19:13 +06:00
Kelly Brazil
6275591ef1 version bump and doc updates 2024-02-12 21:31:10 -08:00
Kelly Brazil
2cdbebb7fd Merge pull request #542 from kellyjonbrazil/dev
Dev v1.25.1
2024-02-13 00:35:00 +00:00
Kelly Brazil
412f11276a fix sys.path update 2024-02-12 16:18:52 -08:00
Kelly Brazil
f3dd51f517 hard-code disabled parser path 2024-02-12 15:53:21 -08:00
Kelly Brazil
f66f1aadaa use shlex to correctly split the /proc files in magic_run_command_str 2024-02-12 15:32:38 -08:00
Kelly Brazil
8ead7e4835 rename List class to _List for documentation purposes 2024-02-12 15:05:44 -08:00
Kelly Brazil
f1177a2606 add more coverage for --quiet cli option 2024-02-12 11:00:27 -08:00
Kelly Brazil
44dc2a74c1 add test for jc -h 2024-02-12 11:00:02 -08:00
Kevin Lyter
d50bd96ce6 [xrandr] Allow props command (#540)
* [xrandr] Allow props command

Responding to issue #525
Somewhat substantial rewriting here to make the parser more resilient
- Change parser to not mutate the incoming data list, instead index
- Create `Line` class and `categorize` classmethod
  - Every line is categorized and regexed, so it gets dispatched to the
  right level of responsibility

* Bump version

---------

Co-authored-by: Kelly Brazil <kellyjonbrazil@gmail.com>
2024-02-12 09:03:25 -08:00
Kelly Brazil
5cde127a04 raise ParseError instead of output empty object for disabled parser 2024-02-10 14:58:15 -08:00
Kelly Brazil
63d1cead90 enhance uptime parser for busybox output with no user info 2024-02-10 11:55:19 -08:00
Kelly Brazil
d3e7f09ca3 fix for more graceful handling of missing optional libraries 2024-02-10 11:16:38 -08:00
Kelly Brazil
e6bdbb42d3 add more ini tests 2024-02-09 19:32:19 -08:00
Kelly Brazil
3cfc5e3e3c fix ini parser for edge cases with non-value keys 2024-02-09 17:13:19 -08:00
Kelly Brazil
082d4a3f80 doc update 2024-02-07 11:53:13 -08:00
Kelly Brazil
158c28455b version bump 2024-02-05 18:30:26 -08:00
Kelly Brazil
efb02493b8 remove extra $ from slicing example 2024-02-05 18:22:05 -08:00
Kelly Brazil
a319ec85ca doc update 2024-02-06 01:54:31 +00:00
Kelly Brazil
e754e88f2d doc update 2024-02-06 01:54:31 +00:00
Kelly Brazil
cfa7f267fc update schema 2024-02-06 01:54:31 +00:00
Kelly Brazil
c581e959fa formatting 2024-02-06 01:54:31 +00:00
Kelly Brazil
9eb56543be add verbosity check for printing 2024-02-06 01:54:31 +00:00
Kelly Brazil
67643906b1 formatting 2024-02-06 01:54:31 +00:00
Kelly Brazil
14d257225c doc update 2024-02-06 01:54:31 +00:00
Kelly Brazil
0411940f75 add full path to error messages 2024-02-06 01:54:31 +00:00
Kelly Brazil
7d60df67f3 check for missing fixtures 2024-02-06 01:54:31 +00:00
Kelly Brazil
70a971a2f1 formatting 2024-02-06 01:54:31 +00:00
Kelly Brazil
3fbdffd028 efibootmgr updates 2024-02-06 01:54:31 +00:00
yaofei zheng
539fe72d16 add "sudo efibootmgr" (without -v) output test case (#534) 2024-02-06 01:54:31 +00:00
Kelly Brazil
bd6611aaba doc updates 2024-02-06 01:54:31 +00:00
Kelly Brazil
cf77ddc396 cleanup 2024-02-06 01:54:31 +00:00
Kelly Brazil
77bcd616cd add tests for curl-head and http-headers parsers 2024-02-06 01:54:31 +00:00
yaofei zheng
5ee2eda83e add efibootmgr parser (#528)
* More nsd fixes (#523)

* Update nsd_control.py

support catz output

* Update nsd_control.py

fix parsing of catz zones

* add testdata

add corresponding catz testdata

* Revert "More nsd fixes" (#526)

* add efibootmgr parser

* add efibootmgr completions

* Multiple fixes on jc/parsers/efibootmgr.py

1. Update schema in comments.
1. Add an example.
1. Use clean and clear sub string finding sytax.
1. Wrap schema in an object.
1. Make variable scope as small as possible.

* add tests for efibootmgr

* Update jc/parsers/efibootmgr.py

Update example using `--pretty` for output.

Co-authored-by: Muescha <184316+muescha@users.noreply.github.com>

* jc/parsers/efibootmgr multiple changes

1. convert all keys to "snake_case"
2. add "mirrored_percentage_above_4g" and "mirror_memory_below_4gb"
3. move conversion (from string to other types) to "_process"

---------

Co-authored-by: pettai <pettai@sunet.se>
Co-authored-by: Kelly Brazil <kellyjonbrazil@gmail.com>
Co-authored-by: Muescha <184316+muescha@users.noreply.github.com>
2024-02-06 01:54:31 +00:00
Kelly Brazil
5b849b0275 doc update 2024-02-06 01:54:31 +00:00
Kelly Brazil
3e5d206f0c test utils cleanup 2024-02-06 01:54:31 +00:00
Kelly Brazil
f50f96381d doc update 2024-02-06 01:54:31 +00:00
Muescha
962632ac1f Feature: generic fixtures tests (#529)
* add generic test runners

* extract generic test runners

* beautify messages, remove unused return value

* add template and info do CONTRIBUTING

* typo

---------

Co-authored-by: Kelly Brazil <kellyjonbrazil@gmail.com>
2024-02-06 01:54:31 +00:00
Kelly Brazil
d209780a9d only add timestamp field if datetime string is parsable 2024-02-06 01:54:31 +00:00
Kelly Brazil
8e5451a7c1 fix for datetime or integer fields 2024-02-06 01:54:31 +00:00
Kelly Brazil
86a09c17cf remove unused _process function 2024-02-06 01:54:31 +00:00
Kelly Brazil
4bb85195e2 doc update 2024-02-06 01:54:31 +00:00
Kelly Brazil
39f43aad63 add http_headers and curl_head parsers 2024-02-06 01:54:31 +00:00
Kelly Brazil
29689f7603 formatting 2024-02-06 01:54:31 +00:00
Muescha
78d7ab1308 add info about documentation and completions (#531) 2024-02-06 01:54:31 +00:00
Kelly Brazil
303cd12de3 version bump to v1.25.0 2024-02-06 01:54:31 +00:00
Kelly Brazil
b65f37e075 add normalize_key() function and tests 2024-02-06 01:54:31 +00:00
Kelly Brazil
c05fa7e9cd add remove_quotes() to utils and use in ini parsers 2024-02-06 01:54:31 +00:00
Kelly Brazil
264272a8b8 doc update 2024-02-06 01:54:31 +00:00
Kelly Brazil
7fadb23fea use convert_size_to_int() 2024-02-06 01:54:31 +00:00
Kelly Brazil
c419e460db doc update 2024-02-06 01:54:31 +00:00
Kelly Brazil
6434ff61bf add HTTP header datetime format 2024-02-06 01:54:31 +00:00
Kelly Brazil
45a1be11e2 doc update 2024-02-06 01:54:31 +00:00
Kelly Brazil
7659fe470a formatting 2024-02-06 01:54:31 +00:00
Muescha
c332c4febf draft for path and path_list (#513)
* draft for path_list

* updaate doc

* add input check

* fix types

* fix schema: add missing properties

* add _process

* fix _process docs

* refactor: extract path.py parser

* swap order of names alphabetically

* documentation and comments

* path parser: add early return for nodata

* path and path-list parser: add test and fixtures

* typo in file name

* add early return for nodata

* add test and fixtures

* typo in file name

* rename fixtures

* rename fixtures

* refactor to pathlib.Path

* failing on windows - use PurePosixPath

* changed the way to strip dot from suffix

* add POSIX to path

* test commit to see results on windows is failing

* test commit to see results on windows is failing

* add windows path detection

* somehow Path not like the newline from input line

* add test with more items

* remove debug print

* wrap test loops into into subTest

* remove print statements

* add path and path-list to CHANGELOG

---------

Co-authored-by: Kelly Brazil <kellyjonbrazil@gmail.com>
2024-02-06 01:54:31 +00:00
Kelly Brazil
2cc212bfab use convert_size_to_int() from utils 2024-02-06 01:54:31 +00:00
Kelly Brazil
b836ffc583 add tests for convert_size_to_int() 2024-02-06 01:54:31 +00:00
Kelly Brazil
29f1a1d425 fix proc doc - output is dict or list of dicts 2024-02-06 01:54:31 +00:00
Kelly Brazil
9f78dc6afa proc parser doc update 2024-02-06 01:54:31 +00:00
Kelly Brazil
74c7e11948 doc update 2024-02-06 01:54:31 +00:00
Kelly Brazil
6ba6dc0374 version bump 2024-02-06 01:54:31 +00:00
pettai
ec0f2569e5 More nsd fixes (#523)
* Update nsd_control.py

support catz output

* Update nsd_control.py

fix parsing of catz zones

* add testdata

add corresponding catz testdata
2024-02-06 01:54:31 +00:00
Kelly Brazil
65e30c4440 doc update 2024-02-06 01:54:31 +00:00
Kelly Brazil
8d9ebf5dfa doc update 2024-02-06 01:54:31 +00:00
Kelly Brazil
c3746454ff doc update 2024-02-06 01:54:31 +00:00
Kelly Brazil
ea0f6493a2 update contributing guide 2024-02-06 01:54:31 +00:00
Kelly Brazil
afbc46076e add ping tests 2024-02-06 01:54:31 +00:00
Mabuchin
2b9b6550a7 Fix data_bytes is null in ping -I option (#520)
* fixed header parsing when specifying ping interface

* add source_ip parsing test for ping/ping-s

---------

Co-authored-by: Kelly Brazil <kellyjonbrazil@gmail.com>
2024-02-06 01:54:31 +00:00
Kelly Brazil
6fb3c0a409 doc update 2024-02-06 01:54:31 +00:00
Kelly Brazil
1b8911ad36 add slurp docs 2024-02-06 01:54:31 +00:00
Kelly Brazil
cc61b57dd1 add blank line tests to slicer 2024-02-06 01:54:31 +00:00
Kelly Brazil
6d679b2895 doc update 2024-02-06 01:54:31 +00:00
Kelly Brazil
1e1fc08a47 doc update 2024-02-06 01:54:31 +00:00
Kelly Brazil
b5c3a03d56 implement slurp by wrapping in a list, adding "_file" for /proc, and further wrapping in {"result": data} when --meta-out is used. 2024-02-06 01:54:31 +00:00
Kelly Brazil
9e269f070f update slice help doc 2024-02-06 01:54:31 +00:00
Kelly Brazil
f863cfdef4 fix for slicing blank lines 2024-02-06 01:54:31 +00:00
Kelly Brazil
2cd58d75e7 make parser_shortname more robust 2024-02-06 01:54:31 +00:00
Kelly Brazil
03b70eebb7 make /proc slurpable with magic syntax 2024-02-06 01:54:31 +00:00
Kelly Brazil
1e76ce2aea doc update 2024-02-06 01:54:31 +00:00
Kelly Brazil
d9fc1b4242 doc update 2024-02-06 01:54:31 +00:00
Muescha
36a3d2e96d crontab remove double entry in doc (#518) 2024-02-06 01:54:31 +00:00
Kelly Brazil
bf05de1d63 doc update 2024-02-06 01:54:31 +00:00
Kelly Brazil
cae41df1d8 add get_parser tests 2024-02-06 01:54:31 +00:00
Kelly Brazil
8e9ff7fa9f refactor to use get_parser() 2024-02-06 01:54:31 +00:00
Muescha
973c535c72 extract to public jc.get_parser(parser_name) (#516)
* remove unused imports and RegEx

* extract to public jc.get_parser(parser_name)

* changed order of exports

* add doc

* add doc.md

* remove data_dir from doc.md

---------

Co-authored-by: Kelly Brazil <kellyjonbrazil@gmail.com>
2024-02-06 01:54:31 +00:00
Muescha
8614d3dde9 remove unused imports and RegEx (#515) 2024-02-06 01:54:31 +00:00
Kelly Brazil
a73ee47bcf move slurp error message so it will work for all parser types 2024-02-06 01:54:31 +00:00
Kelly Brazil
d54a81831f update slicer to use utils.line_slice() 2024-02-06 01:54:31 +00:00
Kelly Brazil
73ae1396b9 enhance slurp error message 2024-02-06 01:54:31 +00:00
Kelly Brazil
3399e8551e add slurpable_parser_mod_list test 2024-02-06 01:54:31 +00:00
Kelly Brazil
b9656c2fae add line_slice tests 2024-02-06 01:54:31 +00:00
Kelly Brazil
e08ccb7942 add slurp test. fix cli_json_out_pretty test 2024-02-06 01:54:31 +00:00
Kelly Brazil
9b648e8560 doc update 2024-02-06 01:54:31 +00:00
Kelly Brazil
c97a8fb48f add line_slice function 2024-02-06 01:54:31 +00:00
Kelly Brazil
3a95407161 back out slurp array flattening code 2024-02-06 01:54:31 +00:00
Kelly Brazil
7609af28b3 doc update 2024-02-06 01:54:31 +00:00
Kelly Brazil
c2b2e81a2b add more slurpable parsers 2024-02-06 01:54:31 +00:00
Kelly Brazil
3b0594a4a6 flatten slurp output if parser outputs a list 2024-02-06 01:54:31 +00:00
Kelly Brazil
2b0b9dd7ba doc update 2024-02-06 01:54:31 +00:00
don Rumata
f159dd6b9d Add plugins support 4 snapcraft (#512)
* Added `snap` support.

* Added plugins support.

* Add README 4 snap.

---------

Co-authored-by: Kelly Brazil <kellyjonbrazil@gmail.com>
2024-02-06 01:54:31 +00:00
Kelly Brazil
2d5d87c73d version bump and doc update 2024-02-06 01:54:31 +00:00
Kelly Brazil
a260ceba1c add slurp functionality 2024-02-06 01:54:31 +00:00
Kelly Brazil
6c30b8106c use PurePosixPath to fix tests running on Windows 2024-02-06 01:54:31 +00:00
Kelly Brazil
a23921c879 doc update 2024-02-06 01:54:31 +00:00
Kelly Brazil
3999276d17 add parent, filename, stem, and extension to schema 2024-02-06 01:54:31 +00:00
Kelly Brazil
65bd4850f2 doc update 2024-02-06 01:54:31 +00:00
Kelly Brazil
d71c2d2b20 add kv_dup tests 2024-02-06 01:54:31 +00:00
Kelly Brazil
6dd5b29998 fix to make None values always a blank string 2024-02-06 01:54:31 +00:00
Kelly Brazil
1868b28f74 doc fix 2024-02-06 01:54:31 +00:00
Kelly Brazil
e8c0bef6ca doc update 2024-02-06 01:54:31 +00:00
Kelly Brazil
2c09a06b5a add kv_dup parser 2024-02-06 01:54:31 +00:00
Kelly Brazil
fc75ce90d1 refactor alias parsers 2024-02-06 01:54:31 +00:00
Kelly Brazil
45a6cfc9cf add source info to docs 2024-02-06 01:54:31 +00:00
Kelly Brazil
69a0922410 doc update 2024-02-06 01:54:31 +00:00
Kelly Brazil
2bb201a706 fix parser source path 2024-02-06 01:54:31 +00:00
Kelly Brazil
50d5d3a3ba add opposite endian ipv6 addresses for s390x and other Big Endian architecture support 2024-02-06 01:54:31 +00:00
Kelly Brazil
b14a8980b8 add more info for unit tests 2024-02-06 01:54:31 +00:00
muescha
de6aa1cc92 change \n to echo to create new lines 2024-02-06 01:54:31 +00:00
Muescha
c4dcedb269 Update docgen.sh: add link to source 2024-02-06 01:54:31 +00:00
Kelly Brazil
140a61702b Revert "More nsd fixes" (#526) 2024-01-26 14:22:13 -08:00
pettai
4d3fc07e3b More nsd fixes (#523)
* Update nsd_control.py

support catz output

* Update nsd_control.py

fix parsing of catz zones

* add testdata

add corresponding catz testdata
2024-01-26 14:20:33 -08:00
Kelly Brazil
dcc4d35d55 Merge branch 'dev' into master 2023-12-21 22:02:56 +00:00
Muescha
cfb30b32f3 Update CONTRIBUTING.md (#509)
* Update CONTRIBUTING.md

fix:
- bullet points
- fix link to custom plugins
- add info about appending to `jc/lib.py`

* Update CONTRIBUTING.md

fix numbering

* typo: lowercase
2023-12-21 07:42:04 -08:00
Kelly Brazil
26f2738471 Merge pull request #502 from kellyjonbrazil/master
sync to dev
2023-12-18 20:13:45 +00:00
Kelly Brazil
2bccd14c5d Merge pull request #499 from kellyjonbrazil/dev
v1.24.0
2023-12-17 18:08:02 +00:00
Kelly Brazil
0d4823c9de doc update 2023-12-17 09:44:18 -08:00
Kelly Brazil
2a14f56b72 add proc-cmdline tests 2023-12-16 13:18:14 -08:00
Kelly Brazil
fe49759598 doc update 2023-12-16 12:59:35 -08:00
Kelly Brazil
ee737a59eb doc update 2023-12-16 12:55:29 -08:00
Kelly Brazil
517ab10930 add proc-cmdline parser 2023-12-16 12:09:37 -08:00
Kelly Brazil
604fb574be doc update 2023-12-16 11:44:11 -08:00
Kelly Brazil
a254ee8d88 add test for issue 490 2023-12-16 11:39:40 -08:00
Kelly Brazil
f784a7a76d doc update 2023-12-10 13:13:57 -08:00
Kelly Brazil
2e33afbe18 doc cleanup 2023-12-10 10:53:28 -08:00
Kelly Brazil
103bb174fc rename pkg-index-alpine to pkg-index-apk 2023-12-10 10:49:05 -08:00
Kelly Brazil
2a76a64fa1 schema update 2023-12-10 10:41:20 -08:00
Kelly Brazil
c8fb56c601 formatting 2023-12-10 10:41:09 -08:00
Kelly Brazil
e835227027 doc update 2023-12-10 10:30:05 -08:00
Kelly Brazil
88ffcaee56 update schema. fix no-data output to match other parsers. 2023-12-10 10:29:58 -08:00
Kelly Brazil
a9ba98847c update _device_pattern regex for Freezing with 100% CPU when parsing Xrandr output - 1.23.6 #490 2023-12-09 17:01:03 -08:00
Kelly Brazil
2630049ab7 possible fix for infinite loop issue 2023-12-09 16:14:27 -08:00
Kelly Brazil
47c7e081f3 doc update 2023-12-09 11:45:26 -08:00
Kelly Brazil
ef7f755614 doc update 2023-12-09 11:41:45 -08:00
Kelly Brazil
32bd7ffbf6 formatting updates 2023-12-09 11:41:22 -08:00
Kelly Brazil
347097a294 add convert_size_to_int function 2023-12-09 11:41:06 -08:00
Kelly Brazil
356857f5d6 rename deb-packages-index to pkg-index-deb 2023-12-09 10:17:48 -08:00
Kelly Brazil
ee12c52291 rename apkindex parser to pkg-index-alpine 2023-12-09 10:03:33 -08:00
Ron Green
0e7ebf4dc1 feat(iftop): add iftop-scanning (#484)
* feat(iftop): add iftop-scanning

this is not even an MVP, but I would like it to exist to allow per client json aggregation

also, a future use is a stream response

* fix typos and test first regex

* add more iftop fun

* Update iftop.py

* add tests and json

Signed-off-by: Ron Green <11993626+georgettica@users.noreply.github.com>

* feat: make work and add tests

Signed-off-by: Ron Green <11993626+georgettica@users.noreply.github.com>

* add completion

* change schema for query looping

* fix: tests

* fix review comments

* feat: add byte parsing

* add no-port to options

* remove completion and format dep

Signed-off-by: Ron Green <11993626+georgettica@users.noreply.github.com>

* Update setup.py

* Update iftop.py

---------

Signed-off-by: Ron Green <11993626+georgettica@users.noreply.github.com>
Co-authored-by: Kelly Brazil <kellyjonbrazil@gmail.com>
2023-12-07 18:22:53 -08:00
Kelly Brazil
f1e0cec9d6 add apkindex parser 2023-12-04 14:01:30 -08:00
Roey Darwish Dror
d96a2a8623 APKINDEX parser (#487) (#491)
* APKINDEX parser (#487)

* Missing space in doc
2023-12-04 13:35:04 -08:00
Hugo van Kemenade
1b1bc46222 Remove redundant Python 2 code (#493)
Co-authored-by: Kelly Brazil <kellyjonbrazil@gmail.com>
2023-12-04 13:03:15 -08:00
Kelly Brazil
d5a8b4eed2 remove deprecated iso-datetime parser 2023-12-04 11:35:37 -08:00
Kelly Brazil
5ddd4f0e86 version bump to 1.24.0 2023-12-04 11:33:04 -08:00
Kelly Brazil
8b94c326de add no data test 2023-12-04 09:59:28 -08:00
Hugo van Kemenade
29b012e66d Add support for Python 3.12 (#492)
Co-authored-by: Kelly Brazil <kellyjonbrazil@gmail.com>
2023-12-04 09:55:07 -08:00
Kelly Brazil
572a3207cd doc update 2023-11-28 11:23:47 -08:00
Kelly Brazil
2a88f2be6b fix mypy issues 2023-11-28 11:21:13 -08:00
Roey Darwish Dror
3de6eac1ad swapon parser (#383) (#489)
* swapon parser

* revert lib

* fix lib

* Added tests

* Fix tests

---------

Co-authored-by: Kelly Brazil <kellyjonbrazil@gmail.com>
2023-11-28 11:15:40 -08:00
Kelly Brazil
f44260603e doc update 2023-11-24 10:38:33 -08:00
Kelly Brazil
1c60f5355e convert one more field to integer 2023-11-24 09:45:56 -08:00
Kelly Brazil
40fa78a966 version bump 2023-11-24 09:44:03 -08:00
Himadri Bhattacharjee
71db67ef49 refactor: acpi parser: adhere code to the happy path to avoid nested branches (#488)
* refactor: acpi parser: keep working code in happy path to avoid nested branches

* fix: use elif for branches marked charging and discharging

---------

Co-authored-by: Kelly Brazil <kellyjonbrazil@gmail.com>
2023-11-24 09:38:10 -08:00
Kelly Brazil
1cd723b48f add tests 2023-11-23 15:19:14 -08:00
Kelly Brazil
82ee4d7b30 add debconf-show parser 2023-11-23 14:52:06 -08:00
Kelly Brazil
dfd19f38f3 doc update 2023-11-23 12:12:05 -08:00
Kelly Brazil
2358c883d0 remove unused type annotation import 2023-11-23 12:07:54 -08:00
Kelly Brazil
79e4f3a761 doc update 2023-11-23 12:05:03 -08:00
Kelly Brazil
5be45622cc Merge branch 'dev' of https://github.com/kellyjonbrazil/jc into dev 2023-11-23 12:01:54 -08:00
Kelly Brazil
5f4136b943 run tests 2023-11-23 12:00:58 -08:00
Kelly Brazil
941bfe2724 update szenius/set-timezone to v1.2 2023-11-23 11:59:12 -08:00
Kelly Brazil
3ed44a26d9 doc update 2023-11-23 11:51:04 -08:00
Kelly Brazil
b7270517bd add tune2fs parser 2023-11-23 11:49:04 -08:00
Kelly Brazil
bf63ac93c6 add Photon linux 2023-11-21 15:01:04 -08:00
Kelly Brazil
1cb80f15c2 add tests 2023-11-21 14:51:37 -08:00
Kelly Brazil
b5c22c6e53 add deb-packages-index parser 2023-11-21 14:40:43 -08:00
Kelly Brazil
7951366117 remove old unused line 2023-11-17 12:06:43 -08:00
Kelly Brazil
c78a4bb655 mount fix for spaces in mountpoint name 2023-11-14 15:17:31 -08:00
Kelly Brazil
8aceda18b9 Merge pull request #483 from wolkenarchitekt/master
#482 Quickfix to parse mount output
2023-11-14 23:07:52 +00:00
Ingo Weinmann
e0c75a9b6b #482 Quickfix to parse mount output 2023-11-14 22:47:56 +01:00
Kelly Brazil
fd283f6cf7 doc update 2023-11-04 16:02:02 -07:00
Kelly Brazil
b881ad4ec0 make blank target null 2023-11-04 15:58:12 -07:00
Kelly Brazil
2fcb32e26f add debian/ubuntu package index support 2023-11-04 15:19:12 -07:00
Kelly Brazil
13a802225b add tests 2023-10-25 16:53:24 -07:00
Kelly Brazil
88649a4e8d doc update 2023-10-25 13:42:19 -07:00
Kelly Brazil
5c6fa5bff6 better header row detection 2023-10-25 13:37:59 -07:00
Kelly Brazil
b70025d6d6 fix for blank target in rule 2023-10-24 16:17:53 -07:00
Kelly Brazil
59b89ecbd4 version bump 2023-10-24 15:24:33 -07:00
Kelly Brazil
8f7502ff0f Merge pull request #479 from kellyjonbrazil/master
sync to dev
2023-10-24 22:22:31 +00:00
Kelly Brazil
249d93f15c Merge pull request #477 from kellyjonbrazil/dev
v1.23.6
2023-10-24 00:57:57 +00:00
Kelly Brazil
b0cf2e2d78 clean up final return 2023-10-23 17:37:53 -07:00
Kelly Brazil
264fcd40ad clear linedata if 'from' found 2023-10-23 17:36:25 -07:00
Kelly Brazil
54def8ef49 doc update 2023-10-23 15:41:11 -07:00
Kelly Brazil
63c271b837 add tests 2023-10-23 15:39:13 -07:00
Kelly Brazil
741b2d1c1d version bump 2023-10-23 15:15:07 -07:00
Kelly Brazil
47d4335890 fix for multi-word remote 2023-10-23 15:14:28 -07:00
Kelly Brazil
81f721f1ab doc update 2023-10-23 14:33:40 -07:00
Kelly Brazil
c4e1068895 move print statements 2023-10-23 14:06:04 -07:00
Kelly Brazil
a77bb4165a fix tests for different xmltodict versions 2023-10-23 12:49:06 -07:00
Kelly Brazil
3cd2dce496 formatting 2023-10-23 08:01:50 -07:00
Kelly Brazil
46a8978740 doc update 2023-10-23 07:54:14 -07:00
Kelly Brazil
3161c48939 fix for older xmltodict library versions 2023-10-23 07:53:39 -07:00
Kelly Brazil
a89a9187f8 version bump 2023-10-23 07:53:16 -07:00
Kelly Brazil
d9e0aa5b93 Merge pull request #475 from kellyjonbrazil/master
Merge pull request #473 from kellyjonbrazil/dev
2023-10-23 14:48:55 +00:00
Kelly Brazil
d298e101e9 Merge pull request #473 from kellyjonbrazil/dev
Dev v1.23.5
2023-10-21 12:23:25 -07:00
Kelly Brazil
cea975d7f1 doc update 2023-10-21 12:12:43 -07:00
Kelly Brazil
1ed69f9e6a doc update and fix tests 2023-10-21 12:09:18 -07:00
Kelly Brazil
ab0e05ec82 only set colors if pygments is installed 2023-10-21 12:01:09 -07:00
Kelly Brazil
c16cce4bf0 add tests 2023-10-13 08:52:14 -07:00
Kelly Brazil
d3489536a1 add "7" as a netstat raw state 2023-10-12 17:25:40 -07:00
Sebastian Uhlik
041050ce28 Fix bug in split when program running on UDP contains space in name (#447)
* Add condition before split.

* Safe detection of 'state' presence.

---------

Co-authored-by: Kelly Brazil <kellyjonbrazil@gmail.com>
2023-10-12 17:21:06 -07:00
pettai
7de1a8a5d6 add more tests (#468)
add all test-cases
2023-10-05 17:09:35 -07:00
Kelly Brazil
d4604743d1 add multiline value support to env parser 2023-10-02 16:30:56 -07:00
Kelly Brazil
0b8fb31298 doc update 2023-10-02 08:35:36 -07:00
Kelly Brazil
dcdd79e28c doc update 2023-10-02 08:34:14 -07:00
Kelly Brazil
5291baeb8e fixup variable names 2023-10-02 08:32:41 -07:00
Kelly Brazil
6867102c66 doc update 2023-10-01 18:13:27 -07:00
Kelly Brazil
36ed2c7e2e add lsb_release parser 2023-10-01 18:12:22 -07:00
Kelly Brazil
4ab0aba9d3 doc update 2023-10-01 17:42:42 -07:00
Kelly Brazil
e643badaf7 add os-release parser 2023-10-01 17:42:00 -07:00
Kelly Brazil
d96e96219e add comment support to xml parser 2023-10-01 11:49:50 -07:00
Kelly Brazil
e42af3353e fix pidstat parsers for -T ALL option 2023-10-01 11:25:56 -07:00
Kelly Brazil
4ec2b16f42 doc fix 2023-09-30 16:18:32 -07:00
Kelly Brazil
0a028456bf add nsd-control parser 2023-09-30 15:45:29 -07:00
pettai
a1f10928e1 Add nsd-control (#454)
* Create nsd_control.py

Init nsd_control.py

* cleanup nsd-control + add test data

- Cleanup nsd-control parser
- Add test data

* add test script

add test script + fix test data

* Update test_nsd_control.py

fix a default test

* Update test_nsd_control.py

nit
2023-09-30 15:36:52 -07:00
Kelly Brazil
eae1d4b89a doc update 2023-09-30 15:34:29 -07:00
Kelly Brazil
d3c7cec333 add host parser 2023-09-30 15:32:27 -07:00
pettai
36fa08d711 Add ISC 'host' support (#450)
* Add ISC 'host' support

Add ISC 'host' command support

* Update host.py

remove leading tab from string

* Add integer conversion

Per request, fix integer conversion

* Cleanup

Cleanup strip()'s

* Add tests

Add two tests for the 'host' parser

* Update test_host.py

nit

---------

Co-authored-by: Kelly Brazil <kellyjonbrazil@gmail.com>
2023-09-30 15:26:03 -07:00
Kelly Brazil
a9958841e4 doc update 2023-09-30 15:23:29 -07:00
Kelly Brazil
504ad81a01 version bump 2023-09-30 15:21:29 -07:00
Kevin Lyter
8bf2f4f4d0 [xrandr] Fix 453 devices issue (#455)
* [xrandr] Fix bug 453, clean up data model

* Fix: 'devices' was originally not a list, just assigned each time it
was parsed. Made that a list and appended to it.
* Removed distinction between unassociated/associated devices
* Added test for @marcin-koziol's problem
* Put tests into separate test methods

* Formatting cleanup

* Backwards compatible type syntax

---------

Co-authored-by: Kelly Brazil <kellyjonbrazil@gmail.com>
2023-09-30 15:19:14 -07:00
Kelly Brazil
805397ea18 doc update 2023-09-30 15:15:29 -07:00
Samson Umezulike
1b3985c2d7 Adds graceful handling of superfluous bits in bit strings (#459)
Co-authored-by: Kelly Brazil <kellyjonbrazil@gmail.com>
2023-09-30 15:12:18 -07:00
Kelly Brazil
f602043642 fix for negative serial numbers 2023-09-30 15:06:28 -07:00
Samson Umezulike
1a1aa8fda3 Adds graceful handling of negative serial numbers in x509 certificates (#445)
Co-authored-by: Kelly Brazil <kellyjonbrazil@gmail.com>
2023-09-30 15:02:55 -07:00
Kelly Brazil
3249a017ae add dest-unreachable test 2023-09-15 12:09:38 -07:00
Kelly Brazil
84f0246b2d move int/float conversions to _process 2023-09-14 18:15:28 -07:00
Kelly Brazil
1c795982b0 add error and corrupted fields to ping-s 2023-09-14 13:03:45 -07:00
Kelly Brazil
c5164b4108 doc update 2023-09-10 15:20:11 -07:00
Kelly Brazil
dc3716ecb3 add errors and corrupted support 2023-09-10 15:18:32 -07:00
Kelly Brazil
c5165ccc21 version bump 2023-09-10 15:18:23 -07:00
José Miguel Guzmán
5b2035e0e6 Add support for corrupted and errors in linux ping. (#442)
* Add support for corrupted and errors in linux ping.

* Fix regular expressions

* Workaround to keep compatibility with current tests

---------

Co-authored-by: Jose Miguel Guzman <jmguzman@whitestack.com>
Co-authored-by: Kelly Brazil <kellyjonbrazil@gmail.com>
2023-08-25 10:31:17 -07:00
Kelly Brazil
5205154aaf add percent_wait to float conversion 2023-08-21 17:18:07 -07:00
Kelly Brazil
f500de3af6 version bump 2023-08-21 17:17:34 -07:00
Kian-Meng Ang
4b028b5080 Fix typos (#440)
Found via `codespell -S ./tests/fixtures -L chage,respons,astroid,unx,ist,technik,ans,buildd`
2023-07-31 08:45:03 -07:00
Kelly Brazil
4cd721be85 Dev v1.23.4 (#439)
* version bump

* fix regex for crlf line endings

* Completed Ip_route parser (#429)

* tests

* Merge pull request #398 from kellyjonbrazil/dev

Dev v1.23.2

* Merge pull request #398 from kellyjonbrazil/dev

Dev v1.23.2

---------

Co-authored-by: Kelly Brazil <kellyjonbrazil@gmail.com>
Co-authored-by: Jjack3032 <julian.jackson@parsons.us>

* formatting

* doc update

* use splitlines

* formatting

* formatting

* Parser for `find` linux command (#434)

* Added find parser and tests for Centos 7.7 and Ubuntu 18.04

* Added a test file, changed logic, and included a case for permission denied returned by find.

* Added a few more lines to the tests

* Changed logic for setting values to null and updated test cases.

* doc update

* doc update

* Added proc_net_tcp parser (#421)

Co-authored-by: Kelly Brazil <kellyjonbrazil@gmail.com>

* clean up net_tcp parser

* add resolve.conf test files

* doc update

* add resolve.conf parser

* doc update

* add sortlist functionality

* add resolve.conf parser tests

* doc update

---------

Co-authored-by: Julian5555 <58196809+Julian5555@users.noreply.github.com>
Co-authored-by: Jjack3032 <julian.jackson@parsons.us>
Co-authored-by: solomonleang <124934439+solomonleang@users.noreply.github.com>
Co-authored-by: AlvinSolomon <41175627+AlvinSolomon@users.noreply.github.com>
2023-07-30 10:08:39 -07:00
Kelly Brazil
d58ca402a7 Merge pull request #432 from kellyjonbrazil/revert-430-find_parser
Revert "Added find parser and tests for Centos 7.7 and Ubuntu 18.04"
2023-06-23 15:40:06 +00:00
Kelly Brazil
5386879040 Revert "Added find parser and tests for Centos 7.7 and Ubuntu 18.04 (#430)"
This reverts commit f19a1f23a9.
2023-06-23 08:39:12 -07:00
solomonleang
f19a1f23a9 Added find parser and tests for Centos 7.7 and Ubuntu 18.04 (#430)
* Added find parser and tests for Centos 7.7 and Ubuntu 18.04

* Added a test file, changed logic, and included a case for permission denied returned by find.

* Added a few more lines to the tests

* Changed logic for setting values to null and updated test cases.
2023-06-23 08:38:56 -07:00
Kelly Brazil
5023e5be4c Dev v1.23.3 (#426)
* make certificate search more robust to different line endings

* use license_files instead of license_file which is deprecated

* version bump

* parsing extra options -e, -o, -p

* fix for extra opts and different field length at option -[aeop]

* test integration for extra opts -e -o -p

* formatting and use ast.literal_eval instead of eval

* doc update

* doc update

* Add a parser to parse mounted encrypted veracrypt volumes (fixes #403)

* update compatibility warning message

* netstat windows parser

* tests

* Windows route parser

* tests

* id should be a string

* add veracrypt parser and docs

* formatting

* doc update

* lsattr parser

* Update test_lsattr.py

* changed keys to lowercase

* changed info

* support missing data for stat

* doc update

* doc update

* doc update

* ensure compatibility warning prints even with no data

* improve compatibility message

* add support for dig +nsid option

* New parser: srt (#415)

* srt parser

* changed the parser to support more complex cases

* doc updates

* Adding certificate request parser (#416)

* Adding certificate request parser

* Adding the CSR type for Windows-style CSR

---------

Co-authored-by: Stg22 <stephane.for.test@gmail.com>

* doc update

* add csr tests

* Last -x (#422)

* Refactored the parser

* last -x support

* doc update

* fix for ping on linux with missing hostname

* allow less strict email decoding with a warning.

* doc update

* use explicit ascii decode with backslashreplace

* doc update

* use jc warning function instead of print for warning message

* last -x shutdown fix (#423)

* inject quiet setting into asn1crypto library

* Parse appearance and modalias lines for mouse devices (fixes #419) (#425)

The bluetoothctl device parser is implemented so that it aborts the parsing
process immediately returning what it has collected so far. This is because
the parser should work in hydrid way to support outputs comming from bluetoothctl
devices and bluetoothctl info calls.

* doc update

* doc update

---------

Co-authored-by: gerd <gerd.augstein@gmail.com>
Co-authored-by: Jake Ob <iakopap@gmail.com>
Co-authored-by: Mevaser <mevaser.rotner@gmail.com>
Co-authored-by: M.R <69431152+YeahItsMeAgain@users.noreply.github.com>
Co-authored-by: Stg22 <46686290+Stg22@users.noreply.github.com>
Co-authored-by: Stg22 <stephane.for.test@gmail.com>
2023-06-21 15:48:23 -07:00
Kelly Brazil
5527d22459 Merge pull request #398 from kellyjonbrazil/dev
Dev v1.23.2
2023-04-30 10:40:21 -07:00
Kelly Brazil
9d567c2e70 python 3.6 fix 2023-04-30 10:13:00 -07:00
Kelly Brazil
39c03a15d5 doc update 2023-04-30 09:34:22 -07:00
Kelly Brazil
5e6d2562f9 add certbot command parser 2023-04-29 16:34:23 -07:00
Kelly Brazil
7009d5a014 fix for incorrect insertion and deletion parsing 2023-04-22 14:04:00 -07:00
Kelly Brazil
42f9ddabb9 change bluetoothctl compatibility 2023-04-21 14:22:23 -07:00
Kelly Brazil
30efb5afc0 fix for multiline description 2023-04-18 11:23:49 -07:00
Kelly Brazil
786dc76c09 fix for battery not charging message 2023-04-17 18:12:57 -07:00
Kelly Brazil
fc48874a5d pytest warning fixes 2023-04-17 15:15:40 -07:00
Kelly Brazil
67164e7b23 fix mypy issues 2023-04-16 18:50:40 -07:00
Kelly Brazil
3db9774ac6 doc update 2023-04-16 11:46:21 -07:00
Kelly Brazil
03aef93d9a Merge pull request #392 from tzeikob/bluetoothctl-parser
Add parser for the bluetoothctl utility
2023-04-16 11:39:54 -07:00
Jake Ob
9b7e3de3ed Fix broken unit tests for the bluetoothctl parser 2023-04-16 20:52:29 +03:00
Jake Ob
291b6b061a Parse numeric fields to their actual numeric value 2023-04-16 20:42:48 +03:00
Jake Ob
08496533e2 Process data only if data is given 2023-04-16 20:19:15 +03:00
Jake Ob
f8dceb5046 Fix minor typo in documentation 2023-04-16 20:15:24 +03:00
Jake Ob
240ed4047f Add parser for the bluetoothctl utility 2023-04-14 18:23:45 +03:00
Kelly Brazil
0bf6f7cd7c fix incorrect variable parsing when wildcard schedule 2023-04-02 13:18:16 -07:00
Kelly Brazil
313bd86e3e doc update 2023-04-02 12:57:56 -07:00
Kelly Brazil
56259d5605 fix for dashes in name 2023-04-02 12:57:50 -07:00
Kelly Brazil
8a4885c1fe Merge pull request #384 from six3six/patch-1
Fix iwconfig re_interface regex
2023-03-31 08:40:00 -07:00
Louis Desplanche
5b06f84917 Fix iwconfig re_interface regex
Small fix of re_interface in iwconfig.py.
When the network SSID contains a "-" character, the network interface was ignored.
2023-03-31 11:15:31 +02:00
Kelly Brazil
37a1428914 Merge pull request #381 from kellyjonbrazil/dev
Dev v1.23.1
2023-03-23 20:16:11 -04:00
Kelly Brazil
bff065daf3 doc update 2023-03-23 16:41:50 -07:00
Kelly Brazil
c60d899f31 ignore non-parser-plugin python files in plugin directory 2023-03-23 16:40:13 -07:00
Kelly Brazil
fb7c390506 add lsusb tests 2023-03-23 06:43:06 -07:00
Kelly Brazil
22afb69573 doc update 2023-03-22 16:47:45 -07:00
Kelly Brazil
be51304c9c add support for CDC MBIM and CDC MBIM Extended 2023-03-22 16:43:57 -07:00
Kelly Brazil
44f83d800f doc update 2023-03-19 12:49:25 -07:00
Kelly Brazil
bf07973d90 doc update 2023-03-19 12:39:28 -07:00
Kelly Brazil
11e94b686c mypy fix 2023-03-18 15:47:19 -07:00
Kelly Brazil
c68bf674a1 add py.typed file to wheel 2023-03-18 15:43:22 -07:00
Kelly Brazil
dbbc310082 Merge pull request #378 from jwilk-forks/proc-status-umask
Make umask optional in /proc/PID/status
2023-03-18 22:37:13 +00:00
Kelly Brazil
e861f4a597 Merge pull request #379 from jwilk-forks/spelling
Fix typo
2023-03-18 22:25:21 +00:00
Kelly Brazil
049e93707c doc update 2023-03-18 15:16:02 -07:00
Kelly Brazil
164294ecb7 add integer and float conversions 2023-03-18 15:14:59 -07:00
Jakub Wilk
22ef489795 fix typo 2023-03-18 11:07:15 +01:00
Jakub Wilk
8f9d650f6c make umask optional in /proc/PID/status
Zombie processes don't have the umask field available.
2023-03-18 10:28:05 +01:00
Kelly Brazil
7e134a63bd add support for the timesync-status option 2023-03-15 06:58:31 -07:00
Kelly Brazil
9b5c25cb5b fix for rtc configured as UTC 2023-03-13 19:47:38 -07:00
Kelly Brazil
894946b207 doc update 2023-03-05 10:07:23 -08:00
Kelly Brazil
92ad2068db version bump 2023-03-05 10:06:54 -08:00
Kelly Brazil
59662a1500 fix for lines that start with tab 2023-03-05 10:04:00 -08:00
Kelly Brazil
125b88a2ca Merge pull request #371 from kellyjonbrazil/master
sync to dev
2023-03-05 17:59:09 +00:00
Kelly Brazil
79fce8c769 doc update 2023-02-27 17:37:49 -08:00
Kelly Brazil
a4a53f8b3b Merge pull request #368 from kellyjonbrazil/dev
Dev v1.23.0
2023-02-27 15:13:57 -08:00
Kelly Brazil
743e1ae90f doc update 2023-02-27 15:01:00 -08:00
Kelly Brazil
dbcff80907 add zpool tests 2023-02-27 13:44:16 -08:00
Kelly Brazil
6e10965aed doc update 2023-02-21 17:19:17 -08:00
Kelly Brazil
0c8c4a9c53 formatting 2023-02-21 17:18:24 -08:00
Kelly Brazil
7632541a1e Merge pull request #365 from tzeikob/xrandr-edid-364
Modify the xrandr parser to extract display model info from EDID #364
2023-02-21 17:04:46 -08:00
Kelly Brazil
a213ad9a85 doc update 2023-02-21 15:50:09 -08:00
Kelly Brazil
15ac5a9004 fix for crontab files with only shortcut entries 2023-02-21 15:44:55 -08:00
Jake Ob
0658668eb0 Fix broken TypedDict compatibility with older versions of python
By missing to declare the Model as a generic dictionary type we cause
the script to fail because the TypedDict is not supported by older
versions of python (e.g. 3.6, 3.7).
2023-02-21 14:43:10 +02:00
Kelly Brazil
ccef69ac37 add ubuntu16 tests 2023-02-20 12:04:45 -08:00
Kelly Brazil
64676fda2e fix for older linux style output 2023-02-20 11:56:20 -08:00
Jake Ob
6ea2d776ae Add unit tests for xrandr --properties outputs 2023-02-17 16:25:41 +02:00
Jake Ob
98ced9616c Modify xrandr parser to extract model info from EDID (#364)
This change will make the xrandr parser to work also with outputs from
`xrandr --properties`, where the option `--properties` enables xrandr
to return the EDID data of each output device. The parser is expected
to remain backward compatible for regular xrandr outputs. The extra info
that will be added to every device object is:

```json
{
  "model_name": "str",
  "product_id": "str",
  "serial_number": "str"
}
```

Because the EDID data come encoded in a hexadecimal string, we have to
decode them by vendoring the pyedid (https://github.com/jojonas/pyedid) library.

Fixes: #364
2023-02-17 16:09:50 +02:00
Kelly Brazil
ae19183803 add test for is_current fix 2023-02-13 18:17:14 -08:00
Kelly Brazil
8536514baf add test for output with extra spaces that caused infinite loops 2023-02-13 18:09:10 -08:00
Kelly Brazil
81982a9f79 doc updagte 2023-02-12 18:30:31 -08:00
Kelly Brazil
1acbb2f096 Merge pull request #361 from tzeikob/reflect-360
Move the reflect value in its own key (xrandr) #360
2023-02-12 18:28:37 -08:00
Jake Ob
80fb4d40a5 Add unit test to assert devices in reflect mode 2023-02-09 21:22:34 +02:00
Kelly Brazil
c972dd1aac Merge pull request #362 from jpmat296/master
Improve accepted formats in proc_pid_smaps
2023-02-09 09:51:26 -08:00
Jean-Pierre Matsumoto
9dde65c25c Improve accepted formats in proc_pid_smaps 2023-02-07 14:57:15 +01:00
Jake Ob
7486b0c7cd Move the reflect value in its own key (xrandr)
Currently the reflect value of a device is included in the rotation
key as a combination of both rotation and reflection (e.g. normal X axis).
With this modification we move the reflection value to its own key in the
JSON document like so:

```json
{
  ...
  "rotation": "...",
  "reflection": "...,
  ...
}
```

Fixes: issue #360
2023-02-07 13:02:21 +02:00
Kelly Brazil
5c7a520a0b formatting 2023-02-05 13:04:32 -08:00
Kelly Brazil
193ddf71f8 fix typos 2023-02-05 09:52:59 -08:00
Kelly Brazil
c46fe9816c doc update 2023-02-05 09:49:32 -08:00
Kelly Brazil
aada5f0794 add int conversions 2023-02-04 19:04:43 -08:00
Kelly Brazil
5c7bf363a6 add schema and docs 2023-02-04 18:51:31 -08:00
Kelly Brazil
00b74be540 version bump 2023-02-04 17:37:56 -08:00
Kelly Brazil
96cb01f57a fix zpool-status for multi-line fields 2023-02-04 17:37:48 -08:00
Kelly Brazil
adf5f403ae regex fix for infinite loop? 2023-02-04 14:37:03 -08:00
Kelly Brazil
1c09c95c71 doc update 2023-02-04 11:26:41 -08:00
Kelly Brazil
64f442d743 fix for is_current? 2023-02-04 11:20:48 -08:00
Kelly Brazil
cd8d43446b add zpool-status parser 2023-02-02 15:57:15 -08:00
Kelly Brazil
7361eac1a4 formatting 2023-01-31 17:02:04 -08:00
Kelly Brazil
9d41f0a938 doc update 2023-01-31 17:00:42 -08:00
Kelly Brazil
00274c15df add process conversions 2023-01-31 16:52:56 -08:00
Kelly Brazil
d0b8a91f94 add zpool-iostat parser 2023-01-31 11:59:19 -08:00
Kelly Brazil
098e8dbef6 doc update 2023-01-31 11:59:06 -08:00
Kelly Brazil
ec29b8bbc6 add test for acpi fix for never fully discharge state 2023-01-31 09:51:23 -08:00
Kelly Brazil
1d8f83b8c6 add ver parser tests 2023-01-31 09:44:23 -08:00
Kelly Brazil
12c4419c6a doc update 2023-01-31 08:30:37 -08:00
Kelly Brazil
b134c53f33 add ssh_conf tests 2023-01-31 08:29:43 -08:00
Kelly Brazil
23ff19fdb5 add slicer tests 2023-01-31 06:48:37 -08:00
Kelly Brazil
7a43ba631b fix tests for slice info metadata 2023-01-30 08:59:54 -08:00
Kelly Brazil
2beb26f3e3 add slice info to Metadata output 2023-01-30 08:52:22 -08:00
Kelly Brazil
4b55f49e99 formatting 2023-01-30 08:11:21 -08:00
Kelly Brazil
c0239a771c clarify parser argument quote wrapping code 2023-01-27 16:28:55 -08:00
Kelly Brazil
bc4738e900 don't quote spaces in command arguments 2023-01-27 15:58:01 -08:00
Kelly Brazil
1c76caf59b formatting 2023-01-27 15:22:36 -08:00
Kelly Brazil
0679951d4a add <nobr> tag 2023-01-27 15:17:41 -08:00
Kelly Brazil
df7aee9e4b doc update 2023-01-27 14:47:08 -08:00
Kelly Brazil
a8d97a2521 add slice info to help and doc update 2023-01-27 11:41:21 -08:00
Kelly Brazil
9370b336d8 add slice to man page 2023-01-27 11:31:16 -08:00
Kelly Brazil
118f98222a change restapi link 2023-01-27 08:15:53 -08:00
Kelly Brazil
dc997821f4 ad jc-api demo link 2023-01-27 08:12:07 -08:00
Kelly Brazil
aef0fdb435 formatting 2023-01-27 08:02:07 -08:00
Kelly Brazil
21ee3c0e78 clarify slice usage 2023-01-27 08:01:32 -08:00
Kelly Brazil
d6c665f74b add both negative slice description 2023-01-26 17:06:07 -08:00
Kelly Brazil
79305a50d0 formatting 2023-01-26 16:59:15 -08:00
Kelly Brazil
e758aa41ef formatting 2023-01-26 16:49:27 -08:00
Kelly Brazil
910cb34b09 formatting 2023-01-26 16:49:09 -08:00
Kelly Brazil
976fea4eb2 Formatting 2023-01-26 16:46:54 -08:00
Kelly Brazil
81447ec9e6 formatting 2023-01-26 16:44:26 -08:00
Kelly Brazil
61b8e9f7b5 doc update 2023-01-26 16:24:32 -08:00
Kelly Brazil
8e86a04448 add slicing info 2023-01-26 16:18:54 -08:00
Kelly Brazil
f23715a783 formatting 2023-01-26 08:53:50 -08:00
Kelly Brazil
fa693a8bb1 formatting 2023-01-26 08:53:06 -08:00
Kelly Brazil
103168c25b add integer conversions 2023-01-26 08:48:59 -08:00
Kelly Brazil
ae7ed4eec5 doc update 2023-01-26 08:48:46 -08:00
Kelly Brazil
caa516db72 formatting 2023-01-25 16:59:49 -08:00
Kelly Brazil
f05c3d6113 docstring update 2023-01-25 16:57:15 -08:00
Kelly Brazil
5d872b1535 docstring update: add see also section. 2023-01-25 16:30:20 -08:00
Kelly Brazil
1559cd9f5c fixup patch numbers 2023-01-25 16:13:33 -08:00
Kelly Brazil
a5a87c7da1 add ver parser 2023-01-25 15:58:27 -08:00
Kelly Brazil
0e6cec62c1 remove unneeded slicer syntax check 2023-01-23 16:53:06 -08:00
Kelly Brazil
3bb1d89165 fix multiple slicer warnings 2023-01-23 16:50:41 -08:00
Kelly Brazil
f5f5f102fb full functioning slicer feature 2023-01-23 16:13:17 -08:00
Kelly Brazil
0c82fe7e4d add slicer functionality 2023-01-23 13:57:48 -08:00
Kelly Brazil
13ffe8a84d doc update 2023-01-22 12:44:16 -08:00
Kelly Brazil
4c6eebaa33 doc update 2023-01-22 10:37:27 -08:00
Kelly Brazil
f8fbb2dce2 use derivative of sshd_conf parser instead of paramiko 2023-01-22 10:36:29 -08:00
Kelly Brazil
dbfe682674 fix for never fully discharging state 2023-01-22 08:57:50 -08:00
Kelly Brazil
2a148d44a1 add host to objects 2023-01-21 17:00:22 -08:00
Kelly Brazil
0648d2e9e3 don't interpolate local host values 2023-01-21 16:37:27 -08:00
Kelly Brazil
ac9128fa0c add ssh-conf parser 2023-01-21 13:10:45 -08:00
Kelly Brazil
4d7a872670 version bump 2023-01-21 10:56:45 -08:00
Kelly Brazil
07f716b254 Merge pull request #355 from kellyjonbrazil/master
sync to dev
2023-01-21 10:53:03 -08:00
Kelly Brazil
b0d6a7307c Merge pull request #353 from kellyjonbrazil/dev
Dev v1.22.5
2023-01-11 14:39:13 -08:00
Kelly Brazil
53ad793ff8 doc update 2023-01-11 11:17:47 -08:00
Kelly Brazil
ea4332d8e4 add ini-dup tests 2023-01-10 16:06:05 -08:00
Kelly Brazil
5c5ff9324f update multi-line value behavior 2023-01-09 08:31:21 -08:00
Kelly Brazil
2ab6352fdb doc update 2023-01-08 19:54:32 -08:00
Kelly Brazil
56dcbaf40c doc update 2023-01-08 19:53:21 -08:00
Kelly Brazil
029b5abcac add ini-dup parser 2023-01-08 19:46:13 -08:00
Kelly Brazil
32521ac91a doc update 2023-01-08 10:55:48 -08:00
Kelly Brazil
bf88407902 remove special DEFAULT section handling 2023-01-08 10:55:44 -08:00
Kelly Brazil
63cf47db63 doc update 2023-01-06 13:37:34 -08:00
Kelly Brazil
9970866b3b Merge pull request #350 from davemq/arp_aix
AIX ARP support
2023-01-06 13:34:44 -08:00
Dave Marquardt
d61941b276 Merge branch 'dev' into arp_aix 2023-01-06 15:14:39 -06:00
Dave Marquardt
081fdb8026 Updated AIX ARP test comments 2023-01-06 15:13:03 -06:00
Dave Marquardt
f64dfbf79d Update comments about AIX ARP 2023-01-06 15:10:02 -06:00
Dave Marquardt
5fb73f4ad5 Added AIX support for ARP, along with AIX ARP test support 2023-01-06 14:53:50 -06:00
Dave Marquardt
1c16d32420 Added test data for AIX ARP 2023-01-06 14:51:09 -06:00
Kelly Brazil
e367e0d714 doc update 2023-01-06 09:28:13 -08:00
Kelly Brazil
4046649e32 toml tests and doc update 2023-01-06 09:11:00 -08:00
Kelly Brazil
77fcfe439c remove unused list 2023-01-06 08:50:03 -08:00
Kelly Brazil
71d1355419 formatting 2023-01-06 08:36:48 -08:00
Kelly Brazil
d1b270f336 formatting 2023-01-06 08:26:42 -08:00
Dave Marquardt
9190a08332 More AIX permanent ARP entry fixes 2023-01-06 10:25:04 -06:00
Dave Marquardt
3fae50e305 Handle permanent ARP entries on AIX 2023-01-06 10:21:32 -06:00
Dave Marquardt
3582497ed4 Fix interface parsing for incomplete ARP entry on AIX 2023-01-06 10:16:13 -06:00
Dave Marquardt
19a67daabf rewrite check for incomplete ARP entries 2023-01-06 10:12:50 -06:00
Dave Marquardt
02a7e5fd8a Updated ARP incomplete handling for AIX 2023-01-06 10:08:33 -06:00
Dave Marquardt
df72b16022 Start to fix AIX ARP support 2023-01-06 10:00:58 -06:00
Kelly Brazil
61bdc13810 doc update 2023-01-05 17:05:03 -08:00
Kelly Brazil
1350a34316 beautify process function 2023-01-05 16:59:22 -08:00
Kelly Brazil
7cfe68b96a beautify remove_quotes function 2023-01-05 16:55:53 -08:00
Kelly Brazil
7a93a61f54 move unsectioned k/v's to the top level 2023-01-05 15:44:21 -08:00
Kelly Brazil
362977e598 comment unused objects 2023-01-05 14:26:01 -08:00
Kelly Brazil
5cac897beb zipinfo fix for paths with spaces 2023-01-05 12:00:20 -08:00
Kelly Brazil
cad94cc6b3 formatting and doc update 2023-01-05 11:46:14 -08:00
Kelly Brazil
fe4e429e85 Merge pull request #349 from davemq/mount_aix
Add AIX mount support
2023-01-05 11:39:42 -08:00
Kelly Brazil
d83b10e2d5 doc update 2023-01-05 11:27:49 -08:00
Kelly Brazil
bd2a757fcd more refactoring 2023-01-05 11:27:00 -08:00
Dave Marquardt
358b69a4cb Merge branch 'dev' into mount_aix 2023-01-05 11:06:00 -06:00
Dave Marquardt
08821a1454 Removed unneeded imports from mount parser 2023-01-05 10:57:23 -06:00
Kelly Brazil
90277c1d87 formatting 2023-01-05 08:54:40 -08:00
Dave Marquardt
a51e702f77 Added AIX mount test 2023-01-05 10:53:02 -06:00
Dave Marquardt
466e37128b Merge branch 'dev' into mount_aix 2023-01-05 10:32:47 -06:00
Dave Marquardt
f1ea61388f Added AIX mount support 2023-01-05 10:28:01 -06:00
Kelly Brazil
72c11fda3a more refactoring 2023-01-05 08:00:18 -08:00
Kelly Brazil
d6645983ef more refactoring 2023-01-04 20:54:31 -08:00
Kelly Brazil
01e911ecdb remove more type annotations 2023-01-04 19:17:29 -08:00
Kelly Brazil
12c0b3d889 remove more type annotations 2023-01-04 19:13:12 -08:00
Kelly Brazil
c1075e40b7 remove more type hinting for python 3.6 2023-01-04 19:09:41 -08:00
Kelly Brazil
fabe3f01b7 remove type annotations for python 3.6 compatibility 2023-01-04 19:00:49 -08:00
Kelly Brazil
3a2ff61899 fix lsusb for extra hub port info and add videocontrol and videostreaming sections 2023-01-04 18:27:51 -08:00
Kelly Brazil
aeff94d272 add toml parser 2023-01-04 18:26:13 -08:00
Kelly Brazil
c94f5d83fa fix kv and ini parsers to only remove 1 quote from beginning and end 2023-01-03 13:26:52 -08:00
Kelly Brazil
b0756fa0f9 doc update 2023-01-03 13:05:51 -08:00
Kelly Brazil
6c85abd57b doc update 2023-01-03 13:04:13 -08:00
Kelly Brazil
7659ae94bd formatting 2023-01-03 12:59:10 -08:00
Kelly Brazil
e306e81e43 formatting 2023-01-03 12:57:04 -08:00
Kelly Brazil
6d5768b26b simplify code and doc update 2023-01-03 12:55:38 -08:00
Kelly Brazil
cee9f8bf32 remove duplicate code. add tests 2023-01-03 12:44:12 -08:00
Kelly Brazil
b8e2678c01 doc update 2023-01-03 12:30:23 -08:00
Kelly Brazil
b0fe96ed03 doc update 2023-01-03 12:28:26 -08:00
Kelly Brazil
bb65ec380b separate kv and ini parsers. add fake top-level section in ini files that are missing it. 2023-01-03 12:11:05 -08:00
Kelly Brazil
ae6248227b version bump 2023-01-03 11:53:57 -08:00
Kelly Brazil
36ce3c791d Merge pull request #343 from kellyjonbrazil/dev
Dev v1.22.4
2022-12-30 13:29:57 -08:00
Kelly Brazil
5d639db5a8 Merge branch 'master' into dev 2022-12-30 13:24:24 -08:00
Kelly Brazil
63161ffdbb doc update 2022-12-30 13:11:54 -08:00
Kelly Brazil
cf11c71831 move import to except block 2022-12-30 11:53:09 -08:00
Kelly Brazil
048f8c1f4b formatting 2022-12-30 11:49:20 -08:00
Kelly Brazil
b6b42d9071 doc update 2022-12-30 11:46:40 -08:00
Kelly Brazil
d43863ee9f delete the tempfile after use 2022-12-30 11:32:14 -08:00
Kelly Brazil
177d10577f create NamedTemporaryFile with delete=False for Windows compatibilty 2022-12-30 11:17:52 -08:00
Kelly Brazil
47d8e163de patch for windows compatibility: can only open tempfile once 2022-12-30 11:06:45 -08:00
Kelly Brazil
e49c621e59 try writing to file as bytes for windows compatibility 2022-12-30 10:44:46 -08:00
Kelly Brazil
5e32a6d828 fix for python 3.10+ compatibility 2022-12-30 10:37:12 -08:00
Kelly Brazil
b1358a7eca add nextstep plist support. using the pbPlist library 2022-12-30 10:27:03 -08:00
Kelly Brazil
ba89092e12 formatting 2022-12-29 14:52:33 -08:00
Kelly Brazil
f855420a82 doc update 2022-12-29 09:25:31 -08:00
Kelly Brazil
1589a81945 fix issue with text serial numbers in certificates 2022-12-28 21:59:38 -08:00
Kelly Brazil
eec2583cb2 formatting 2022-12-27 15:59:43 -08:00
Kelly Brazil
481c6a8de2 doc update 2022-12-27 14:01:03 -08:00
Kelly Brazil
68717e8493 add parser metadata tags and category view to help 2022-12-27 13:59:10 -08:00
Kelly Brazil
c524d37136 use ubuntu-20.04 instead of latest for python 3.6 2022-12-23 10:25:12 -08:00
Kelly Brazil
6674f549f2 version bumps and doc update 2022-12-23 10:14:19 -08:00
Kelly Brazil
ba371ec730 fix proc signature for pid_stat so hack comm names with parenthesis are handled correctly. 2022-12-23 10:08:19 -08:00
Kelly Brazil
44d1d52426 fix test for python 3.6 2022-12-23 09:40:26 -08:00
Kelly Brazil
edcca4fb96 remove re type annotations for python 3.6 compatibility 2022-12-23 09:23:51 -08:00
Kelly Brazil
6fbf9458d1 Merge branch 'dev' of https://github.com/kellyjonbrazil/jc into dev 2022-12-23 09:21:29 -08:00
Kelly Brazil
a476e4639b force test 2022-12-23 09:21:27 -08:00
Kelly Brazil
5534a1c755 change to ubuntu-20.04 for python 3.6 tests 2022-12-23 09:20:32 -08:00
Kelly Brazil
c45518db70 Merge branch 'dev' of https://github.com/kellyjonbrazil/jc into dev 2022-12-23 09:17:44 -08:00
Kelly Brazil
55480c059a python 3.6 compatibility: remove re.Match type annotation 2022-12-23 09:17:42 -08:00
Kelly Brazil
04a2af8681 add python 3.6 to tests 2022-12-23 09:14:19 -08:00
Kelly Brazil
71f672a0e0 add python 3.6 to tests 2022-12-23 09:13:00 -08:00
Kelly Brazil
33c40874fa version bump and add iwconfig parser 2022-12-23 09:12:09 -08:00
Kelly Brazil
b3ced64672 Merge pull request #334 from vrince/iwconfig-parser
add new iwconfig parser
2022-12-23 09:00:22 -08:00
Thomas Vincent
a60bf00d54 iwconfig: add test with many interface 2022-12-21 17:25:57 -05:00
Thomas Vincent
8d9a2744af iwconfig: add example in the docstring 2022-12-21 17:15:25 -05:00
Thomas Vincent
bcd7bac950 iwconfig: add to parser list + move test fixture to generic folder 2022-12-21 17:12:20 -05:00
Thomas Vincent
e996b3a9f6 add iwconfig raw vs process + tests 2022-12-19 22:36:48 -05:00
Thomas Vincent
e207cccdc5 fix copy/paste mess in regex 2022-12-19 22:23:10 -05:00
Thomas Vincent
9776dd1082 add new iwconfig parser 2022-12-19 22:13:58 -05:00
Kelly Brazil
bcff00799f Merge pull request #328 from kellyjonbrazil/dev
Dev v1.22.3
2022-12-16 15:31:16 -06:00
Kelly Brazil
0dc76621bc doc update 2022-12-16 12:54:07 -08:00
Kelly Brazil
1040c5706f split prefix and ports. remove utc timestamps 2022-12-14 11:55:46 -08:00
Kelly Brazil
265d08e3bd doc update 2022-12-13 17:32:12 -08:00
Kelly Brazil
491fce7052 add openvpn-status.log file parser 2022-12-13 17:31:05 -08:00
Kelly Brazil
3404bc4840 add pgpass tests 2022-12-13 14:57:22 -08:00
Kelly Brazil
064e3f6ac0 try changing test dates for windows compatibility 2022-12-13 14:11:12 -08:00
Kelly Brazil
71f0c4f9da doc update 2022-12-13 13:46:33 -08:00
Kelly Brazil
18143608dc doc update 2022-12-13 13:30:50 -08:00
Kelly Brazil
83a6d92449 fix tests for additional timestamps 2022-12-13 13:30:31 -08:00
Kelly Brazil
ac1f690c54 add epoch timestamps 2022-12-13 13:29:54 -08:00
Kelly Brazil
b063f1bfb4 add google big table time format 2022-12-13 13:10:34 -08:00
Kelly Brazil
4c5caa7b86 add iso attribute to timestamp 2022-12-13 12:47:31 -08:00
Kelly Brazil
85edda6e5f Merge branch 'dev' of https://github.com/kellyjonbrazil/jc into dev 2022-12-13 12:15:28 -08:00
Kelly Brazil
6e1a4a103c formatting and typing fixes 2022-12-13 12:13:27 -08:00
Kelly Brazil
2879c084e5 doc update 2022-12-13 09:01:13 -08:00
Kelly Brazil
4ecc94e531 formatting and typing fixes 2022-12-13 09:01:04 -08:00
Kelly Brazil
b8ef583b93 Merge pull request #327 from graipher/master
Add parser for cbt
2022-12-13 10:40:46 -06:00
Andreas Weiden
fd61e19135 Add raw schema 2022-12-12 19:48:33 +01:00
Andreas Weiden
79011465af Fix docstring 2022-12-12 19:46:45 +01:00
Andreas Weiden
27acedf8b7 Add newlines at end of files 2022-12-12 15:43:27 +01:00
Andreas Weiden
532c37140c Move test stuff to fixtures 2022-12-12 15:33:40 +01:00
Andreas Weiden
7f4a951065 Add parser to table in readme 2022-12-12 15:18:39 +01:00
Andreas Weiden
b9fb7fad9c Add parser for cbt 2022-12-12 15:10:59 +01:00
Kelly Brazil
be85d78f55 doc update 2022-12-05 14:54:23 -08:00
Kelly Brazil
23e02090e0 add pgpass parser 2022-12-05 14:43:48 -08:00
Kelly Brazil
50f2a811ad doc update 2022-12-05 12:43:45 -08:00
Kelly Brazil
28ee448c44 remove unneeded type ignore comments 2022-12-05 12:42:55 -08:00
Kelly Brazil
688a2099b5 relax JSONDictType - unions and Dicts cause a lot of friction 2022-12-05 12:15:35 -08:00
Kelly Brazil
6f0a53ed02 fix doc title 2022-12-02 16:10:00 -08:00
Kelly Brazil
8a14de663e doc update 2022-12-02 15:16:46 -08:00
Kelly Brazil
09344e938a add lane info lines 2022-12-02 15:16:07 -08:00
Kelly Brazil
bf41140322 fix tests for missing ipv6 addresses 2022-12-02 11:16:13 -08:00
Kelly Brazil
689a85db9b fix for missing ipv6 addresses and scope_id 2022-12-02 11:09:17 -08:00
Kelly Brazil
5e0d206e7a minor cleanup 2022-11-22 13:18:08 -08:00
Kelly Brazil
61addd7950 doc update 2022-11-22 13:12:40 -08:00
Kelly Brazil
60bb9e2aa9 doc update 2022-11-22 13:11:41 -08:00
Kelly Brazil
842fbbab64 formatting 2022-11-22 13:11:10 -08:00
Kelly Brazil
bbd227caf4 tighten up blank line checking 2022-11-22 13:10:58 -08:00
Kelly Brazil
975b4f5e4f add clf-s parser tests 2022-11-22 13:10:15 -08:00
Kelly Brazil
06840931ba doc update 2022-11-21 16:54:42 -08:00
Kelly Brazil
9f4327f517 add clf-s streaming parser 2022-11-21 16:54:13 -08:00
Kelly Brazil
3f13c70dfa formatting 2022-11-21 12:12:16 -08:00
Kelly Brazil
26f8803b23 add support for unparsable lines 2022-11-21 12:09:19 -08:00
Kelly Brazil
60f1e79b2f fix clf request string parsing and add tests 2022-11-21 11:00:58 -08:00
Kelly Brazil
5ab2ebe45a add CLF timestamp support 2022-11-21 09:27:37 -08:00
Kelly Brazil
9c8fe80d6d add more processing and timestamp 2022-11-21 09:27:21 -08:00
Kelly Brazil
1e7e22330f doc update 2022-11-20 20:45:22 -08:00
Kelly Brazil
7244868fbd initial common log format parser 2022-11-20 20:43:49 -08:00
Kelly Brazil
86ed39ecdd tighten up efi split 2022-11-18 16:19:55 -08:00
Kelly Brazil
94d87b726f add efi partition split 2022-11-18 14:20:18 -08:00
Kelly Brazil
0984a1ec26 fix git-log tests and docs 2022-11-18 13:54:59 -08:00
Kelly Brazil
de5da060ce Merge pull request #322 from adamwolf/git-log-blank-author
Fix git log parsing with empty name or email
2022-11-18 13:18:06 -06:00
Kelly Brazil
592435572c Merge branch 'dev' of https://github.com/kellyjonbrazil/jc into dev
add in PR 323
2022-11-18 11:11:57 -08:00
Kelly Brazil
3172a18a46 Merge pull request #323 from kianmeng/fix-typos
Fix typos
2022-11-18 13:05:36 -06:00
Kelly Brazil
7f1c57b89c version bump 2022-11-17 13:39:59 -06:00
Kian-Meng Ang
39555a48b5 Fix typos
Found via `codespell -S ./tests/fixtures -L
chage,ro,ist,ans,unx,respons,technik`
2022-11-16 10:01:58 +08:00
Adam Wolf
e4cdfa13ca Fix git log parsing with empty name or email
Sometimes, folks leave their name or email blank in on their
git commits.  Previously, a blank name crashed the git log
parser.
2022-11-11 13:33:01 -06:00
Kelly Brazil
cb4011bc03 formatting 2022-11-08 14:23:32 -08:00
Kelly Brazil
299b0faf7c Merge pull request #319 from kellyjonbrazil/dev
Dev v1.22.2
2022-11-08 16:32:03 +00:00
Kelly Brazil
2ffd698c03 update du docs 2022-11-08 08:13:41 -08:00
Kelly Brazil
dde54690fc Merge pull request #318 from kellyjonbrazil/master
sync to dev
2022-11-08 16:07:56 +00:00
Kelly Brazil
8d03055b34 add tests 2022-11-07 16:41:13 -08:00
Kelly Brazil
8a850be857 doc update 2022-11-07 13:26:16 -08:00
Kelly Brazil
2a530712cf add os-prober parser 2022-11-07 13:23:55 -08:00
Kelly Brazil
fd22c7dc3a add git-ls-remote parser 2022-11-07 13:02:55 -08:00
Kelly Brazil
b884f6aacc doc update 2022-11-07 10:44:37 -08:00
Kelly Brazil
ce680d4082 add cidr-style freebsd ipv4 support and freebsd options 2022-11-07 10:40:07 -08:00
Kelly Brazil
644d3f350d add more bsd tests 2022-11-06 12:12:07 -08:00
Kelly Brazil
0144863d33 new ifconfig parser with additional fields. tests passing 2022-11-06 12:04:34 -08:00
Kelly Brazil
a6b56519a2 add more bsd fields to ifconfig 2022-11-05 18:47:44 -07:00
Kelly Brazil
0a71caf9cd formatting for regexes 2022-11-05 17:12:50 -07:00
Kelly Brazil
35e74328c4 tests passing for ifconfig 2022-11-05 16:36:31 -07:00
Kelly Brazil
e46ac0ff7e initial commit of new ifconfig parser 2022-11-05 12:13:01 -07:00
Kelly Brazil
17fe6c7691 semver tests and doc update 2022-11-04 16:03:39 -07:00
Kelly Brazil
01ca7a69c4 formatting 2022-11-04 15:24:34 -07:00
Kelly Brazil
6d04db6113 add semver parser 2022-11-04 15:17:47 -07:00
Kelly Brazil
7c899abb15 add support for multiple include paths 2022-11-04 14:42:04 -07:00
Kelly Brazil
89d4df2a05 document ifconfig limitations and recommend using ip 2022-11-04 09:25:17 -07:00
Kelly Brazil
71c8364f80 doc fix 2022-11-04 09:19:42 -07:00
Kelly Brazil
214cd6b9e0 Merge pull request #310 from villesinisalo/readme_arch
Readme: recommend plain Pacman on Arch
2022-11-03 15:34:19 +00:00
Ville Sinisalo
73c280de3a use plain Pacman on Arch 2022-11-03 11:29:06 +02:00
Kelly Brazil
23e1dd3e35 use dict constructor for xmltodict to suppress !!omap comments in YAML output 2022-11-02 12:00:45 -07:00
Kelly Brazil
2b060aae0d clean up raw/processed logic 2022-11-01 19:53:44 -07:00
Kelly Brazil
186ad73651 add raw option to xml parser for _ attribute prefix 2022-11-01 18:09:05 -07:00
Kelly Brazil
de7a010f62 update test templates 2022-11-01 17:01:21 -07:00
Kelly Brazil
ac1bcd2918 doc update 2022-11-01 15:28:50 -07:00
Kelly Brazil
a2e6243282 doc update and additional tests 2022-11-01 13:50:01 -07:00
Kelly Brazil
01f92ced81 add docs and tests for findmnt 2022-11-01 13:15:31 -07:00
Kelly Brazil
b493bcf4fa update type annotations 2022-10-31 17:37:01 -07:00
Kelly Brazil
f6ee30be20 formatting 2022-10-31 17:30:51 -07:00
Kelly Brazil
50da124ea7 initial findmnt parser 2022-10-31 17:22:56 -07:00
Kelly Brazil
5e22f9e2bd formatting 2022-10-31 10:29:43 -07:00
Kelly Brazil
a384eb4c15 add sshd_conf tests 2022-10-31 09:32:58 -07:00
Kelly Brazil
dc4620eeb2 doc update 2022-10-31 09:22:39 -07:00
Kelly Brazil
d7cfa38eee ignore Match blocks 2022-10-28 16:36:52 -07:00
Kelly Brazil
a27110ebe5 formatting 2022-10-28 15:25:55 -07:00
Kelly Brazil
f5988527fb add sshd_conf parser 2022-10-28 15:15:02 -07:00
Kelly Brazil
c405309742 allow debug of exceptions 2022-10-28 15:14:53 -07:00
Kelly Brazil
747d12224f allow parser_info and get_help to use module objects as input 2022-10-28 10:36:54 -07:00
Kelly Brazil
2b621ab68e use exceptions instead of signal handlers to catch piperror and sigint 2022-10-28 10:11:19 -07:00
Kelly Brazil
8689865d31 fix exit on interrupt exit code. also add message to stderr 2022-10-27 11:23:43 -07:00
Kelly Brazil
358324533d doc update 2022-10-26 15:39:32 -07:00
Kelly Brazil
bc5821e69f force ci tests 2022-10-26 15:36:22 -07:00
Kelly Brazil
d5b478c968 bump checkout and setup-python versions 2022-10-26 15:35:41 -07:00
Kelly Brazil
368eba1826 bump checkout and setup-python versions 2022-10-26 15:34:46 -07:00
Kelly Brazil
6cffb449f4 Merge branch 'dev' of https://github.com/kellyjonbrazil/jc into dev 2022-10-26 15:23:35 -07:00
Kelly Brazil
d79d9c7f13 simplify return 2022-10-26 15:21:37 -07:00
Kelly Brazil
179822b994 add python 3.11 2022-10-26 15:18:33 -07:00
Kelly Brazil
ba369a0b73 add python 3.11 2022-10-26 15:18:04 -07:00
Kelly Brazil
6a5251f0ef doc update 2022-10-25 15:50:45 -07:00
Kelly Brazil
004fd74748 add type annotations 2022-10-25 15:21:42 -07:00
Kelly Brazil
e8d6d4c080 relax input_type_check to allow object argument 2022-10-25 15:21:26 -07:00
Kelly Brazil
8644f70db4 fix typos 2022-10-25 13:46:22 -07:00
Kelly Brazil
72f233b186 version bump 2022-10-25 11:53:08 -07:00
Kelly Brazil
fc85950a73 doc update 2022-10-25 11:49:02 -07:00
Kelly Brazil
fd5cbbb4d5 add csv utf-8 bom tests 2022-10-25 11:46:31 -07:00
Kelly Brazil
888b6bd6d5 fix for UTF-8 csv files with leading BOM bytes 2022-10-25 11:18:22 -07:00
Kelly Brazil
81ea83064c Merge pull request #306 from kellyjonbrazil/dev
Dev v1.22.1
2022-10-24 16:30:36 +00:00
Kelly Brazil
45859b01e5 doc update 2022-10-24 09:17:09 -07:00
Kelly Brazil
5b8f166169 doc update 2022-10-24 09:15:58 -07:00
Kelly Brazil
7e045ba7b0 doc update 2022-10-24 09:14:01 -07:00
Kelly Brazil
6247975ee6 update jc-web link to render 2022-10-23 13:20:50 -07:00
Kelly Brazil
297451230c lspci docs and tests 2022-10-23 09:15:23 -07:00
Kelly Brazil
754d555768 doc update 2022-10-21 13:09:13 -07:00
Kelly Brazil
b61a91f82d add pci-ids and udevadm tests 2022-10-21 12:57:28 -07:00
Kelly Brazil
1ac7a724bd integer conversions 2022-10-21 12:45:19 -07:00
Kelly Brazil
2fcf46505c add schema, typing, and doc update 2022-10-21 12:44:57 -07:00
Kelly Brazil
fdec4f08c0 add schema docs for pci-ids 2022-10-21 11:50:06 -07:00
Kelly Brazil
076c197385 more explicit type annotations 2022-10-21 10:56:10 -07:00
Kelly Brazil
3432e830f2 doc update 2022-10-19 13:46:32 -07:00
Kelly Brazil
14a237749c type annotation cleanup 2022-10-19 13:32:16 -07:00
Kelly Brazil
1559c4751e type annotate decorator function 2022-10-19 12:02:12 -07:00
Kelly Brazil
af7c4ce8ec doc update 2022-10-19 08:33:09 -07:00
Kelly Brazil
5763ce6160 Don't get too fancy with dict type annotations 2022-10-19 08:30:09 -07:00
Kelly Brazil
d7ca6caae8 use jc_types 2022-10-18 15:46:29 -07:00
Kelly Brazil
2c4f232aaa use jc_types 2022-10-18 15:45:29 -07:00
Kelly Brazil
bddfa71fa6 use object for typing since these functions accept other types 2022-10-18 15:44:53 -07:00
Kelly Brazil
f537ab058b use Tuple for <3.9 compatibility 2022-10-18 11:27:12 -07:00
Kelly Brazil
1b44b5b05a use typing Tuple for <3.9 compatibility 2022-10-18 11:24:55 -07:00
Kelly Brazil
f6e971c652 fix metadata return type 2022-10-18 11:04:08 -07:00
Kelly Brazil
dfa7a71f53 move custom types to jc_types 2022-10-18 11:01:59 -07:00
Kelly Brazil
3639e02843 doc update 2022-10-18 09:37:10 -07:00
Kelly Brazil
27b6e79c8a ignore mocking typing errors 2022-10-18 09:36:17 -07:00
Kelly Brazil
f370151b54 make iso_datetime deprecated only. no need to make hidden. 2022-10-18 09:35:59 -07:00
Kelly Brazil
597a8f468e normalize show_hidden and show_deprecated to be False by default 2022-10-18 09:35:24 -07:00
Kelly Brazil
8bd7a00410 add py.typed to package 2022-10-18 09:14:43 -07:00
Kelly Brazil
4867052972 fix AboutJCType 2022-10-15 18:27:55 -07:00
Kelly Brazil
688c3a34f6 define CustomColorType 2022-10-15 18:21:53 -07:00
Kelly Brazil
e357b27433 more granular type annotations 2022-10-15 17:53:02 -07:00
Kelly Brazil
dd70bf92f3 doc update 2022-10-15 14:43:45 -07:00
Kelly Brazil
0a97523928 doc update 2022-10-15 14:36:35 -07:00
Kelly Brazil
f67bd02283 More granular type annotations 2022-10-15 14:34:09 -07:00
Kelly Brazil
ef1055a9b6 more granular type annotations 2022-10-15 14:06:38 -07:00
Kelly Brazil
cd970b5871 TypedDict fixup for older python versions 2022-10-15 13:53:56 -07:00
Kelly Brazil
11b0863a65 Use TypedDict for more granular typing 2022-10-15 13:44:44 -07:00
Kelly Brazil
5b8cb497de add more type annotations 2022-10-14 17:28:34 -07:00
Kelly Brazil
38e2addbb6 simplify type annotation for MetadataType 2022-10-14 17:23:38 -07:00
Kelly Brazil
58158ce8b1 add type annotations 2022-10-14 17:12:58 -07:00
Kelly Brazil
5ca281f02e add type annotations 2022-10-14 15:54:26 -07:00
Kelly Brazil
ac39ce6b98 formatting 2022-10-14 14:07:05 -07:00
Kelly Brazil
38fb0a6828 allow parser module as parse() argument 2022-10-14 14:05:16 -07:00
Kelly Brazil
38c41cfaf4 formatting 2022-10-14 13:49:10 -07:00
Kelly Brazil
95ba628ac3 add more type annotations 2022-10-14 13:38:05 -07:00
Kelly Brazil
a53f2ecbaf split slot info 2022-10-12 09:07:17 -07:00
Kelly Brazil
aa1ff55bbe lower-case key names 2022-10-12 08:48:42 -07:00
Kelly Brazil
097d013447 remove bail if a, h, or v in magic_options to keep from confusing behavior 2022-10-11 17:18:55 -07:00
Kelly Brazil
3916623c46 remove multiple ands in conditional 2022-10-11 16:22:10 -07:00
Kelly Brazil
42c50c5fa1 remove unneeded fields 2022-10-11 13:44:28 -07:00
Kelly Brazil
ea515bbecc add show_hidden and show_deprecated tests 2022-10-11 12:19:11 -07:00
Kelly Brazil
9f8006060b deprecated parser support in lib 2022-10-10 16:34:32 -07:00
Kelly Brazil
6cd51c4426 add ip_split field 2022-10-10 12:21:02 -07:00
Kelly Brazil
b1e96bb50c add ip_split field 2022-10-10 12:19:39 -07:00
Kelly Brazil
50d3bda3b7 prefix ids with underscores for easier querying with jq, etc. 2022-10-10 11:37:33 -07:00
Kelly Brazil
3dfa4a1bbc rename iso-datetime to datetime-iso 2022-10-09 11:05:32 -07:00
Kelly Brazil
d1922acfc8 add datetime_iso tests 2022-10-09 11:03:31 -07:00
Kelly Brazil
3947e424e7 rename iso-datetime parser to datetime-iso 2022-10-09 11:00:02 -07:00
Kelly Brazil
25e202a09e doc update 2022-10-08 09:04:21 -07:00
Kelly Brazil
8eab3c1590 fixes for cli refactor 2022-10-08 09:04:04 -07:00
Kelly Brazil
4f294aa0ef add pci_ids parser 2022-10-07 16:36:46 -07:00
Kelly Brazil
81aa09a2e2 initial lspci parser 2022-10-07 13:06:20 -07:00
Kelly Brazil
10fc8cb48d add udevadm parser 2022-10-07 11:28:56 -07:00
Kelly Brazil
186f0708cc doc update 2022-10-07 09:34:42 -07:00
Kelly Brazil
622b3ff9ed add __slots__ to timestamp class 2022-10-06 09:05:36 -07:00
Kelly Brazil
c06963c3d6 doc update 2022-10-04 15:16:35 -07:00
Kelly Brazil
9009313748 move error codes from attribute to global constant 2022-10-04 15:04:00 -07:00
Kelly Brazil
d55a8c3079 clean up exit methods 2022-10-04 14:52:51 -07:00
Kelly Brazil
fee6a61f19 Merge pull request #299 from kellyjonbrazil/cli-refactor
Cli refactor
2022-10-04 21:18:58 +00:00
Kelly Brazil
6f1ef09d2a formatting 2022-10-04 14:13:48 -07:00
Kelly Brazil
cf6c13e605 remove old cli module 2022-10-04 14:07:02 -07:00
Kelly Brazil
028f55910a fix for rare instances when the output is a list of lists (yaml | yaml -> json) 2022-10-04 12:14:32 -07:00
Kelly Brazil
d7684d39a8 set magic_run_command_str in magic_parser 2022-10-04 11:48:36 -07:00
Kelly Brazil
f652ccd4b1 fix tests for env_colors 2022-10-04 11:39:50 -07:00
Kelly Brazil
6be92498bc remove self.env_colors attribute 2022-10-04 11:32:18 -07:00
Kelly Brazil
677e04ab7d cleanup 2022-10-04 11:15:37 -07:00
Kelly Brazil
46fdc457fc fix exit codes 2022-10-04 10:10:59 -07:00
Kelly Brazil
0306b6b73b simplify file open method 2022-10-04 09:38:46 -07:00
Kelly Brazil
c881653d55 simplify the run() method 2022-10-04 09:26:40 -07:00
Kelly Brazil
7650d831e3 add slots 2022-10-03 18:03:06 -07:00
Kelly Brazil
e7a8cc3b8b fix unbuffer 2022-10-03 17:38:55 -07:00
Kelly Brazil
d173b2f237 fix magic parser for cases where standard parser is found 2022-10-03 15:04:18 -07:00
Kelly Brazil
49ba6ed0f2 formatting 2022-10-03 13:13:10 -07:00
Kelly Brazil
2792d05c7f fix magic parser and tests 2022-10-03 13:03:42 -07:00
Kelly Brazil
cacda0f3cc fix cli tests 2022-10-03 12:49:13 -07:00
Kelly Brazil
c420547ff8 simplify monochrome settings 2022-10-03 11:30:29 -07:00
Kelly Brazil
83d388613f cleanup 2022-10-03 08:58:09 -07:00
Kelly Brazil
094b059aea fix magic options 2022-10-02 19:30:50 -07:00
Kelly Brazil
e36a8c627b fix meta timestamp 2022-10-02 18:55:54 -07:00
Kelly Brazil
d341e91290 cleanup 2022-10-02 18:29:02 -07:00
Kelly Brazil
557afc95bd initial working 2022-10-02 18:20:14 -07:00
Kelly Brazil
cb9979ac94 refactor cli 2022-10-02 16:58:20 -07:00
Kelly Brazil
5486957141 version bump 2022-09-29 09:14:53 -07:00
Kelly Brazil
d49155df95 make regex patterns raw strings to reduce pytest warnings 2022-09-28 15:09:06 -07:00
Kelly Brazil
0dd4b5f620 parser version bump 2022-09-28 14:56:37 -07:00
Kelly Brazil
690603bfda fix proc-pid-stat parser for command names with spaces and newlines 2022-09-28 14:55:25 -07:00
Kelly Brazil
b877cc9509 Merge pull request #292 from kellyjonbrazil/dev
Dev v1.22.0
2022-09-27 19:40:54 +00:00
Kelly Brazil
32fddce8fb Add autocompletions 2022-09-27 11:49:41 -07:00
Kelly Brazil
03a2b35846 Add metadata object to empty results list 2022-09-27 11:11:16 -07:00
Kelly Brazil
086cdc559c version bump 2022-09-26 19:50:39 -07:00
Kelly Brazil
97eefe28f1 doc fixes 2022-09-26 19:41:35 -07:00
Kelly Brazil
32019c99f4 check git diff 5 commits back before generating parser doc 2022-09-26 19:21:25 -07:00
Kelly Brazil
f30e15159f finalize shell completions 2022-09-26 16:59:55 -07:00
Kelly Brazil
efd0bae0d6 add /proc shel completions 2022-09-26 15:46:59 -07:00
Kelly Brazil
253aa03e07 fix parser order 2022-09-26 13:32:33 -07:00
Kelly Brazil
32183118de update parser order 2022-09-26 13:30:52 -07:00
Kelly Brazil
6c8ad1139c add proc-net-unix parser and tests 2022-09-26 13:28:21 -07:00
Kelly Brazil
980c2907ad add proc-net-route parser and tests 2022-09-26 13:16:18 -07:00
Kelly Brazil
00129f4b40 doc update 2022-09-26 11:41:23 -07:00
Kelly Brazil
f178bea0d0 add signature detection tests for the proc parser 2022-09-26 11:33:48 -07:00
Kelly Brazil
c583598257 add proc-net-protocols parser and tests 2022-09-26 08:28:48 -07:00
Kelly Brazil
1e14425555 add proc-net-packet parser and tests 2022-09-25 20:14:53 -07:00
Kelly Brazil
4a103927cd add proc-net-netstat parser and tests 2022-09-25 20:00:44 -07:00
Kelly Brazil
ab3dc41358 add proc-net-netlink parser and tests 2022-09-25 19:36:12 -07:00
Kelly Brazil
c9fcd3d203 add proc-net-ipv6-route parser and tests 2022-09-25 18:28:23 -07:00
Kelly Brazil
5186347b48 add proc-net-igmp6 parser and tests 2022-09-25 18:16:54 -07:00
Kelly Brazil
e4a40704b5 add proc-net-igmp parser and tests 2022-09-25 15:19:43 -07:00
Kelly Brazil
fcfbbc6d84 add proc-net-if-inet6 parser and tests 2022-09-25 14:13:20 -07:00
Kelly Brazil
95a38c7712 add proc-net-dev-mcast parser docs and tests 2022-09-25 13:50:42 -07:00
Kelly Brazil
be0f4477bf add proc-net-dev_mcast parser 2022-09-25 13:44:29 -07:00
Kelly Brazil
3ebd897601 add ./docgen all functionality 2022-09-25 13:32:03 -07:00
Kelly Brazil
c60e1e8d7f doc update 2022-09-25 13:08:17 -07:00
Kelly Brazil
eb205562bf force docupdate 2022-09-25 13:07:31 -07:00
Kelly Brazil
83a50bb610 add proc-net-dev parser 2022-09-25 13:02:25 -07:00
Kelly Brazil
331171b826 optimize docgen 2022-09-25 12:38:17 -07:00
Kelly Brazil
1d9965dad6 force doc update 2022-09-25 12:35:23 -07:00
Kelly Brazil
647820c75e optimize docgen 2022-09-25 12:09:12 -07:00
Kelly Brazil
d9c7dde174 add proc_net_arp parser and tests 2022-09-25 12:09:01 -07:00
Kelly Brazil
ef8c688fa1 add proc_pid_status parser and tests 2022-09-25 09:57:48 -07:00
Kelly Brazil
b0f0d02e75 add proc-pid-statm parser and tests 2022-09-25 09:03:38 -07:00
Kelly Brazil
51bc2674bd add proc_pid_stat tests 2022-09-24 17:53:24 -07:00
Kelly Brazil
5fc2008517 add proc_pid_smaps and proc_pid_stat parsers 2022-09-24 17:49:43 -07:00
Kelly Brazil
611e5c7ea2 proc_pid tests 2022-09-24 15:48:22 -07:00
Kelly Brazil
74c8b0678a add proc tests 2022-09-23 17:46:52 -07:00
Kelly Brazil
00afd79858 add test fixtures and tests 2022-09-23 16:58:34 -07:00
Kelly Brazil
45fae976f0 test optimizations 2022-09-23 16:30:43 -07:00
Kelly Brazil
ae9c1746f1 proc-buddyinfo tests 2022-09-23 16:19:52 -07:00
Kelly Brazil
fa1699298b new test templates 2022-09-23 16:19:35 -07:00
Kelly Brazil
c8720b259c optimize tests 2022-09-23 14:02:27 -07:00
Kelly Brazil
113a90a5a0 optimize tests 2022-09-23 10:58:28 -07:00
Kelly Brazil
7c0e43b2e1 pidstat doc update 2022-09-22 14:41:40 -07:00
Kelly Brazil
d51df73f37 pid -H vs -h doc fix 2022-09-22 14:35:53 -07:00
Kelly Brazil
8da203648b update ini examples 2022-09-22 14:28:03 -07:00
Kelly Brazil
12cc670fa0 doc update 2022-09-22 08:50:06 -07:00
Kelly Brazil
88222edb7f ini and kv parser: don't convert keynames to lowercase 2022-09-22 08:39:01 -07:00
Kelly Brazil
7ca0a511d5 doc update 2022-09-22 08:15:55 -07:00
Kelly Brazil
02e08403e3 schema update 2022-09-22 08:15:51 -07:00
Kelly Brazil
e29262b95a version bump for free parser 2022-09-22 08:05:05 -07:00
Kelly Brazil
c449914936 Merge pull request #290 from papparapa/fix-free-w-parse
fix wrong test function name
2022-09-22 15:02:41 +00:00
papparapa
9c290b5e11 Merge branch 'dev' into fix-free-w-parse 2022-09-21 19:58:16 +09:00
papparapa
2d9dcde0e3 fix wrong test function name 2022-09-21 10:36:11 +00:00
Kelly Brazil
da681a463e Merge pull request #289 from papparapa/fix-free-w-parse
fix free -w parse
2022-09-21 00:59:16 +00:00
papparapa
aeb494703e Merge branch 'dev' into fix-free-w-parse 2022-09-21 07:43:07 +09:00
papparapa
da4e3670b1 fix free -w parse 2022-09-20 13:02:14 +00:00
Kelly Brazil
075e2301e4 doc update 2022-09-19 21:00:00 -07:00
Kelly Brazil
df3f94b017 doc update and unbindable fix 2022-09-19 20:54:46 -07:00
Kelly Brazil
3df006fb97 use stdlib int conversion 2022-09-19 20:35:18 -07:00
Kelly Brazil
52d98a1157 doc update and schema update 2022-09-19 20:32:26 -07:00
Kelly Brazil
7c772d3a5a split super_options 2022-09-19 19:58:40 -07:00
Kelly Brazil
a583ecba7b add proc-pid-mountinfo parser (initial) 2022-09-19 19:26:08 -07:00
Kelly Brazil
76e7347ecf add proc-pid-maps parser 2022-09-19 18:33:30 -07:00
Kelly Brazil
e49e6ad179 simplify parse code 2022-09-19 17:54:04 -07:00
Kelly Brazil
859bece921 add proc-pid-io parser 2022-09-19 17:49:18 -07:00
Kelly Brazil
8ffde41fa4 add proc-pid-fdinfo parser 2022-09-19 16:50:01 -07:00
Kelly Brazil
c88bf3e94b fix signature order 2022-09-17 17:50:43 -07:00
Kelly Brazil
e623ceacc8 remove unused _process code 2022-09-17 17:43:21 -07:00
Kelly Brazil
92a044ba9b add proc-zoneinfo parser 2022-09-17 17:39:16 -07:00
Kelly Brazil
906eeefa52 add proc-vmstat parser 2022-09-17 13:34:40 -07:00
Kelly Brazil
e5913cd10d add proc-vmstat parser 2022-09-17 13:33:31 -07:00
Kelly Brazil
52d252f199 formatting 2022-09-17 13:27:50 -07:00
Kelly Brazil
28425cc493 add proc-vmallocinfo parser 2022-09-17 13:26:10 -07:00
Kelly Brazil
a0ae19a8fd formatting 2022-09-17 12:36:22 -07:00
Kelly Brazil
0bebb312dd add proc-version parser 2022-09-17 12:32:15 -07:00
Kelly Brazil
0e35e85753 add proc-uptime parser 2022-09-16 16:14:28 -07:00
Kelly Brazil
bc816bb858 add proc-swaps parser 2022-09-16 16:04:25 -07:00
Kelly Brazil
e171861629 add proc-stat parser 2022-09-16 15:54:13 -07:00
Kelly Brazil
8f539af4ab add proc-softirqs parser 2022-09-16 14:50:14 -07:00
Kelly Brazil
122a4d8f32 add proc-slabinfo parser 2022-09-16 11:40:54 -07:00
Kelly Brazil
8bd935791e add proc-partitions parser 2022-09-16 11:17:02 -07:00
Kelly Brazil
edbae09a17 add proc-pagetypeinfo parser 2022-09-16 11:06:33 -07:00
Kelly Brazil
d115d43559 add proc-pid-numa-maps parser 2022-09-16 10:02:44 -07:00
Kelly Brazil
bdb218cb0f doc update 2022-09-15 16:59:15 -07:00
Kelly Brazil
e4e07b76ec doc update 2022-09-15 16:57:45 -07:00
Kelly Brazil
fd28fea3b6 Merge pull request #287 from kellyjonbrazil/procfile
Procfile
2022-09-15 16:15:30 +00:00
Kelly Brazil
d3c1a73ced doc update 2022-09-15 08:49:12 -07:00
Kelly Brazil
c4de1c53b9 Merge pull request #284 from pbrezina/id
id: support space in names
2022-09-15 15:46:32 +00:00
Kelly Brazil
860167b950 Merge pull request #286 from kellyjonbrazil/master
Sync to dev
2022-09-15 15:44:31 +00:00
Kelly Brazil
4ebde3af5f parser version bump 2022-09-15 08:40:58 -07:00
Pavel Březina
ab5e9a46b4 id: support space in names
id parser did not work correctly if space is present in user or group
name.
2022-09-14 13:36:56 +02:00
Kelly Brazil
c348fa89a9 proc-locks fixes 2022-09-13 20:40:48 -07:00
Kelly Brazil
140dc656a2 initial proc-locks parser 2022-09-13 16:45:33 -07:00
Kelly Brazil
2cad23a7f3 add proc-loadavg parser 2022-09-13 16:27:11 -07:00
Kelly Brazil
9e5c3ae6fb add proc-ioports parser 2022-09-13 14:12:24 -07:00
Kelly Brazil
ab33836637 add proc-iomem parser 2022-09-13 14:04:15 -07:00
Kelly Brazil
cb684fa6de update schema and docs 2022-09-13 13:42:06 -07:00
Kelly Brazil
de6307dc38 remove debug print 2022-09-12 22:59:14 -07:00
Kelly Brazil
da51b2b5a0 initial proc_interrupts parser 2022-09-12 22:43:37 -07:00
Kelly Brazil
03f0984e1d doc update 2022-09-09 17:13:43 -07:00
Kelly Brazil
e1f6007dea add proc-filesystems parser 2022-09-09 17:03:51 -07:00
Kelly Brazil
0508256d28 formatting 2022-09-09 16:32:33 -07:00
Kelly Brazil
993fcd989b add driver_rtc parser 2022-09-09 16:28:34 -07:00
Kelly Brazil
65d647bc0a tighten up diskstats signature 2022-09-09 15:20:38 -07:00
Kelly Brazil
23d5204634 simplify parser by using simple_table_parse 2022-09-09 15:07:44 -07:00
Kelly Brazil
8a239b8f9c add proc-diskstats parser 2022-09-09 14:33:12 -07:00
Kelly Brazil
0a89652ae5 doc update 2022-09-08 16:53:26 -07:00
Kelly Brazil
6d6054d1dc update compatibility 2022-09-08 16:52:26 -07:00
Kelly Brazil
bc9cdadfb0 updated schema 2022-09-07 15:23:48 -07:00
Kelly Brazil
cfe98506a5 fix help examples 2022-09-07 14:25:09 -07:00
Kelly Brazil
c4c159f056 clean up examples 2022-09-07 13:56:16 -07:00
Kelly Brazil
4d761d7e8a add exception handling for file open errors 2022-09-07 12:52:05 -07:00
Kelly Brazil
c1f36f7455 add magic syntax for /proc to docs 2022-09-07 12:31:17 -07:00
Kelly Brazil
c976c3226d add magic support for /proc files 2022-09-07 11:59:54 -07:00
Kelly Brazil
cc6287c124 try/except int conversions 2022-09-07 08:40:37 -07:00
Kelly Brazil
966fe97759 add proc-devices parser and doc update 2022-09-06 17:59:26 -07:00
Kelly Brazil
1f2fe65185 add proc-crypto parser and doc update 2022-09-06 17:29:56 -07:00
Kelly Brazil
b83cd24d57 add proc-cpuinfo parser and doc update 2022-09-06 17:05:14 -07:00
Kelly Brazil
5b4e4fd943 add proc-consoles parser and doc update 2022-09-06 15:52:26 -07:00
Kelly Brazil
61cd9acaa2 add buddyinfo parser and doc update 2022-09-06 15:19:59 -07:00
Kelly Brazil
d2895928bd add examples to doc 2022-09-06 11:46:35 -07:00
Kelly Brazil
5c354b02ea doc update 2022-09-06 11:42:24 -07:00
Kelly Brazil
a764642a85 fixup help, man, readme, about docs 2022-09-06 10:07:19 -07:00
Kelly Brazil
a9b0fe6728 add 'hidden' attribute to parsers and wire up to jc.lib.all_parser_info() 2022-09-06 09:21:40 -07:00
Kelly Brazil
79ade2c182 move to module architecture. first two proc parsers 2022-09-04 10:42:16 -07:00
Kelly Brazil
146dc070ea reorder patterns 2022-09-03 14:05:57 -07:00
Kelly Brazil
c1b2bae333 add more net files 2022-09-03 11:34:28 -07:00
Kelly Brazil
e771b36a18 add more signatures 2022-09-03 10:52:35 -07:00
Kelly Brazil
edcb2280cc add more filetypes 2022-09-02 19:20:36 -07:00
Kelly Brazil
a249ca1da3 add initial procfile parser 2022-09-02 18:29:16 -07:00
Kelly Brazil
f1383b5c66 Merge pull request #277 from kellyjonbrazil/dev
fix for ipv6 ip-address parser with older python and version bump
2022-08-29 15:02:04 +00:00
Kelly Brazil
00e497828e Merge branch 'master' into dev 2022-08-29 14:54:40 +00:00
Kelly Brazil
5968eb697e fix for ipv6 ip-address parser with older python and version bump 2022-08-29 07:51:27 -07:00
Kelly Brazil
ea78b389c9 Merge pull request #275 from kellyjonbrazil/dev
Dev v1.21.1
2022-08-28 23:54:24 +00:00
Kelly Brazil
0b726f7acc doc update 2022-08-28 16:41:06 -07:00
Kelly Brazil
4d4b95c995 fix for linx arp -a cases where an icomplete hw address is present 2022-08-28 12:40:46 -07:00
Kelly Brazil
fc06d195ec fix for arp -a cases where there are incomplete hw addresses 2022-08-28 12:31:57 -07:00
Kelly Brazil
c7fc2e3b92 fix for older python versions that don't provide the netmask attribute when a decimal ip is used 2022-08-28 11:58:51 -07:00
Kelly Brazil
980fc77812 version bump 2022-08-28 11:49:32 -07:00
Kelly Brazil
75dc1722da Merge branch 'dev' of https://github.com/kellyjonbrazil/jc into dev 2022-08-28 11:45:59 -07:00
Kelly Brazil
9326f1f0da Merge pull request #274 from kellyjonbrazil/master
Pull doc updates into Dev
2022-08-28 18:45:20 +00:00
Kelly Brazil
ac831444ce fix for older python versions that don't handle decimal ip's cleanly 2022-08-28 11:40:53 -07:00
Kelly Brazil
4746cb3814 add --meta-out info to exit code section 2022-08-24 09:24:03 -07:00
Kelly Brazil
6c38a3bbaa add echo $? to show exit code 2022-08-24 09:11:06 -07:00
Kelly Brazil
9699a184d1 add exit code with --meta-out to readme 2022-08-24 09:07:34 -07:00
Kelly Brazil
51eb2c9fa8 doc update 2022-08-21 16:23:56 -07:00
Kelly Brazil
abf6ea1fec doc update 2022-08-21 16:20:13 -07:00
Kelly Brazil
37835c1972 Merge pull request #273 from kellyjonbrazil/dev
Dev v1.21.0
2022-08-21 13:58:23 -07:00
Kelly Brazil
cd2f139409 doc update 2022-08-21 13:52:52 -07:00
Kelly Brazil
13bba1f4b8 only show magic command fields if magic as used 2022-08-21 13:52:39 -07:00
Kelly Brazil
4f21c7b7b4 change --time-out to --meta-out. add more meta fields 2022-08-21 12:38:55 -07:00
Kelly Brazil
65cf7960bf add traceroute -n tests 2022-08-21 11:08:10 -07:00
Kelly Brazil
96c5ef5fa2 add library credit 2022-08-20 13:43:47 -07:00
Kelly Brazil
f7c6a82e73 add cef tests 2022-08-20 13:38:20 -07:00
Kelly Brazil
23e81bc3fe add cef streaming parser. doc updates 2022-08-20 13:30:39 -07:00
Kelly Brazil
7c35845006 formatting 2022-08-20 12:37:45 -07:00
Kelly Brazil
7ad0f8a17f formatting 2022-08-20 12:37:11 -07:00
Kelly Brazil
b6cd123719 doc update 2022-08-20 12:30:52 -07:00
Kelly Brazil
944ae9f8d9 doc update 2022-08-20 11:31:52 -07:00
Kelly Brazil
935e114d40 add syslog streaming tests 2022-08-20 11:25:56 -07:00
Kelly Brazil
7fbfec4e5a remove unneeded raw strings 2022-08-20 11:13:32 -07:00
Kelly Brazil
6d5c72b54b add raid5 and container tests 2022-08-20 10:58:13 -07:00
Kelly Brazil
23ad501595 add -n support for ipv6 2022-08-20 09:48:38 -07:00
Kelly Brazil
985d7d28ed add -n support (ipv4) 2022-08-19 21:36:15 -07:00
Kelly Brazil
9ddaddfaa0 add case for timestamp-style datetime fields 2022-08-19 20:36:58 -07:00
Kelly Brazil
de11ae20a4 add git, syslog, and cef timestamp tests 2022-08-19 09:06:46 -07:00
Kelly Brazil
89574faef7 remove underscore in CEF_Version, doc update, timestamp optimization 2022-08-19 08:44:23 -07:00
Kelly Brazil
7bf6f1b870 formatting 2022-08-18 11:24:49 -07:00
Kelly Brazil
0ee0cb35bc add escape chars to doc 2022-08-18 11:23:03 -07:00
Kelly Brazil
780eb05553 doc update 2022-08-18 11:19:11 -07:00
Kelly Brazil
d71a7fbbed cleanup custom field processing and add datetime support 2022-08-18 10:55:37 -07:00
Kelly Brazil
5b597b6583 move conversions into process(). initial timestamp fields working 2022-08-17 17:46:24 -07:00
Kelly Brazil
42b24d71e9 add CEF time formats 2022-08-17 17:45:47 -07:00
Kelly Brazil
07c65351d5 rename keys to match spec. attempt type conversions for extended fields. 2022-08-17 15:20:18 -07:00
Kelly Brazil
cadf7e732e doc formatting 2022-08-17 12:54:12 -07:00
Kelly Brazil
8682a6bd0a normalize key names 2022-08-16 21:08:44 -07:00
Kelly Brazil
e20357663d doc formatting 2022-08-16 17:13:53 -07:00
Kelly Brazil
e777992b3e add schema docs 2022-08-16 17:12:09 -07:00
Kelly Brazil
5f43abc908 strip newline at the end of each line string 2022-08-16 17:00:09 -07:00
Kelly Brazil
8cbd92ccb6 add unparsable warning message 2022-08-16 16:39:00 -07:00
Kelly Brazil
80b4f7d037 add streamin syslog parsers 2022-08-16 16:33:50 -07:00
Kelly Brazil
d5839e199f add syslog-bsd-s streaming parser 2022-08-16 16:15:03 -07:00
Kelly Brazil
4b9ed91546 regex formatting 2022-08-16 15:59:08 -07:00
Kelly Brazil
2e9b9ab987 tighten up priority parsing 2022-08-16 15:10:00 -07:00
Kelly Brazil
9a50a0cc2c doc update 2022-08-16 14:43:05 -07:00
Kelly Brazil
167ea6dfcf add several fields based on user feedback 2022-08-16 14:36:00 -07:00
Kelly Brazil
f17d9ccbd6 doc update 2022-08-16 10:01:31 -07:00
Kelly Brazil
8a6bbc55d2 fix for missing tag 2022-08-16 10:01:27 -07:00
Kelly Brazil
d42ec58ad1 remove colon at the end of the hostname if it exists. 2022-08-15 18:21:58 -07:00
Kelly Brazil
c82c6a88f8 add tests 2022-08-15 18:10:48 -07:00
Kelly Brazil
e7c8778e30 add docs, int conversion, and better rfc compliance 2022-08-15 18:10:43 -07:00
Kelly Brazil
7c4cf66243 add syslog tests 2022-08-15 16:54:10 -07:00
Kelly Brazil
b4b3a11f01 tighten up key/value split 2022-08-15 16:54:02 -07:00
Kelly Brazil
17ce869939 add warning for unparsable lines 2022-08-15 15:39:20 -07:00
Kelly Brazil
05fd3cf787 add mdadm tests 2022-08-15 15:11:54 -07:00
Kelly Brazil
3daf90c5fe doc formatting 2022-08-15 13:51:48 -07:00
Kelly Brazil
02db3baf52 move test fixtures 2022-08-15 11:14:26 -07:00
Kelly Brazil
0bc7311473 doc update 2022-08-15 11:14:17 -07:00
Kelly Brazil
2fda7af8a7 change values to parameters in schema 2022-08-14 12:18:22 -07:00
Kelly Brazil
0cd471dfb2 doc update 2022-08-14 12:11:31 -07:00
Kelly Brazil
20982ab1a6 doc update 2022-08-14 12:03:16 -07:00
Kelly Brazil
81ed9c0c5c add timestamps 2022-08-14 11:48:41 -07:00
Kelly Brazil
23263bd83e add support for strings with UTC offset suffixes 2022-08-14 11:48:24 -07:00
Kelly Brazil
4d3d608e5c add support for ISO-like formats 2022-08-14 10:52:58 -07:00
Kelly Brazil
850a02b4c0 formatting 2022-08-12 18:20:11 -07:00
Kelly Brazil
2d4ace68e7 fix escape character fixups 2022-08-12 18:04:22 -07:00
Kelly Brazil
9adc66af63 version bump to 1.21.0 2022-08-12 17:35:47 -07:00
Kelly Brazil
c24c5f7985 extract structured data. need to fix corner cases 2022-08-12 17:35:28 -07:00
Kelly Brazil
5f280c3e24 doc update 2022-08-12 10:16:15 -07:00
Kelly Brazil
edff49a44f add syslog parsers 2022-08-11 13:29:53 -07:00
Kelly Brazil
345431bbcc add more escape chars 2022-08-09 21:33:54 -07:00
Kelly Brazil
b087e712ca initial cef parser 2022-08-09 20:25:54 -07:00
Kelly Brazil
b7a281c6c4 add val fields and append device table flags to state 2022-08-07 15:11:16 -07:00
Kelly Brazil
bc1521d937 add initial mdadm parser 2022-08-07 13:39:58 -07:00
Kelly Brazil
c15f7641f4 doc update 2022-08-06 17:05:03 -07:00
Kelly Brazil
123de1a3ce simplify timestamp field addition 2022-08-05 10:01:00 -07:00
Kelly Brazil
6d66557b11 add_timestamp_to tests in cli.py 2022-08-04 17:49:18 -07:00
Kelly Brazil
cb3484e1ab doc update 2022-08-04 15:43:44 -07:00
Kelly Brazil
3166600ac6 doc update 2022-08-04 11:43:49 -07:00
Kelly Brazil
ba39f35a01 disable YAML aliases 2022-08-04 11:28:22 -07:00
Kelly Brazil
934ef04694 change long timestamp option to --time-out so it doesn't clash with the timestamp parser name 2022-08-04 08:27:48 -07:00
Kelly Brazil
bfe41d0391 doc formatting 2022-08-04 07:44:36 -07:00
Kelly Brazil
5c9cd4e4cd timestamp working on standard and streaming parsers. updates existing _jc_meta if exists 2022-08-04 07:44:25 -07:00
Kelly Brazil
c57d3416b7 add timestamp option to cli 2022-08-03 17:40:39 -07:00
Kelly Brazil
498a2a314b doc formatting 2022-08-02 08:50:30 -07:00
Kelly Brazil
63961d8711 add plist tests 2022-08-01 11:11:26 -07:00
Kelly Brazil
02f7d73fca add fortisoar 2022-07-31 17:21:50 -07:00
Kelly Brazil
0bfb5f8a3c add FortiSOAR 2022-07-31 17:19:04 -07:00
Kelly Brazil
f22ac8db2b fix for empty string data 2022-07-31 17:16:17 -07:00
Kelly Brazil
86067f913b fix for unparsable bytes 2022-07-31 17:08:44 -07:00
Kelly Brazil
4744757726 fixup for byte and datetime values 2022-07-31 16:47:48 -07:00
Kelly Brazil
108e1b730e add plist parser 2022-07-31 16:14:04 -07:00
Kelly Brazil
bf93d60bf1 doc update 2022-07-31 10:52:00 -07:00
Kelly Brazil
cd5547dfd8 doc update 2022-07-30 12:23:43 -07:00
Kelly Brazil
ff7f830f65 add __main__.py entrypoint 2022-07-30 12:14:10 -07:00
Kelly Brazil
0993fec114 add tests 2022-07-30 11:10:10 -07:00
Kelly Brazil
ebec5c98b8 handle Binary Object Store Descriptor section (not implemented) 2022-07-30 10:04:52 -07:00
Kelly Brazil
4075bce26a version bump 2022-07-29 13:38:21 -07:00
Kelly Brazil
37b830a2fd doc update 2022-07-29 13:35:45 -07:00
Kelly Brazil
f22dd3aa88 doc update 2022-07-29 13:26:51 -07:00
Kelly Brazil
c27591e838 update schema docs 2022-07-29 13:26:07 -07:00
Kelly Brazil
790cdf2996 add device_qualifier section 2022-07-29 13:22:16 -07:00
Kelly Brazil
7f73740fc7 add dotted netmask test 2022-07-28 17:18:01 -07:00
Kelly Brazil
babb08c2e0 formatting 2022-07-28 16:30:13 -07:00
Kelly Brazil
24960cd02b fix scope matching issue 2022-07-28 15:42:25 -07:00
Kelly Brazil
1fcf844e8d manually pull scope_id for older python versions 2022-07-28 10:50:03 -07:00
Kelly Brazil
4b245952fe fix for ipv6 on python < 3.9 2022-07-28 10:36:09 -07:00
Kelly Brazil
4bb4cced90 fixes for python < 3.9 2022-07-28 10:25:21 -07:00
Kelly Brazil
6625ade578 add ip_address tests 2022-07-28 09:58:02 -07:00
Kelly Brazil
3f74571dfc formatting 2022-07-28 09:11:02 -07:00
Kelly Brazil
c8c3d5dc3d formatting 2022-07-28 09:03:49 -07:00
Kelly Brazil
6b862dc860 object cleanup 2022-07-28 09:00:56 -07:00
Kelly Brazil
92956cb1a7 doc update 2022-07-28 07:31:30 -07:00
Kelly Brazil
1df662102c remove subnet on compressed and exploded 2022-07-28 07:30:26 -07:00
Kelly Brazil
726bcc83d2 add docs 2022-07-27 17:21:04 -07:00
Kelly Brazil
b4fb2d102c add ipv6-only fields 2022-07-27 16:22:32 -07:00
Kelly Brazil
624fba9704 add hex and binary representations 2022-07-27 15:36:01 -07:00
Kelly Brazil
fdb629f82b fix host number calculations 2022-07-27 14:27:05 -07:00
Kelly Brazil
11d2eb35be calculate first and last host instead of using the slower iterable 2022-07-27 13:08:35 -07:00
Kelly Brazil
d970b435b4 do str/int conversions up front 2022-07-27 12:49:03 -07:00
Kelly Brazil
82398aef5a add ranges and fix ptr 2022-07-27 12:40:10 -07:00
Kelly Brazil
deaf1860fb add fields 2022-07-27 11:42:11 -07:00
Kelly Brazil
9fcf1eb9cb initial ip-address parser 2022-07-27 10:42:35 -07:00
Kelly Brazil
80de7ed5cb version bump. locale info changes. add ip-address parser 2022-07-27 08:27:28 -07:00
Kelly Brazil
e2f1b16cb9 Merge pull request #267 from kellyjonbrazil/dev
fix url parser for urls ending in slash
2022-07-23 13:43:14 -07:00
Kelly Brazil
73d0bb8bbd fix url parser for urls ending in slash 2022-07-23 13:33:12 -07:00
Kelly Brazil
2683dbb20a Merge pull request #266 from kellyjonbrazil/dev
Dev v1.20.3
2022-07-23 13:12:54 -07:00
Kelly Brazil
8b3228797e formatting 2022-07-23 12:55:56 -07:00
Kelly Brazil
947b37397f doc update 2022-07-23 12:52:42 -07:00
Kelly Brazil
f5f0e00e8d add timestamp tests 2022-07-23 12:51:27 -07:00
Kelly Brazil
73ab7da665 add timestamp parser 2022-07-23 12:43:17 -07:00
Kelly Brazil
6f00b6fd61 doc update 2022-07-23 10:57:46 -07:00
Kelly Brazil
8ada8b79c1 doc update 2022-07-23 10:45:11 -07:00
Kelly Brazil
cd293d4786 new email address schema 2022-07-23 10:45:04 -07:00
Kelly Brazil
b7d59bdd85 update tests for new email-address schema 2022-07-23 10:44:44 -07:00
Kelly Brazil
894f599f79 add tests for iso_datetime and jwt 2022-07-22 15:58:39 -07:00
Kelly Brazil
29bb10b8ff add url and email_address tests 2022-07-22 15:41:59 -07:00
Kelly Brazil
7224c7183b docfix: scheme can be string or null 2022-07-22 14:58:21 -07:00
Kelly Brazil
81301357e4 schema update: netloc can be string or null 2022-07-22 11:46:52 -07:00
Kelly Brazil
ddca18f25a remove unused import 2022-07-22 11:43:21 -07:00
Kelly Brazil
d1164290a6 formatting 2022-07-22 11:42:00 -07:00
Kelly Brazil
3949edc169 doc update 2022-07-22 11:37:00 -07:00
Kelly Brazil
a296ac2e8f fix port integer handling 2022-07-22 11:36:23 -07:00
Kelly Brazil
551f4b097d doc update 2022-07-22 09:28:27 -07:00
Kelly Brazil
8d42f747a7 schema update for normalized, encoded, and decoded fields 2022-07-22 09:28:18 -07:00
Kelly Brazil
163a76dd10 add microsecond field 2022-07-21 10:16:58 -07:00
Kelly Brazil
7389ed5d0c doc update 2022-07-21 09:52:03 -07:00
Kelly Brazil
5905058e97 clarify quoting rules 2022-07-21 09:51:58 -07:00
Kelly Brazil
2a11fefe45 add timestamp info 2022-07-20 23:02:16 -07:00
Kelly Brazil
e27ed0743c formatting 2022-07-20 22:31:04 -07:00
Kelly Brazil
9f6a788a98 doc update 2022-07-20 22:28:12 -07:00
Kelly Brazil
a15d20b400 add final encoded fields 2022-07-20 22:27:29 -07:00
Kelly Brazil
55ae836a43 add encoded fields 2022-07-20 21:46:06 -07:00
Kelly Brazil
c4fc5409e3 doc update 2022-07-20 17:09:09 -07:00
Kelly Brazil
956ad75168 add iso_datetime string parser 2022-07-20 17:06:29 -07:00
Kelly Brazil
71494a53ca doc update 2022-07-20 16:53:54 -07:00
Kelly Brazil
bc211b7c36 fix plus signs in quoted query 2022-07-20 16:39:31 -07:00
Kelly Brazil
2eaef09770 fixup schema and examples 2022-07-20 16:31:59 -07:00
Kelly Brazil
641d63604b doc fix 2022-07-20 15:59:33 -07:00
Kelly Brazil
750a3906c7 doc fix 2022-07-20 15:58:29 -07:00
Kelly Brazil
bd8e69ce98 initialize query variables 2022-07-20 15:57:05 -07:00
Kelly Brazil
16b17dd7aa remove unneded unwrap step 2022-07-20 15:51:34 -07:00
Kelly Brazil
d5a6c22cc6 add normalized fields 2022-07-20 15:43:08 -07:00
Kelly Brazil
b2271713e1 add to docs 2022-07-20 07:56:39 -07:00
Kelly Brazil
f0b9662c5e add docs 2022-07-20 07:54:50 -07:00
Kelly Brazil
720c6b5d42 add note about jc not checking the certificate integrity 2022-07-19 17:15:54 -07:00
Kelly Brazil
c30d44ea13 doc update 2022-07-19 15:24:38 -07:00
Kelly Brazil
b5788134b6 add jwt string parser 2022-07-19 15:23:42 -07:00
Kelly Brazil
790103fb48 doc update 2022-07-19 13:02:09 -07:00
Kelly Brazil
e56944dc24 formatting 2022-07-19 12:58:49 -07:00
Kelly Brazil
ed04951ed7 add email_address string parser 2022-07-19 12:58:44 -07:00
Kelly Brazil
84337fe3d1 change description 2022-07-19 08:46:34 -07:00
Kelly Brazil
da631c8b22 add username, password, hostname, and port 2022-07-19 08:23:27 -07:00
Kelly Brazil
450d0d5ddf document schema 2022-07-19 07:45:13 -07:00
Kelly Brazil
0ed47fc7ce fix query for non-http schemes. Set null for empty fields 2022-07-19 07:39:01 -07:00
Kelly Brazil
d57a00e8be fix up query object 2022-07-19 07:29:09 -07:00
Kelly Brazil
fa7721c31d add initial URL parser 2022-07-19 07:16:28 -07:00
Kelly Brazil
0f72d46050 add extension docs 2022-07-18 14:47:48 -07:00
Kelly Brazil
fe3b5bc2ed doc update 2022-07-18 14:31:13 -07:00
Kelly Brazil
4f7f8dd82b doc update 2022-07-18 14:23:52 -07:00
Kelly Brazil
81fb294859 add m3u example 2022-07-17 11:30:53 -07:00
Kelly Brazil
c04fd5bbf9 simplify single quote handling 2022-07-16 21:16:29 -07:00
Kelly Brazil
d6ed5a0eba doc update 2022-07-16 20:52:19 -07:00
Kelly Brazil
33b996f6be process optimizations 2022-07-16 20:51:18 -07:00
Kelly Brazil
26d4bbe9a4 add m3u tests 2022-07-16 19:43:19 -07:00
Kelly Brazil
5abea6d0c5 fix issue with single quotes in extended info 2022-07-16 19:32:23 -07:00
Kelly Brazil
afce7cdbd7 remove auto import 2022-07-16 11:43:41 -07:00
Kelly Brazil
8c3cff59c6 make parser more robust for non-standard extension fields 2022-07-16 11:27:58 -07:00
Kelly Brazil
bc15a636f1 optimizations up to netstat 2022-07-15 17:28:08 -07:00
Kelly Brazil
1564533161 formatting 2022-07-15 15:19:56 -07:00
Kelly Brazil
27fd6843cc add m3u file parser 2022-07-15 15:14:49 -07:00
Kelly Brazil
8c8d5552c8 version bump 2022-07-15 11:18:13 -07:00
Kelly Brazil
a7ee414c67 add pager functionality to parser documentation 2022-07-15 11:18:02 -07:00
Kelly Brazil
6573b355cc Merge pull request #262 from kellyjonbrazil/master
sync to dev
2022-07-15 10:53:37 -07:00
Kelly Brazil
eaa36a6a31 formatting 2022-07-07 12:56:18 -07:00
Kelly Brazil
8b1c4f923e doc fix 2022-07-07 09:23:02 -07:00
Kelly Brazil
89c36e4996 add pkcs12 example 2022-07-07 09:13:06 -07:00
Kelly Brazil
0ea5c9585a formatting 2022-07-06 20:27:41 -07:00
Kelly Brazil
5fa2fe3992 fix example 2022-07-06 17:20:56 -07:00
Kelly Brazil
014437298c add pkcs7 example 2022-07-06 17:08:12 -07:00
Kelly Brazil
04d91516e8 add license 2022-07-05 19:56:22 -07:00
Kelly Brazil
9b33a50bb0 Merge pull request #260 from kellyjonbrazil/dev
Dev v1.20.2
2022-07-05 19:39:40 -07:00
Kelly Brazil
b0e9d9fa9d fix encodings for windows tests 2022-07-05 19:23:22 -07:00
Kelly Brazil
991b612b62 add colon seperators to hex strings in python 3.6 and 3.7 2022-07-05 19:19:06 -07:00
Kelly Brazil
855c9363a5 add hexlify compatibility for python 3.6 and 3.7 2022-07-05 19:12:44 -07:00
Kelly Brazil
625544f53e add x509-cert tests 2022-07-05 18:59:55 -07:00
Kelly Brazil
f179da8cd1 sort set to list conversion 2022-07-05 18:59:47 -07:00
Kelly Brazil
eeee776555 add shell completion build scripts 2022-07-05 16:41:23 -07:00
Kelly Brazil
d0bde14a2a version bump 2022-07-05 16:15:35 -07:00
Kelly Brazil
69b0e407ad move pygments colors to cli_data.py 2022-07-05 16:15:26 -07:00
Kelly Brazil
ad2b9ab76c doc update 2022-07-05 15:07:10 -07:00
Kelly Brazil
32483de4f2 doc update 2022-07-05 14:59:21 -07:00
Kelly Brazil
ec713cfa1b doc update 2022-07-05 13:33:57 -07:00
Kelly Brazil
eac8c1c1a0 only attempt to decode certificate type 2022-07-05 12:55:38 -07:00
Kelly Brazil
4e15ab7924 fix _fix_objects: catch all sets and OrderedDicts 2022-07-05 11:33:56 -07:00
Kelly Brazil
5882755e7c convert larg integers to ascii-hex. simplify _fix_objects. add iso date strings. allow multiple certs in a PEM bundle 2022-07-05 11:29:24 -07:00
Kelly Brazil
13388df603 initial working x509 cert parser 2022-07-01 15:48:29 -07:00
Kelly Brazil
430385fa63 doc update 2022-06-30 09:25:01 -07:00
Kelly Brazil
7bfebdcfeb remove unnecessary list initialization 2022-06-30 09:24:05 -07:00
Kelly Brazil
e472c3b140 add gpg tests 2022-06-29 18:56:15 -07:00
Kelly Brazil
43ac3d951c doc update 2022-06-29 18:36:06 -07:00
Kelly Brazil
207fa232c3 add examples 2022-06-29 18:34:20 -07:00
Kelly Brazil
667dc1976a add support for special field types 2022-06-29 18:26:38 -07:00
Kelly Brazil
7437750de5 initial working gpg parser 2022-06-29 11:01:25 -07:00
Kelly Brazil
aab47c9e80 Merge pull request #258 from kellyjonbrazil/master
sync to dev
2022-06-28 16:07:05 -07:00
Kelly Brazil
f1ed803525 formatting 2022-06-16 18:03:51 -07:00
Kelly Brazil
093c1703d7 formatting 2022-06-16 18:00:40 -07:00
Kelly Brazil
1f2e16aeea formatting 2022-06-16 17:54:40 -07:00
Kelly Brazil
6f89745a58 formatting 2022-06-16 17:51:59 -07:00
Kelly Brazil
9b710b0b6f formatting 2022-06-16 17:51:20 -07:00
Kelly Brazil
992120b861 spelling 2022-06-16 17:48:07 -07:00
Kelly Brazil
229bef5f82 update anchor link 2022-06-16 07:52:58 -07:00
Kelly Brazil
c8a4890fc7 fix anchor link 2022-06-16 07:50:37 -07:00
Kelly Brazil
10a9848ac8 Merge branch 'master' of https://github.com/kellyjonbrazil/jc 2022-06-16 07:48:46 -07:00
Kelly Brazil
95189e37ba add streaming parsers link 2022-06-16 07:48:44 -07:00
Kelly Brazil
fe1f09f08d use github markdown renderer 2022-06-15 20:15:24 -07:00
Kelly Brazil
6adfa15742 formatting 2022-06-15 20:10:55 -07:00
Kelly Brazil
edef264f17 formatting 2022-06-15 20:04:39 -07:00
Kelly Brazil
9911b3fc9d formatting 2022-06-15 16:11:22 -07:00
Kelly Brazil
1675aa7a59 add shell completion wiki link 2022-06-15 16:08:31 -07:00
Kelly Brazil
7fd67fda13 Merge pull request #256 from kellyjonbrazil/dev
v1.20.1
2022-06-15 22:16:07 +00:00
Kelly Brazil
7583f315ce add long options tests 2022-06-15 13:21:37 -07:00
Kelly Brazil
7fd70d2088 doc update 2022-06-15 13:10:12 -07:00
Kelly Brazil
337ee73844 doc update 2022-06-15 12:51:42 -07:00
Kelly Brazil
43702a260b strip single quotes just like double quotes 2022-06-15 12:50:58 -07:00
Kelly Brazil
40208a9f76 doc update 2022-06-15 11:25:21 -07:00
Kelly Brazil
b958358389 update _snake_case comment 2022-06-15 11:15:26 -07:00
Kelly Brazil
c23aacedad doc update 2022-06-15 11:12:49 -07:00
Kelly Brazil
4f148469d7 preserve keyname case with -r 2022-06-15 11:12:43 -07:00
Kelly Brazil
247c43278c add postconf tests 2022-06-15 09:22:09 -07:00
Kelly Brazil
45f45e0511 add examples 2022-06-15 09:18:11 -07:00
Kelly Brazil
c0c469ae9b add comments 2022-06-14 17:03:54 -07:00
Kelly Brazil
4b86fd8d8a manipulate words and CURRENT to fix magic completions in Zsh 2022-06-14 16:51:45 -07:00
Kelly Brazil
8fba47f449 doc update 2022-06-14 12:42:30 -07:00
Kelly Brazil
f9ae964280 reuse arrays in zsh completions 2022-06-14 08:49:26 -07:00
Kelly Brazil
ca95615d7f partially working _normal completion for zsh 2022-06-14 07:42:55 -07:00
Kelly Brazil
747b255e34 zsh working same as bash except for magic command completions 2022-06-13 21:09:37 -07:00
Kelly Brazil
c0da9ebd6c only check previous words in bash completion 2022-06-10 17:25:19 -07:00
Kelly Brazil
5c40b38a05 fix help bash completions so they don't repeat parsers 2022-06-10 12:02:04 -07:00
Kelly Brazil
7bc03dcf06 add local vars to bash completion 2022-06-08 08:51:23 -07:00
Kelly Brazil
f62e6168fd fix help completions for bash 2022-06-08 08:50:20 -07:00
Kelly Brazil
39c1470ea6 add special options to bash completion 2022-06-07 11:57:48 -07:00
Kelly Brazil
e48b99f1c1 fix bash completion behavior 2022-06-07 11:02:05 -07:00
Kelly Brazil
71ae545907 better working bash completion 2022-06-06 16:24:52 -07:00
Kelly Brazil
b9a5eda187 formatting 2022-06-06 10:52:40 -07:00
Kelly Brazil
231a2039c2 update options 2022-06-06 10:49:17 -07:00
Kelly Brazil
a415bc23fa man page update 2022-06-06 10:32:18 -07:00
Kelly Brazil
79add35fc1 split long and short options 2022-06-05 18:09:44 -07:00
Kelly Brazil
901763fc39 fix hyphens 2022-06-05 18:06:38 -07:00
Kelly Brazil
1034cb1ea2 Merge branch 'dev' of https://github.com/kellyjonbrazil/jc into dev 2022-06-05 18:04:42 -07:00
Kelly Brazil
020093fd67 revert non-breaking hyphens 2022-06-05 18:04:35 -07:00
Kelly Brazil
f17b3fbd32 add non-breaking hyphens 2022-06-05 17:54:34 -07:00
Kelly Brazil
15b58e3a6b add long-options 2022-06-05 17:52:14 -07:00
Kelly Brazil
da6c98826b doc update 2022-06-05 17:40:05 -07:00
Kelly Brazil
26415e2978 formatting 2022-06-05 17:17:13 -07:00
Kelly Brazil
d849bd3b66 add bash and zsh completions to cli 2022-06-05 16:23:55 -07:00
Kelly Brazil
5996192455 remove indent at end of help text 2022-06-05 12:16:30 -07:00
Kelly Brazil
a38b6b5522 add long options 2022-06-05 12:12:58 -07:00
Kelly Brazil
1d6bc40bff fix no_wake_up_before_first_use to allow None 2022-06-03 10:35:49 -07:00
Kelly Brazil
437fa62cb1 update schema 2022-06-03 10:29:55 -07:00
Kelly Brazil
6cde26d9ed add process logic 2022-06-02 14:53:31 -07:00
Kelly Brazil
f6dd5a68cd doc update 2022-06-02 09:28:00 -07:00
Kelly Brazil
b1507dc576 initial postconf parser 2022-06-02 09:14:02 -07:00
Kelly Brazil
a5d5b1554f change variable name from list to my_list 2022-06-02 08:34:51 -07:00
Kelly Brazil
ec8efebc94 move _get_item outside of parse function 2022-06-02 08:31:28 -07:00
Kelly Brazil
f86cbf5527 Merge pull request #250 from pbrezina/id
id: parse output without name
2022-06-02 15:27:07 +00:00
Pavel Březina
57142d899c id: parse output without name
If a group does not exist only gid is present in the command output.
2022-06-02 12:51:11 +02:00
Kelly Brazil
504a04279e version bump 2022-06-01 12:13:50 -07:00
Kelly Brazil
3b4ef4a814 formatting 2022-06-01 12:13:41 -07:00
Kelly Brazil
a7e3d2fc86 Merge pull request #251 from kellyjonbrazil/master
sync to dev
2022-06-01 17:35:52 +00:00
Kelly Brazil
776ee66bae Merge pull request #249 from kellyjonbrazil/dev
Dev v1.20.0
2022-05-31 16:23:43 +00:00
Kelly Brazil
9bf2cd0691 doc update 2022-05-31 09:16:54 -07:00
Kelly Brazil
fec74cf305 doc formatting 2022-05-28 13:13:07 -07:00
Kelly Brazil
d3d7fbca61 doc formatting 2022-05-28 12:41:36 -07:00
Kelly Brazil
550862a415 doc update 2022-05-28 12:18:02 -07:00
Kelly Brazil
1763b530da add tests for new fields 2022-05-27 17:40:54 -07:00
Kelly Brazil
8307150cae add integer fields 2022-05-27 17:26:48 -07:00
Kelly Brazil
d2223c45d1 add new fields to schema 2022-05-27 17:20:54 -07:00
Kelly Brazil
472ee5e295 add new fields. allow for new unknown fields with warning 2022-05-27 17:07:39 -07:00
Kelly Brazil
1d0aebd836 add new fields 2022-05-27 16:54:49 -07:00
Kelly Brazil
8240626043 add idle status for newer top version support 2022-05-27 16:27:51 -07:00
Kelly Brazil
2cd14235c8 remove unnecessary pass line 2022-05-27 14:29:48 -07:00
Kelly Brazil
f774513554 add top-s tests 2022-05-27 14:29:33 -07:00
Kelly Brazil
388da9f003 remove try/except at end 2022-05-27 14:11:27 -07:00
Kelly Brazil
fa18243491 add check for top data 2022-05-27 13:48:13 -07:00
Kelly Brazil
5df1c1702b add top-s parser 2022-05-27 13:34:07 -07:00
Kelly Brazil
b6557802f4 change windows command prompt in docs 2022-05-27 08:54:37 -07:00
Kelly Brazil
15e3a511b6 doc update 2022-05-26 16:04:57 -07:00
Kelly Brazil
08fbde0e8f fix stdin stder quoting 2022-05-26 16:03:30 -07:00
Kelly Brazil
28ebb4e8dd fix notes 2022-05-26 15:54:39 -07:00
Kelly Brazil
04fda57cbe fix note 2022-05-26 15:11:58 -07:00
Kelly Brazil
b24495136c fix blockquotes 2022-05-26 15:07:54 -07:00
Kelly Brazil
7d3fa55571 doc update 2022-05-26 11:52:29 -07:00
Kelly Brazil
a76b5db8db doc update 2022-05-26 11:37:16 -07:00
Kelly Brazil
667dd01ac7 fix process table detection 2022-05-26 09:29:59 -07:00
Kelly Brazil
559bee962a add top tests 2022-05-26 09:19:47 -07:00
Kelly Brazil
9f977d06e0 fix asciitable parser for cases where centered rows cause misaligned fields 2022-05-26 08:57:35 -07:00
Kelly Brazil
f67a916940 add new parser counts to jc -a 2022-05-25 14:30:00 -07:00
Kelly Brazil
8a1308948f fix typo 2022-05-25 12:21:44 -07:00
Kelly Brazil
4e130d11a3 fix schema 2022-05-25 12:18:51 -07:00
Kelly Brazil
51aa5b268f fix for mem info in different units 2022-05-25 10:46:58 -07:00
Kelly Brazil
6869133f53 working top parser and doc update 2022-05-25 10:31:41 -07:00
Kelly Brazil
ad3d88e47f doc update 2022-05-25 08:14:14 -07:00
Kelly Brazil
6d29f8ba74 quiet option for warning messages 2022-05-25 07:37:21 -07:00
Kelly Brazil
c7cb89e91d more processing 2022-05-24 17:22:23 -07:00
Kelly Brazil
27f5118abd add top parser 2022-05-24 15:47:51 -07:00
Kelly Brazil
ac5a6e516d doc update 2022-05-23 15:12:14 -07:00
Kelly Brazil
5d5bfbc1d1 doc update 2022-05-23 13:58:24 -07:00
Kelly Brazil
9f4ba80000 refactor - create is_compatible function 2022-05-23 13:52:08 -07:00
Kelly Brazil
c21c334b73 version bump 2022-05-23 13:43:57 -07:00
Kelly Brazil
14093d9d43 Merge pull request #247 from kellyjonbrazil/yaml-dev
Yaml dev
2022-05-23 20:36:44 +00:00
Kelly Brazil
176ca2f75d docstring update 2022-05-23 13:16:57 -07:00
Kelly Brazil
cfb71c7dad add test for strings ending with colon 2022-05-22 09:13:32 -07:00
Kelly Brazil
722eab83b1 add Other Shell section 2022-05-21 07:00:43 -07:00
Kelly Brazil
d30edb2dae add yaml_out tests 2022-05-20 18:15:56 -07:00
Kelly Brazil
cba461ce8a remove JSONDecodeError detection 2022-05-20 17:48:52 -07:00
Kelly Brazil
f876505e25 add colors and ensure ascii on error 2022-05-20 17:22:56 -07:00
Kelly Brazil
5b9fcd5852 initial working yaml out 2022-05-20 14:51:23 -07:00
Kelly Brazil
8a122cd9e1 fix wiki language 2022-05-20 07:58:19 -07:00
Kelly Brazil
557e68225c add filtering capabilities for other shells 2022-05-19 11:16:25 -07:00
Kelly Brazil
dc0947b87e add other shell info. clean up parser table 2022-05-19 10:52:18 -07:00
Kelly Brazil
af2c06cd28 doc update 2022-05-15 22:28:12 -07:00
Kelly Brazil
67a4c6f797 add initial \n to first line of multiline fields 2022-05-15 22:23:00 -07:00
Kelly Brazil
0d1c857410 fix to keep first line of multiline field 2022-05-15 22:19:01 -07:00
Kelly Brazil
c7684dc94d allow multiline fields in pip-show 2022-05-15 22:06:43 -07:00
Kelly Brazil
a247572f64 changelog update 2022-05-15 20:49:41 -07:00
Kelly Brazil
306111303a Merge pull request #244 from kellyjonbrazil/master
Merge pull request #242 from kellyjonbrazil/dev sync to dev
2022-05-16 03:46:59 +00:00
Kelly Brazil
c12b48537a Merge pull request #242 from kellyjonbrazil/dev
Dev v1.19.0
2022-05-13 20:31:06 +00:00
Kelly Brazil
0bf69713ab Merge branch 'master' into dev 2022-05-13 20:26:12 +00:00
Kelly Brazil
c05f1475ed doc update 2022-05-13 13:23:14 -07:00
Kelly Brazil
416c262f02 remove top parsers 2022-05-13 13:17:16 -07:00
Kelly Brazil
40a5976f11 doc update 2022-05-13 12:45:27 -07:00
Kelly Brazil
dc582fbec8 fix for git-log coner cases 2022-05-13 12:44:01 -07:00
Kelly Brazil
7047f0a449 df fix for trailining newline char 2022-05-12 16:06:44 -07:00
Kelly Brazil
d7a884a567 doc update 2022-05-12 11:28:20 -07:00
Kelly Brazil
28de57792c formatting 2022-05-12 11:16:44 -07:00
Kelly Brazil
a230cdbd21 fix chage docs 2022-05-12 10:47:14 -07:00
Kelly Brazil
251a261679 add chage example 2022-05-11 18:56:13 -07:00
Kelly Brazil
3baef254fd maxsplit line 2022-05-11 18:47:56 -07:00
Kelly Brazil
9e69e928b2 add chage tests 2022-05-11 16:18:39 -07:00
Kelly Brazil
6eb595d2ca add chage parser 2022-05-11 16:12:29 -07:00
Kelly Brazil
acf07a5144 allow install on python 3.6 systems even though it is not supported 2022-05-11 08:00:05 -07:00
Kelly Brazil
7f53c58057 add ignore exception tests 2022-05-10 16:23:12 -07:00
Kelly Brazil
a069dc4855 add top -b parser 2022-05-10 16:08:56 -07:00
Kelly Brazil
febf544202 add git-log-s tests 2022-05-10 16:08:45 -07:00
Kelly Brazil
f2dd7b8815 doc update 2022-05-09 16:16:29 -07:00
Kelly Brazil
d758e37fe3 doc update 2022-05-09 16:10:41 -07:00
Kelly Brazil
9bc02a5623 doc update 2022-05-09 16:09:40 -07:00
Kelly Brazil
eb0ec265d0 Merge pull request #240 from fiskhest/master
Update README.md
2022-05-06 14:30:02 +00:00
fiskhest
1f236dc02a Update README.md 2022-05-06 16:20:33 +02:00
Kelly Brazil
86c279cbb2 add sep char test 2022-05-02 11:15:41 -07:00
Kelly Brazil
4a7f1bed3a doc update 2022-05-02 09:16:12 -07:00
Kelly Brazil
a730ae18c8 changelog update 2022-05-01 11:07:27 -07:00
Kelly Brazil
930bf439c0 check for separator characters in table cells. If detected, print a warning. 2022-05-01 11:04:35 -07:00
Kelly Brazil
f5f3133b87 add note about table column separators not being allowed in cell data 2022-05-01 10:27:34 -07:00
Kelly Brazil
cbca96de84 changelog update 2022-05-01 09:56:23 -07:00
Kelly Brazil
4d8ae3f124 doc update 2022-05-01 09:55:08 -07:00
Kelly Brazil
653127431d update plugin language 2022-04-29 06:50:37 -07:00
Kelly Brazil
22acef3765 generator to iterable object 2022-04-29 06:47:10 -07:00
Kelly Brazil
0d5bf11f0d change iterator to iterable 2022-04-29 06:42:11 -07:00
Kelly Brazil
a824ccaff3 add git-log-s parser 2022-04-28 16:23:56 -07:00
Kelly Brazil
97ac965ba5 version bump 2022-04-28 16:23:14 -07:00
Kelly Brazil
3e7f284df5 simplify streaming docs 2022-04-28 13:38:24 -07:00
Kelly Brazil
5c749fe26f simplify docs 2022-04-28 13:30:11 -07:00
Kelly Brazil
aa48b46f48 try page character 2022-04-28 11:09:19 -07:00
Kelly Brazil
6eaa4ae176 try arrow link 2022-04-28 11:05:43 -07:00
Kelly Brazil
60c330b342 move gentoo up 2022-04-28 10:59:12 -07:00
Kelly Brazil
fdeb994121 try using a table for parser list 2022-04-28 10:49:35 -07:00
Kelly Brazil
65ed92fe7b move safe_print_json. change argument from string to list_or_dict 2022-04-28 09:28:56 -07:00
Kelly Brazil
9c8730786b Merge pull request #238 from kellyjonbrazil/master
sync to dev
2022-04-28 16:21:22 +00:00
Kelly Brazil
7608823ea7 add git-log 2022-04-27 11:31:35 -07:00
Kelly Brazil
4f8c1a2ca2 version bump 2022-04-27 09:43:55 -07:00
Kelly Brazil
37489dd4e1 doc update 2022-04-27 09:10:38 -07:00
Kelly Brazil
a53aa1d0b8 fix bug when no slaves are present 2022-04-27 09:02:30 -07:00
Kelly Brazil
f7b64a5762 formatting 2022-04-27 08:26:12 -07:00
Kelly Brazil
9b1fe0d9a4 create safe_print_json function 2022-04-27 08:24:54 -07:00
Kelly Brazil
b876645fc5 doc update 2022-04-27 07:38:17 -07:00
Kelly Brazil
d9c0b8f8ad make _safe_print and _asciify private 2022-04-27 07:37:31 -07:00
Kelly Brazil
78d2b239c8 doc update 2022-04-26 17:51:30 -07:00
Kelly Brazil
5a12d98893 update history tests 2022-04-26 17:49:27 -07:00
Kelly Brazil
621f11e6f9 simplify history code 2022-04-26 17:46:16 -07:00
Kelly Brazil
8417f2fe4e use UTF-8 encoding in subprocess.Popen 2022-04-26 15:01:12 -07:00
Kelly Brazil
3ef2a0a065 rename j_data to j_string 2022-04-26 14:29:59 -07:00
Kelly Brazil
faec16d1f2 add line feed 2022-04-26 14:28:18 -07:00
Kelly Brazil
a4ef52b533 refactor try/except blocks to safe_print function 2022-04-26 14:25:34 -07:00
Kelly Brazil
0b407123c2 simplify json_out code 2022-04-26 10:18:49 -07:00
Kelly Brazil
98eedc69ec doc update 2022-04-26 09:57:50 -07:00
Kelly Brazil
dd231ae293 for for UnicodeEncodeError exception when printing JSON 2022-04-26 09:57:12 -07:00
Kelly Brazil
ad6196ddab Merge pull request #236 from kellyjonbrazil/dev
add gentoo to readme
2022-04-26 07:14:46 -07:00
Kelly Brazil
49ca0cecf4 Merge pull request #235 from mgorny/gentoo-install
Add Gentoo Linux install command
2022-04-26 07:10:47 -07:00
Michał Górny
148f2fb6db Add Gentoo Linux install command 2022-04-26 10:38:15 +02:00
Kelly Brazil
e04cd298fb version bump 2022-04-25 19:25:58 -07:00
Kelly Brazil
5bb4e2b4b6 revert f-string to regular string 2022-04-25 19:22:18 -07:00
Kelly Brazil
7b22db50d3 remove single quotes around asciified string 2022-04-25 18:50:36 -07:00
Kelly Brazil
fecb2193ae Merge pull request #234 from kellyjonbrazil/dev
Dev v1.18.7
2022-04-25 17:17:49 -07:00
Kelly Brazil
46af3bd0c0 add UnicodeError fix 2022-04-25 17:04:19 -07:00
Kelly Brazil
c245c89f82 don't try to detect locale, just asciify on exception 2022-04-25 16:51:00 -07:00
Kelly Brazil
a8f0cd9dae C locale fixes 2022-04-25 14:48:59 -07:00
Kelly Brazil
3101189d47 doc update 2022-04-25 08:39:33 -07:00
Kelly Brazil
3f0b644b85 fix test 2022-04-25 08:37:03 -07:00
Kelly Brazil
25c2c483f8 Merge pull request #233 from chriscroome/dev
Update name of alternative from name to alternative
2022-04-25 08:34:34 -07:00
Chris Croome
8bc2ea14a3 Whitespace fix 2022-04-25 11:20:36 +01:00
Chris Croome
8d4f22d9a5 Merge branch 'dev' of github.com:chriscroome/jc into dev 2022-04-25 11:16:47 +01:00
Chris Croome
d2adc2630c Use alternative rather than name to match manpage 2022-04-25 11:16:20 +01:00
Chris Croome
727f2b589e Use alternative rather than name toi match manpage 2022-04-25 11:14:18 +01:00
Kelly Brazil
abbfc92da0 clarify plugin filename requirements 2022-04-22 17:05:22 -07:00
Kelly Brazil
73b7e71cad add tests 2022-04-22 16:25:45 -07:00
Kelly Brazil
4825b16f07 doc update 2022-04-22 15:23:11 -07:00
Kelly Brazil
d2013366cc add update-alternatives examples 2022-04-22 15:20:20 -07:00
Kelly Brazil
96609a2c70 add update-alternatives --get-selections parser 2022-04-22 15:10:48 -07:00
Kelly Brazil
39306573da add update-alternatives parser 2022-04-22 14:47:07 -07:00
Kelly Brazil
01e330aa97 precompile regex patterns 2022-04-22 13:33:36 -07:00
Kelly Brazil
f08a74097d add tests 2022-04-22 12:12:45 -07:00
Kelly Brazil
79e37a7383 fix for oneline output 2022-04-22 12:12:38 -07:00
Kelly Brazil
3eebb6ee19 add update-alternatives parser info 2022-04-22 12:11:56 -07:00
Kelly Brazil
096fffdb79 use stat examples 2022-04-20 10:03:36 -04:00
Kelly Brazil
728d882ed0 add timestamp docs and examples 2022-04-20 09:50:19 -04:00
Kelly Brazil
b53e42aca6 add calculated timestamp 2022-04-20 09:44:42 -04:00
Kelly Brazil
477329ce5b add linefeed to version text 2022-04-20 08:26:26 -04:00
Kelly Brazil
283dc4efd5 add python interpreter version and path to -v and -a output 2022-04-19 17:44:15 -04:00
Kelly Brazil
d490bbcaa0 normalize add/update 2022-04-19 15:26:31 -04:00
Kelly Brazil
f49ddf8e5c doc update 2022-04-19 15:18:04 -04:00
Kelly Brazil
e1e341652b doc update 2022-04-19 15:10:40 -04:00
Kelly Brazil
ecda667549 process integers 2022-04-19 15:10:35 -04:00
Kelly Brazil
a0d96a188a doc update 2022-04-19 14:45:20 -04:00
Kelly Brazil
6c0f0cddfe fix for datetime objects in yaml files 2022-04-19 14:43:47 -04:00
Kelly Brazil
c7173ecd89 fix mypy issues 2022-04-19 14:34:53 -04:00
Kelly Brazil
e98240c905 extend instead of append list 2022-04-19 14:20:44 -04:00
Kelly Brazil
6cb7e25974 add docs 2022-04-19 13:17:24 -04:00
Kelly Brazil
c37980c05c add stat support 2022-04-19 13:17:16 -04:00
Kelly Brazil
b5943bd39d initial docstring 2022-04-19 10:32:55 -04:00
Kelly Brazil
49a3a7db3b initial git-log parser 2022-04-19 09:30:38 -04:00
Kelly Brazil
0c55240e9d move test templates to fix test failures on some systems 2022-04-13 10:54:28 -07:00
Kelly Brazil
f91988aed5 iterator -> iterable 2022-04-12 14:22:06 -07:00
Kelly Brazil
3c3ad9fc6a iterator -> iterable in doc 2022-04-12 14:20:58 -07:00
Kelly Brazil
291ab79e22 fix arch linux command 2022-04-12 11:07:34 -07:00
Kelly Brazil
e6d5892c14 Merge pull request #226 from kellyjonbrazil/master
sync to dev
2022-04-12 11:02:37 -07:00
Kelly Brazil
dcca7a57d5 Merge pull request #225 from adrianteri/patch-1
Update README
2022-04-12 11:00:51 -07:00
003
4ee8a69337 Update README
Specify the Arch package is in the AUR and NOT in the standard Archlinux repositories.
2022-04-12 20:53:39 +03:00
Kelly Brazil
c0414e7db7 clean up background tasks 2022-04-10 17:18:20 -07:00
Kelly Brazil
a419175fe6 enhance parallelization 2022-04-10 17:14:34 -07:00
Kelly Brazil
cd6dead034 man page update 2022-04-10 16:54:34 -07:00
Kelly Brazil
45342ea9fe parallelize doc gneration 2022-04-10 16:54:22 -07:00
Kelly Brazil
585bf0e159 xrandr update 2022-04-10 10:32:51 -07:00
Kelly Brazil
3a860b9bab add rotation field 2022-04-10 10:31:13 -07:00
Kelly Brazil
269180df77 Merge pull request #223 from anekos/fix/support-rotated-devices
Fix/support rotated devices
2022-04-10 10:19:50 -07:00
anekos
a1afed8d95 doc update 2022-04-10 19:53:37 +09:00
anekos
e39f150a21 Support rotated devices 2022-04-10 19:53:37 +09:00
Kelly Brazil
e85f11c6fc doc formatting 2022-04-04 12:00:41 -07:00
Kelly Brazil
49a9d7b07e doc update 2022-04-04 11:42:16 -07:00
Kelly Brazil
a2ef9c429e allow duplicate keys 2022-04-04 11:38:52 -07:00
Kelly Brazil
d5e9074f1c version bump 2022-04-04 11:38:04 -07:00
Kelly Brazil
774699f085 Merge pull request #220 from kellyjonbrazil/master
sync to dev
2022-04-04 18:21:15 +00:00
Kelly Brazil
7138eef3d1 fix newline chars in doc 2022-03-30 14:39:56 -07:00
Kelly Brazil
fad5e544aa formatting 2022-03-29 09:58:44 -07:00
Kelly Brazil
64757e2cf5 doc formatting 2022-03-29 09:35:54 -07:00
Kelly Brazil
e05be3f08b Merge pull request #213 from kellyjonbrazil/dev
Dev v1.18.6
2022-03-25 22:36:05 +00:00
Kelly Brazil
789f0735df doc update 2022-03-25 15:32:37 -07:00
Kelly Brazil
34bc775317 doc update 2022-03-25 15:32:11 -07:00
Kelly Brazil
38de059a1b doc update 2022-03-24 16:58:45 -07:00
Kelly Brazil
304ae6268f minor optimization by changing the expression order 2022-03-24 16:58:39 -07:00
Kelly Brazil
978caf4522 minor optimization by reordering expressions 2022-03-24 12:37:46 -07:00
Kelly Brazil
17df5bfcfc cache _is_separator function 2022-03-24 11:58:13 -07:00
Kelly Brazil
5e6a5068cf allow iterables for simple table parser 2022-03-24 11:57:01 -07:00
Kelly Brazil
619de68a61 formatting 2022-03-24 09:39:53 -07:00
Kelly Brazil
6748c3cc91 remove lines from corner detection and add rounded corners 2022-03-24 09:31:12 -07:00
Kelly Brazil
0a462978b7 fix for special characters in headers 2022-03-23 15:08:33 -07:00
Kelly Brazil
e66a82ff49 doc update 2022-03-23 10:50:34 -07:00
Kelly Brazil
f3aa797d96 add more pretty table separators 2022-03-22 17:47:19 -07:00
Kelly Brazil
e5b478218c add quiet=True to parse tests 2022-03-22 16:05:07 -07:00
Kelly Brazil
35e0e9c32a remove print statement 2022-03-22 15:57:43 -07:00
Kelly Brazil
17c3c2f029 add bold bar seperator and ANSI code tests 2022-03-22 15:55:59 -07:00
Kelly Brazil
cf83e6398b add fancy separators 2022-03-22 15:13:07 -07:00
Kelly Brazil
94e061b881 add asciitable parser tests 2022-03-22 14:53:34 -07:00
Kelly Brazil
720480e39c doc update 2022-03-22 13:21:10 -07:00
Kelly Brazil
82a63fe159 doc update 2022-03-22 12:42:07 -07:00
Kelly Brazil
9c1ec9940e doc update 2022-03-22 12:35:56 -07:00
Kelly Brazil
f23f19da45 doc update 2022-03-22 12:25:59 -07:00
Kelly Brazil
aea2e1b0a9 fix tests so blank strings are now None 2022-03-22 12:25:51 -07:00
Kelly Brazil
7d95d679bf add asciitable parser 2022-03-22 12:25:24 -07:00
Kelly Brazil
b3b140066b doc update 2022-03-22 07:21:19 -07:00
Kelly Brazil
b204c423c1 doc update 2022-03-22 07:05:14 -07:00
Kelly Brazil
d451c309bb change multiple or statements to any() 2022-03-22 06:30:07 -07:00
Kelly Brazil
01d53da68e remove debug print 2022-03-21 19:11:27 -07:00
Kelly Brazil
53dd05e52c fix rstrip and add tests 2022-03-21 19:10:02 -07:00
Kelly Brazil
ab564f5be8 add tests 2022-03-21 17:57:14 -07:00
Kelly Brazil
00c39450f9 enhance type annotation 2022-03-21 13:36:54 -07:00
Kelly Brazil
f611d08b50 formatting 2022-03-21 13:33:35 -07:00
Kelly Brazil
90e79b7df3 formatting 2022-03-21 13:27:44 -07:00
Kelly Brazil
4eb2d725d5 formatting 2022-03-21 13:09:50 -07:00
Kelly Brazil
51ae5ebcac new streamlined parser 2022-03-21 13:06:34 -07:00
Kelly Brazil
9ecbdb0916 use generator instead of iterable in function return annotation 2022-03-20 10:16:29 -07:00
Kelly Brazil
b3a2886fd0 formatting 2022-03-20 10:12:29 -07:00
Kelly Brazil
ceacec0f46 remove errant os sep import 2022-03-18 16:57:47 -07:00
Kelly Brazil
ff0f794b01 working 2022-03-18 16:53:23 -07:00
Kelly Brazil
70fafbf3f8 remove asciitable so tests pass for now 2022-03-18 14:19:00 -07:00
Kelly Brazil
5a248a8fc5 add multiline asciitable parser 2022-03-18 13:05:57 -07:00
Kelly Brazil
4a3a4e10df add asciitable and asciitable-m parsers 2022-03-18 13:03:43 -07:00
Kelly Brazil
c27bd5ff39 pad lines in sparse_table_parse and use str.isspace() 2022-03-17 16:24:18 -07:00
Kelly Brazil
f804c9627f copy input list so we don't mutate the caller's data 2022-03-15 16:04:58 -07:00
Kelly Brazil
3ab25d02f9 use _parser_is_streaming from lib 2022-03-14 12:30:09 -07:00
Kelly Brazil
9e80fd2b97 fallback if info and doc items don't exist 2022-03-14 12:17:18 -07:00
Kelly Brazil
ff9527a098 import cleanup and use all_parser_info in parsers_text 2022-03-14 11:35:57 -07:00
Kelly Brazil
7dac2f8dc3 doc update 2022-03-14 10:50:10 -07:00
Kelly Brazil
32e4d55e86 use parser_info for help_doc 2022-03-14 10:46:54 -07:00
Kelly Brazil
f9a9062147 add documentation argument to parser_info and all_parser_info 2022-03-14 10:46:23 -07:00
Kelly Brazil
89e5919796 add -A to second example 2022-03-14 09:56:50 -07:00
Kelly Brazil
e5f5b2591d changelog update 2022-03-14 09:45:17 -07:00
Kelly Brazil
77c667eec0 ubuntu fixes 2022-03-14 09:43:18 -07:00
Kelly Brazil
b257ce8c2f add mpstat_s tests 2022-03-13 12:25:50 -07:00
Kelly Brazil
c693c868ca add mpstat streaming parser 2022-03-11 15:59:38 -08:00
Kelly Brazil
6f98b27a05 add mpstat tests 2022-03-11 15:33:31 -08:00
Kelly Brazil
d7efd25d88 add mpstat to docs 2022-03-11 14:54:06 -08:00
Kelly Brazil
2cddb1f0bb working mpstat 2022-03-11 14:00:19 -08:00
Kelly Brazil
ae1c331595 initial working version 2022-03-11 13:15:39 -08:00
Kelly Brazil
bc97052ed4 initial add mpstat parser 2022-03-11 12:37:17 -08:00
Kelly Brazil
6c3e0e2aa0 formatting 2022-03-11 12:37:01 -08:00
Kelly Brazil
dd052e0146 add underscores to column examples 2022-03-11 10:25:24 -08:00
Kelly Brazil
54e8f58145 add table result examples 2022-03-10 16:50:55 -08:00
Kelly Brazil
def7aa5764 formatting 2022-03-10 15:36:11 -08:00
Kelly Brazil
6986c74f6d remove direct parser module example from doc 2022-03-10 15:18:27 -08:00
Kelly Brazil
b784db404d streaming doc formatting update 2022-03-10 13:32:26 -08:00
Kelly Brazil
8aee4517bb doc formatting 2022-03-10 13:02:50 -08:00
Kelly Brazil
a5fb8fbf94 streaming doc update 2022-03-10 10:10:57 -08:00
Kelly Brazil
b9365e2ac2 add pidstat-s tests 2022-03-10 09:23:36 -08:00
Kelly Brazil
696338c1a3 add streaming test template 2022-03-10 09:04:12 -08:00
Kelly Brazil
4f0616190b doc update 2022-03-10 08:14:58 -08:00
Kelly Brazil
3278cb0de3 add type hints 2022-03-10 08:14:46 -08:00
Kelly Brazil
4fc04256a5 rollback noReturn to tuple 2022-03-10 08:00:37 -08:00
Kelly Brazil
e4ae0fea63 fix type annotation 2022-03-09 16:28:55 -08:00
Kelly Brazil
d3727ea090 doc update 2022-03-09 16:09:35 -08:00
Kelly Brazil
0d13909cf6 add pidstat-s parser 2022-03-09 16:07:29 -08:00
Kelly Brazil
c52ca20e28 fix comment 2022-03-09 16:07:17 -08:00
Kelly Brazil
21f27f26c8 add pidstat tests 2022-03-09 15:37:10 -08:00
Kelly Brazil
5e7a87f397 add test template 2022-03-09 15:37:04 -08:00
Kelly Brazil
845d763829 format docs to fit 80 columns 2022-03-09 15:09:22 -08:00
Kelly Brazil
f5c7d52ec7 formatting 2022-03-09 14:43:56 -08:00
Kelly Brazil
c3198a5874 formatting 2022-03-09 14:17:48 -08:00
Kelly Brazil
bbd4afa735 add pidstat to docs 2022-03-09 14:09:58 -08:00
Kelly Brazil
ae754a84bf doc update 2022-03-09 14:06:34 -08:00
Kelly Brazil
3389eb5deb initial working parser 2022-03-09 13:18:04 -08:00
Kelly Brazil
01f2c1e71f add pidstat parser 2022-03-09 12:13:32 -08:00
Kelly Brazil
8bfbf8f1bc simplify error message 2022-03-09 12:13:07 -08:00
Kelly Brazil
f4242669ba minor cleanup 2022-03-09 10:52:40 -08:00
Kelly Brazil
bebd9331f1 Merge pull request #211 from kellyjonbrazil/master
sync to dev
2022-03-09 18:49:01 +00:00
Kelly Brazil
ac61e9ad2c add pypi link 2022-03-08 13:21:05 -08:00
Kelly Brazil
648ef4d8a9 update badge links 2022-03-08 13:19:20 -08:00
Kelly Brazil
727fc9a701 doc update 2022-03-05 15:19:25 -08:00
Kelly Brazil
306512d6bb force AM/PM to uppercase in date parser 2022-03-05 15:13:47 -08:00
Kelly Brazil
6afb1d389c Merge pull request #209 from kellyjonbrazil/dev
Dev v1.18.4
2022-03-05 21:49:36 +00:00
Kelly Brazil
9861983481 doc update 2022-03-05 13:45:28 -08:00
Kelly Brazil
ca79053db0 document pydoc version 2022-03-05 12:15:47 -08:00
Kelly Brazil
29c263f878 pydoc formatting fixes 2022-03-05 12:15:14 -08:00
Kelly Brazil
128c3c170a doc update 2022-03-04 16:38:49 -08:00
Kelly Brazil
a531ab8864 formatting 2022-03-04 16:35:06 -08:00
Kelly Brazil
0c1be7cc11 reduce dig example size 2022-03-04 16:29:36 -08:00
Kelly Brazil
e4222b45f5 fix names to mod names 2022-03-04 16:24:13 -08:00
Kelly Brazil
ac32c69c31 formatting 2022-03-04 13:35:16 -08:00
Kelly Brazil
cb2dfeac8d change name to JSON Convert 2022-03-04 13:27:39 -08:00
Kelly Brazil
9a3602e70b doc update 2022-03-04 08:57:11 -08:00
Kelly Brazil
a9f53ee258 optimize streaming parser detection in cli 2022-03-03 17:50:19 -08:00
Kelly Brazil
6be3d3d982 doc update 2022-03-03 17:38:47 -08:00
Kelly Brazil
e49df72083 use streaming parser list to find streaming parsers 2022-03-03 17:37:01 -08:00
Kelly Brazil
7ede7be7bf add standard and streaming list functions 2022-03-03 17:36:40 -08:00
Kelly Brazil
4758e28a36 formatting 2022-03-02 15:24:18 -08:00
Kelly Brazil
4a1ee151b3 add dhcp6 options to docs 2022-03-02 10:57:09 -08:00
Kelly Brazil
8c8afc1a92 formatting 2022-03-02 10:15:01 -08:00
Kelly Brazil
ed205f7720 doc update 2022-02-28 12:55:05 -08:00
Kelly Brazil
d65f7ae992 add nmcli 2022-02-28 12:26:06 -08:00
Kelly Brazil
e2ffef57b9 fix test 2022-02-28 12:20:39 -08:00
Kelly Brazil
002caa9fb3 add fedora tests 2022-02-28 12:19:02 -08:00
Kelly Brazil
b7c6faf3da enhance error message 2022-02-25 11:23:20 -08:00
Kelly Brazil
554ca61d17 add tests 2022-02-25 11:19:20 -08:00
Kelly Brazil
7b9722d255 fix formatting 2022-02-24 21:21:02 -08:00
Kelly Brazil
5505bde8ef doc update 2022-02-24 20:53:54 -08:00
Kelly Brazil
dbcd9a4060 bump version to 1.0 2022-02-24 20:52:28 -08:00
Kelly Brazil
4bdeb2b3aa simplify warning message 2022-02-24 20:52:18 -08:00
Kelly Brazil
6ae1d03187 doc fix 2022-02-24 20:47:15 -08:00
Kelly Brazil
f75b06abe4 doc update 2022-02-24 20:43:20 -08:00
Kelly Brazil
1923925710 update changelog 2022-02-24 20:35:00 -08:00
Kelly Brazil
2c5c57ae04 version bump 2022-02-24 20:33:10 -08:00
Kelly Brazil
f4d11d697e finish use cases and doc 2022-02-24 20:31:58 -08:00
Kelly Brazil
7f409b7082 enhance ParseError cli message 2022-02-24 20:31:09 -08:00
Kelly Brazil
937fa5aad2 split dhcp options 2022-02-24 18:22:19 -08:00
Kelly Brazil
19dcef5135 firm up flow. add/remove text. parse routes 2022-02-24 17:10:39 -08:00
Kelly Brazil
3d01356461 add text_kv function 2022-02-24 14:53:26 -08:00
Kelly Brazil
2d6f666fa4 add dev show and conn show parsers 2022-02-24 12:21:13 -08:00
Kelly Brazil
4dda895f12 initial nmcli parser 2022-02-24 11:25:14 -08:00
Kelly Brazil
52617b1722 Merge pull request #208 from kellyjonbrazil/master
sync to dev
2022-02-21 16:35:12 +00:00
Kelly Brazil
961968a0fc fix schema 2022-02-14 15:14:22 -08:00
Kelly Brazil
f026a788e5 add xrandr example 2022-02-14 11:30:03 -08:00
Kelly Brazil
2f7c03eb35 Merge pull request #207 from kellyjonbrazil/dev
Dev v1.18.3
2022-02-14 10:36:08 -08:00
Kelly Brazil
3afaa48eee doc update 2022-02-14 10:31:41 -08:00
Kelly Brazil
3201452564 add -p to example 2022-02-14 10:06:09 -08:00
Kelly Brazil
7ee1e34fc7 doc update 2022-02-14 10:03:52 -08:00
Kelly Brazil
67dbf05016 add type annotations 2022-02-14 09:58:31 -08:00
Kelly Brazil
4ac9f2e3da doc update 2022-02-14 09:37:37 -08:00
Kelly Brazil
3f5f6e39a7 formatting 2022-02-14 09:20:16 -08:00
Kelly Brazil
4723db8e3c doc updates 2022-02-14 09:14:46 -08:00
Kelly Brazil
ca914ec77d add nodata test 2022-02-14 09:14:38 -08:00
Kelly Brazil
dcc7f3f357 Merge pull request #204 from lyterk/xrandr
New parser: xrandr
2022-02-13 17:45:53 -08:00
Kevin Lyter
cbdc666236 Return empty object if no results and filenames
- If no results are returned, return {} instead of {"screens": [],
"unassociated_devices": []}
- simple_xrandr -> xrandr_simple
2022-02-09 22:06:23 -08:00
Kelly Brazil
184ef3a1fa doc update 2022-02-08 14:45:33 -08:00
Kelly Brazil
c732f75944 doc update 2022-02-08 14:43:14 -08:00
Kelly Brazil
7a1ae4f5fc add library tests 2022-02-08 13:32:22 -08:00
Kelly Brazil
d04bc3757c add xrandr 2022-02-08 07:33:26 -08:00
Kelly Brazil
73e8391653 formatting 2022-02-07 16:58:06 -08:00
Kelly Brazil
f6c1463c15 formatting 2022-02-07 16:31:43 -08:00
Kelly Brazil
d392c7f901 doc update 2022-02-07 15:44:54 -08:00
Kelly Brazil
d0387f5820 add timestamp format hints for better performance 2022-02-07 15:44:46 -08:00
Kelly Brazil
76f92908a3 add format hints for performance optimization 2022-02-07 15:43:24 -08:00
Kelly Brazil
1a115da67b add lru_cache maxsize for python 3.7 support 2022-02-07 08:34:34 -08:00
Kelly Brazil
f0a37ccf30 use lru_cache for significant performance boost to timestamp 2022-02-07 08:30:11 -08:00
Kelly Brazil
f331f53a53 use !r formatting instead of quotes 2022-02-07 08:06:48 -08:00
Kelly Brazil
8611aff06b add examples 2022-02-07 06:42:35 -08:00
Kelly Brazil
2f3f78e8d3 refine streaming parsers 2022-02-07 06:29:17 -08:00
Kelly Brazil
d1e0ee6123 use new streaming functions 2022-02-06 08:56:18 -08:00
Kelly Brazil
45314c9808 move some functions to streaming 2022-02-06 08:55:42 -08:00
Kelly Brazil
df00945b46 move try/except inside for loop 2022-02-04 16:03:44 -08:00
Kelly Brazil
fda0050d86 add rsync-s tests 2022-02-04 14:39:45 -08:00
Kelly Brazil
a76d46f9ec refactor ignore_exceptions 2022-02-04 12:14:16 -08:00
Kevin Lyter
6b069a82d0 Add xrandr to lib.py 2022-02-03 22:40:40 -08:00
Kevin Lyter
6b793d0521 Clean up types
* | operator => Union[]
* Remove unused import Iterator
* Remove comment
2022-02-03 22:40:35 -08:00
Kevin Lyter
ce9103f7cc Delete old files in template folder 2022-02-03 18:12:46 -08:00
Kelly Brazil
671d6dee36 doc update 2022-02-03 15:47:46 -08:00
Kelly Brazil
49929c714c add add_jc_meta decorator 2022-02-03 15:44:18 -08:00
Kelly Brazil
2986771f07 require python v3.7 and above since v3.6 is now deprecated 2022-02-03 09:21:20 -08:00
Kevin Lyter
520082d963 New parser: xrandr
Tests passing, working as intended in plugin directory
2022-02-02 20:33:25 -08:00
Kelly Brazil
021e296d45 move variable inits and regexes up 2022-02-02 17:06:20 -08:00
Kelly Brazil
42e56fbcea move regex up 2022-02-02 17:05:53 -08:00
Kelly Brazil
a5b62a4055 add processing and docs 2022-02-02 16:03:14 -08:00
Kelly Brazil
be98c9b7f6 simplify try/except by moving outside for loop 2022-02-02 15:59:12 -08:00
Kelly Brazil
aceeb84507 doc update 2022-02-02 15:58:29 -08:00
Kelly Brazil
1391063217 first draft rsync streaming parser 2022-02-02 11:49:39 -08:00
Kelly Brazil
52157addd0 fix compatible list 2022-02-02 11:49:24 -08:00
Kelly Brazil
ec0bc6615e formatting 2022-02-01 19:20:19 -08:00
Kelly Brazil
2f80800e38 simplify all_parser_info comprehension 2022-02-01 19:06:41 -08:00
Kelly Brazil
3959d3347c doc update 2022-02-01 18:33:07 -08:00
Kelly Brazil
b57d25c69a clean up return type for parser_info 2022-02-01 18:30:37 -08:00
Kelly Brazil
63e43a7cab doc updates 2022-02-01 17:57:12 -08:00
Kelly Brazil
21719f9a26 type annotation updates 2022-02-01 17:54:22 -08:00
Kelly Brazil
96ec70de4f remove unneeded optional 2022-02-01 17:18:55 -08:00
Kelly Brazil
a15a1967dc fix typo 2022-02-01 17:18:39 -08:00
Kelly Brazil
a10d756629 fixy mypy issues 2022-02-01 16:49:31 -08:00
Kelly Brazil
0700dc7a64 remove cygwin from compatible 2022-02-01 16:42:51 -08:00
Kelly Brazil
ca654b2140 fix parser order 2022-02-01 16:42:10 -08:00
Kelly Brazil
4ff3b87c1c remove future field from docstring 2022-02-01 16:18:38 -08:00
Kelly Brazil
ea244fb7a9 formatting 2022-02-01 16:17:03 -08:00
Kelly Brazil
8061f30e6f add centos -i nochange test 2022-02-01 16:16:33 -08:00
Kelly Brazil
8f3b12e81e add fixes for mac -i output 2022-02-01 14:52:51 -08:00
Kelly Brazil
d0694ce0db add nochange log test for mac 2022-02-01 14:20:53 -08:00
Kelly Brazil
0cd4c4bc7f add nochange tests 2022-02-01 13:58:51 -08:00
Kelly Brazil
12f90c349c update regexes for unchanged files 2022-02-01 13:54:25 -08:00
Kelly Brazil
26b8a1f167 remove packages from binaries and packages header 2022-02-01 09:58:18 -08:00
Kelly Brazil
3abe382c06 add examples 2022-01-31 16:01:42 -08:00
Kelly Brazil
1e2edc2c7b add timestamp 2022-01-31 15:54:05 -08:00
Kelly Brazil
5fe032a674 fix typo 2022-01-31 13:44:44 -08:00
Kelly Brazil
e825c02df1 add rsync tests 2022-01-31 13:23:31 -08:00
Kelly Brazil
a4a4d170b5 update docstring 2022-01-31 13:23:22 -08:00
Kelly Brazil
d0fcd523cb fix process conversions 2022-01-31 11:13:23 -08:00
Kelly Brazil
f72b7dc75d change keyname to files and remove future key 2022-01-30 16:37:45 -08:00
Kelly Brazil
4101dc6bf7 add log-file support 2022-01-30 16:21:03 -08:00
Kelly Brazil
ea5011b616 updated schema. add log-file option support 2022-01-29 17:24:43 -08:00
Kelly Brazil
d6de81747f add int/float conversions 2022-01-28 15:00:05 -08:00
Kelly Brazil
38f04b1c96 add summary 2022-01-28 14:45:01 -08:00
Kelly Brazil
84169e1a91 add rsync parser 2022-01-28 14:08:43 -08:00
Kelly Brazil
1f96586a5e reorder imports 2022-01-28 14:08:21 -08:00
Kelly Brazil
681176e4c9 Merge pull request #203 from kellyjonbrazil/dev
Dev v1.18.2
2022-01-27 16:53:37 -08:00
Kelly Brazil
8bb2663522 date update 2022-01-27 16:49:46 -08:00
Kelly Brazil
663abf3139 clean up scripts 2022-01-27 16:14:14 -08:00
Kelly Brazil
f7ac41db95 final doc update 2022-01-27 13:27:50 -08:00
Kelly Brazil
5502cda9e5 add additional test for dict inside list for all_parser_info() 2022-01-27 13:03:02 -08:00
Kelly Brazil
a2b165565f add lib tests for new functions 2022-01-27 12:54:44 -08:00
Kelly Brazil
b426369815 use all_parser_info() from lib in about function 2022-01-27 07:45:20 -08:00
Kelly Brazil
ac0840cc0a fix typo 2022-01-26 20:51:18 -08:00
Kelly Brazil
ee98ab0a4a doc update 2022-01-26 20:42:20 -08:00
Kelly Brazil
2adec2c003 update type hints with mypy help 2022-01-26 20:40:03 -08:00
Kelly Brazil
f19c9c71bf add type hints 2022-01-26 18:39:14 -08:00
Kelly Brazil
e93adf1884 fix doc 2022-01-26 18:09:30 -08:00
Kelly Brazil
254c4fc507 add new functions 2022-01-26 18:05:00 -08:00
Kelly Brazil
74d5f60d14 update console interview description 2022-01-26 17:17:40 -08:00
Kelly Brazil
db7dc0634b make **kwargs optional 2022-01-26 17:12:35 -08:00
Kelly Brazil
e156b0db45 add type hints 2022-01-26 17:08:03 -08:00
Kelly Brazil
50adc05fbd formatting 2022-01-26 16:58:48 -08:00
Kelly Brazil
446cac7c21 doc update 2022-01-26 16:55:39 -08:00
Kelly Brazil
28ffe3076b formatting 2022-01-26 16:34:23 -08:00
Kelly Brazil
d4d5e206ca type hints update 2022-01-26 15:54:36 -08:00
Kelly Brazil
42fbe40a4a simplify type hints 2022-01-26 15:54:18 -08:00
Kelly Brazil
27e4a120e2 remove trailing comma 2022-01-26 15:31:18 -08:00
Kelly Brazil
b5d5b7c73a remove private classes 2022-01-26 15:01:42 -08:00
Kelly Brazil
e7471556ba remove sed lines 2022-01-26 14:39:11 -08:00
Kelly Brazil
640a21341b fix indentation 2022-01-26 14:38:57 -08:00
Kelly Brazil
f5befad3e4 move docstring under __init__ 2022-01-26 14:21:06 -08:00
Kelly Brazil
f8223023c3 change header depth 2022-01-26 14:16:04 -08:00
Kelly Brazil
7028e87f9b remove TOC for parsers 2022-01-26 13:03:51 -08:00
Kelly Brazil
590728f9c1 try new pydoc-markdown formatting options 2022-01-26 11:50:25 -08:00
Kelly Brazil
7cc147fe2d increase heading size 2022-01-25 19:28:37 -08:00
Kelly Brazil
3cfb3965bb formatting 2022-01-25 19:28:04 -08:00
Kelly Brazil
155d421322 formatting 2022-01-25 19:18:54 -08:00
Kelly Brazil
d3e10bb87b add lsusb docs 2022-01-25 18:59:40 -08:00
Kelly Brazil
fd5433ee62 parse docstring formatting 2022-01-25 18:58:09 -08:00
Kelly Brazil
4568f2d06e formatting for parse docstring 2022-01-25 18:51:56 -08:00
Kelly Brazil
c36e513d1b formatting 2022-01-25 18:42:55 -08:00
Kelly Brazil
8e089baf3f remove info class from docs 2022-01-25 18:38:26 -08:00
Kelly Brazil
386f6c317e update markdown processor settings 2022-01-25 18:03:34 -08:00
Kelly Brazil
75cd84ce8a try new markdown conversion 2022-01-25 17:07:47 -08:00
Kelly Brazil
6fad44e35d fix type hint 2022-01-25 16:28:29 -08:00
Kelly Brazil
1caac750da Update type hints 2022-01-25 16:27:29 -08:00
Kelly Brazil
16370dcb3d update type hints 2022-01-25 15:49:48 -08:00
Kelly Brazil
c1302f2573 add type-hints to public api 2022-01-25 15:49:31 -08:00
Kelly Brazil
6f0ffe0955 docu update 2022-01-25 15:48:00 -08:00
Kelly Brazil
1f89745fe7 version bump 2022-01-25 11:17:18 -08:00
Kelly Brazil
a46ac18ef7 doc update 2022-01-25 10:47:05 -08:00
Kelly Brazil
1a05f1c575 add parser info functions. move _get_parser functionality from cli to lib 2022-01-25 10:46:58 -08:00
Kelly Brazil
08f818aa42 Merge pull request #199 from kellyjonbrazil/master
sync to dev
2022-01-25 00:45:53 +00:00
Kelly Brazil
b3896650c2 revert column formatting 2022-01-23 13:40:50 -08:00
Kelly Brazil
f285539526 conform to 80 columns 2022-01-23 13:36:22 -08:00
Kelly Brazil
a896dcdf3b formatting 2022-01-23 13:14:00 -08:00
Kelly Brazil
0a187d4ed0 add console interview links 2022-01-23 10:04:19 -08:00
Kelly Brazil
2d65bc57d5 add quotes 2022-01-21 16:58:45 -08:00
Kelly Brazil
ab63809fde update description 2022-01-21 16:13:00 -08:00
Kelly Brazil
6f04707dc6 add python package doc info to top of page 2022-01-21 15:33:43 -08:00
Kelly Brazil
d14a86a9b5 fix typo 2022-01-21 15:29:46 -08:00
Kelly Brazil
8e6a31d3da minor fix for macOS binary 2022-01-21 14:08:19 -08:00
Kelly Brazil
6e7b6afe87 Merge pull request #198 from kellyjonbrazil/dev
Dev v1.18.0
2022-01-21 13:52:16 -08:00
Kelly Brazil
027c231097 formatting 2022-01-21 13:48:38 -08:00
Kelly Brazil
f1cf7d1f95 add helper function info 2022-01-21 12:51:26 -08:00
Kelly Brazil
df611cc263 formatting 2022-01-21 12:41:52 -08:00
Kelly Brazil
0f3143bbbb formatting 2022-01-21 12:39:22 -08:00
Kelly Brazil
c280757b76 formatting 2022-01-21 12:35:48 -08:00
Kelly Brazil
d30b9d84ef formatting 2022-01-21 12:33:23 -08:00
Kelly Brazil
50ded1dbd9 doc update 2022-01-21 12:31:03 -08:00
Kelly Brazil
e319aea5a4 add doc version info 2022-01-21 12:29:36 -08:00
Kelly Brazil
ba86509c1d simplify OSError exception handling 2022-01-21 12:15:34 -08:00
Kelly Brazil
0a9279ae6b doc update 2022-01-21 12:15:16 -08:00
Kelly Brazil
a13dde12af change raw output wording 2022-01-21 07:42:03 -08:00
Kelly Brazil
e2ed358de1 changelog update 2022-01-20 15:31:24 -08:00
Kelly Brazil
a2cd366621 Delete _config.yml 2022-01-20 15:01:49 -08:00
Kelly Brazil
15addd9bfc doc fix 2022-01-20 09:59:23 -08:00
Kelly Brazil
a4e34b0053 add universal parser docs 2022-01-20 09:46:24 -08:00
Kelly Brazil
d09529ac30 changelog update 2022-01-20 09:40:34 -08:00
Kelly Brazil
553097b505 docstring update 2022-01-20 09:40:08 -08:00
Kelly Brazil
49c5568577 module doc update 2022-01-20 07:49:45 -08:00
Kelly Brazil
6962b9ee8a formatting 2022-01-19 22:24:59 -08:00
Kelly Brazil
b4575a3f78 add lib docs 2022-01-19 22:20:36 -08:00
Kelly Brazil
35b54d235d add python package doc info 2022-01-19 21:53:13 -08:00
Kelly Brazil
583a5757e4 formatting 2022-01-19 21:32:21 -08:00
Kelly Brazil
f355333eee formatting 2022-01-19 19:27:46 -08:00
Kelly Brazil
4d7df10960 formatting 2022-01-19 19:24:37 -08:00
Kelly Brazil
66b2c28f4b formatting 2022-01-19 19:22:08 -08:00
Kelly Brazil
299a9c6d88 formatting 2022-01-19 19:19:25 -08:00
Kelly Brazil
bd391d979c add lib function docs 2022-01-19 19:18:03 -08:00
Kelly Brazil
7309bd2282 add get_help 2022-01-19 18:47:44 -08:00
Kelly Brazil
ce84c09d33 add get_help() 2022-01-19 18:44:26 -08:00
Kelly Brazil
b4fffbb647 formatting 2022-01-19 17:30:14 -08:00
Kelly Brazil
3701b4198a formatting 2022-01-19 17:29:22 -08:00
Kelly Brazil
d4c34098fa formatting 2022-01-19 11:31:29 -08:00
Kelly Brazil
b3c531193b formatting 2022-01-19 11:08:59 -08:00
Kelly Brazil
1d0e07c77b formatting 2022-01-19 10:31:46 -08:00
Kelly Brazil
06a322cf9c rename tests and add conversion function tests 2022-01-19 10:31:36 -08:00
Kelly Brazil
623d148712 doc update 2022-01-19 09:30:53 -08:00
Kelly Brazil
647e83d043 add test to ensure there are zero plugin parsers installed during tests 2022-01-19 09:29:09 -08:00
Kelly Brazil
91a5544644 doc update 2022-01-19 09:28:35 -08:00
Kelly Brazil
a1190998ae add jc and jc.lib tests 2022-01-19 09:15:24 -08:00
Kelly Brazil
097d7a1850 simplify __init__ 2022-01-19 09:15:11 -08:00
Kelly Brazil
302bf72e72 Update high-level API docs 2022-01-18 15:38:03 -08:00
Kelly Brazil
2c42baf3a4 add new high-level api info 2022-01-18 14:18:12 -08:00
Kelly Brazil
03feb89c84 add module list info 2022-01-18 13:46:11 -08:00
Kelly Brazil
9dd553192f doc update 2022-01-18 13:40:09 -08:00
Kelly Brazil
fa3f02e9d1 version bump 2022-01-18 13:39:51 -08:00
Kelly Brazil
0a9dde58c5 add jc.parse() high-level API 2022-01-18 13:10:14 -08:00
Kelly Brazil
70cb4453be Merge pull request #195 from kellyjonbrazil/dev
Dev v1.17.7
2022-01-14 11:54:29 -08:00
Kelly Brazil
830674cc6f version bump 2022-01-14 11:47:25 -08:00
Kelly Brazil
fb406b58a1 formatting 2022-01-08 20:22:53 -08:00
Kelly Brazil
55b272e412 tighten stat data detection 2022-01-06 11:13:14 -08:00
Kelly Brazil
94f62a9bf3 formatting 2022-01-06 11:03:49 -08:00
Kelly Brazil
8d19e4cb7b doc update 2022-01-06 11:00:53 -08:00
Kelly Brazil
7e510d48e0 simplify non-stat parse error logic 2022-01-06 10:36:33 -08:00
Kelly Brazil
7b20cffb14 simplify last item logic 2022-01-05 11:44:00 -08:00
Kelly Brazil
5c934c43c1 add continue to simplify logic 2022-01-05 11:39:00 -08:00
Kelly Brazil
8609298449 update docstring 2022-01-05 11:25:58 -08:00
Kelly Brazil
72cb0dc10b fixup for first and last items 2022-01-05 11:22:01 -08:00
Kelly Brazil
7b22fa81de raise for non-stat data 2022-01-05 07:46:58 -08:00
Kelly Brazil
0b6a130779 ignore blank lines 2022-01-04 16:43:38 -08:00
Kelly Brazil
fdcf4338e0 add examples to docstring 2022-01-04 15:31:00 -08:00
Kelly Brazil
ee43037f48 remove unused continue lines 2022-01-04 15:13:42 -08:00
Kelly Brazil
26e365563c add schema and _process logic 2022-01-04 15:07:45 -08:00
Kelly Brazil
1b39586bb1 add stat streaming parser 2022-01-04 15:01:42 -08:00
Kelly Brazil
8bb3a6bea3 Merge pull request #194 from kellyjonbrazil/master
sync to dev
2022-01-04 13:33:35 -08:00
Kelly Brazil
e6900e2000 add jar-manifest 2022-01-03 09:41:16 -08:00
Kelly Brazil
0ee244756b spelling 2022-01-03 09:22:35 -08:00
Kelly Brazil
6d5ac9abe6 update docs 2022-01-03 09:19:40 -08:00
Kelly Brazil
44f6d9e132 changelog update 2022-01-03 09:18:43 -08:00
Kelly Brazil
360154559c Merge pull request #193 from kellyjonbrazil/dev
Dev add csv doublequote fix
2022-01-03 09:12:50 -08:00
Kelly Brazil
78672bd7ad Merge pull request #190 from shaikustin/csv-doubleqouted
fix doubleqoute in csv
2022-01-03 09:08:57 -08:00
Kelly Brazil
65d96e26b5 add streaming tests 2022-01-03 09:06:00 -08:00
Kelly Brazil
241d53af9a Merge pull request #192 from kellyjonbrazil/dev
Dev v1.17.6
2022-01-03 08:49:15 -08:00
Kelly Brazil
5563829df2 make dialect sniff behavior match non-streaming parser 2022-01-03 08:48:23 -08:00
Kelly Brazil
3a4a27e1f9 version bump 2022-01-02 11:44:25 -08:00
Kelly Brazil
9c887a36a8 update csv_s parser with csv changes 2022-01-02 11:44:18 -08:00
Kelly Brazil
bc7973af36 update copyright 2022-01-02 11:07:15 -08:00
Kelly Brazil
32972d8fdb doc update 2022-01-02 11:00:52 -08:00
Kelly Brazil
b128d9109c add MANIFEST.MF tests 2022-01-02 10:51:02 -08:00
Kelly Brazil
929d7273a4 doc updates 2022-01-02 10:29:56 -08:00
shaik
2a40f84274 fix doubleqoute in csv 2022-01-02 17:30:25 +02:00
Kelly Brazil
9ff6fa818f add jar-manifest 2022-01-01 10:08:40 -08:00
Kelly Brazil
dac73a4bfe Merge pull request #189 from kellyjonbrazil/master
use github releases instead of packaging site
2022-01-01 10:06:46 -08:00
Kelly Brazil
d7895547f7 Merge pull request #188 from listuser/new_branch
Create key value pairs from a MANIFEST.MF file, to include key multiline value pairs.
2022-01-01 10:04:47 -08:00
listuser
b7d439cb87 Renamed jar-manifest.py to jar_manifest.py, added multi manifest outputs to tests... 2021-12-31 12:15:50 -08:00
listuser
7cc903a5f5 Removed inflating from examples in jar-manifest.py 2021-12-30 15:10:53 -08:00
listuser
c495a8291b Updated test output in MANIFEST.MF.json 2021-12-30 15:06:06 -08:00
listuser
5e1d7d777c Renamed metamf.py to jar-manifest.py, plus other changes 2021-12-30 15:02:48 -08:00
listuser
7edad3f676 Create key value pairs from a MANIFEST.MF file, to include key multiline value pairs. 2021-12-29 12:15:15 -08:00
Kelly Brazil
f7331001d4 use github releases instead of packaging site 2021-12-23 11:35:39 -08:00
Kelly Brazil
f8e09ae2ff Merge pull request #187 from kellyjonbrazil/master
sync to dev
2021-12-21 15:46:39 -06:00
Kelly Brazil
433c7cc0f0 formatting 2021-12-21 13:42:24 -08:00
Kelly Brazil
d753e71a74 Merge pull request #186 from kellyjonbrazil/dev
Dev v1.17.5
2021-12-21 15:21:18 -06:00
Kelly Brazil
2e4f5a508b version bump 2021-12-21 12:19:17 -08:00
Kelly Brazil
88b960eff6 doc update 2021-12-21 12:14:20 -08:00
Kelly Brazil
88c77bd89e add zipinfo tests 2021-12-21 12:08:16 -08:00
Kelly Brazil
51a7a4251f add multi-archive test output 2021-12-21 11:11:56 -08:00
Kelly Brazil
51d2f316f3 add multi-archive support 2021-12-21 11:11:44 -08:00
Kelly Brazil
ff78a46c48 add zipinfo parser 2021-12-21 08:13:17 -08:00
Kelly Brazil
ed4a9dc1d4 formatting 2021-12-21 08:13:00 -08:00
Kelly Brazil
63182dba26 Merge pull request #185 from listuser/new_branch
contributed zipinfo parser
2021-12-21 10:08:46 -06:00
Matt J
9c1eaa9389 revised zipinfo.py nested version 2021-12-20 21:53:34 -08:00
Matt J
bc520fcbcd added zipinfo.py nested version 2021-12-20 14:29:50 -08:00
Matt J
46faac1a12 add test data zipinfo.json and zipinfo.out 2021-12-19 18:08:11 -08:00
Matt J
3c424c0cb3 initial commit zipinfo.py to new_branch 2021-12-19 14:05:48 -08:00
Kelly Brazil
3ac8d0362b use quotes around python versions 2021-12-16 07:04:35 -08:00
Kelly Brazil
d88b998e6c formatting 2021-12-09 10:58:06 -08:00
Kelly Brazil
a9ed55c006 fix spelling 2021-12-09 10:54:04 -08:00
Kelly Brazil
ea61434123 fix schema docs 2021-12-09 10:21:37 -08:00
Kelly Brazil
a73d0d26cb Merge pull request #184 from kellyjonbrazil/dev
Dev 1.17.4
2021-12-08 20:49:01 -08:00
Kelly Brazil
b4506976e3 formatting 2021-12-08 11:21:12 -08:00
Kelly Brazil
34cb75a096 version bump 2021-12-08 08:46:00 -08:00
Kelly Brazil
34df643f60 add disable colors section 2021-12-08 08:35:09 -08:00
Kelly Brazil
ac7c13fcc0 add -C option to docs 2021-12-08 08:22:28 -08:00
Kelly Brazil
4fdb34c7d5 add no-color.org 2021-12-08 08:19:43 -08:00
Kelly Brazil
7ac468e35a changelog update 2021-12-08 08:14:36 -08:00
Kelly Brazil
df190aa299 add -C option to force color even with pipes 2021-12-08 08:14:28 -08:00
Kelly Brazil
9621475e86 changelog update 2021-12-07 15:46:02 -08:00
Kelly Brazil
82e0160de8 refactor NO_COLOR test 2021-12-07 15:45:11 -08:00
Kelly Brazil
d03fb8b626 Merge branch 'dev' of https://github.com/kellyjonbrazil/jc into dev 2021-12-07 15:34:23 -08:00
Kelly Brazil
b300dfb3d7 Add support for NO_COLOR env variable 2021-12-07 15:34:20 -08:00
Kelly Brazil
a7de9111d9 Merge pull request #183 from kellyjonbrazil/dev
Dev v1.17.3
2021-12-02 16:37:46 -08:00
Kelly Brazil
7933dfdbe7 Merge branch 'master' into dev 2021-12-02 16:34:06 -08:00
Kelly Brazil
f7cb5f7d01 update date 2021-12-02 16:30:47 -08:00
Kelly Brazil
a26a298f1a doc update 2021-12-02 11:42:56 -08:00
Kelly Brazil
dbd134d0da add examples to docs 2021-12-02 11:40:47 -08:00
Kelly Brazil
11aa01b0d9 iostat-s tests 2021-12-02 11:38:00 -08:00
Kelly Brazil
6f18e53443 fix for null lines 2021-12-02 11:37:52 -08:00
Kelly Brazil
7b467c4665 add ubuntu 20.10 tests 2021-12-02 09:30:16 -08:00
Kelly Brazil
537b8f2630 add more int conversions 2021-12-02 09:14:43 -08:00
Kelly Brazil
4d823575e7 add more float fields 2021-12-02 08:47:25 -08:00
Kelly Brazil
541aa1d09f Add new field float conversions for iostat v11 2021-12-02 08:41:36 -08:00
Kelly Brazil
8f02021014 formatting 2021-12-02 05:54:38 -08:00
Kelly Brazil
158a15157c changelog update 2021-12-01 16:47:17 -08:00
Kelly Brazil
2752e0d66a add iostat streaming parser 2021-12-01 16:47:09 -08:00
Kelly Brazil
6c11e912af update changelog 2021-12-01 16:14:22 -08:00
Kelly Brazil
43d34461e2 update docs 2021-12-01 16:12:51 -08:00
Kelly Brazil
4dfdc9b0f6 Merge branch 'dev' of https://github.com/kellyjonbrazil/jc into dev 2021-12-01 16:02:10 -08:00
Kelly Brazil
e2311cbb03 add iostat tests 2021-12-01 16:02:06 -08:00
Kelly Brazil
bf15575e90 fixes for ubunut 2021-12-01 16:01:52 -08:00
Kelly Brazil
406336c718 add iostat example 2021-12-01 13:53:31 -08:00
Kelly Brazil
6665ffaeb8 remove python 3.6 from tests 2021-12-01 10:59:07 -08:00
Kelly Brazil
dcf552ca0c add _process and cleanup 2021-12-01 10:34:55 -08:00
Kelly Brazil
7a6ebf3c95 add iostat parser 2021-11-30 16:54:32 -08:00
Kelly Brazil
d2dc4a983c changelog update 2021-11-30 11:59:26 -08:00
Kelly Brazil
1168259bc2 add doc strings 2021-11-30 11:57:04 -08:00
Kelly Brazil
e8e4b46021 use jc.utils type checks 2021-11-30 11:49:40 -08:00
Kelly Brazil
12d2de2282 use jc.utils.input_type_check() and simplify compatibility check 2021-11-30 11:43:06 -08:00
Kelly Brazil
0e2fe401e1 version bump 2021-11-30 10:08:27 -08:00
Kelly Brazil
14247adb0a add input type checks 2021-11-30 10:03:59 -08:00
Kelly Brazil
3a9f0934c4 add input type checks 2021-11-30 09:56:33 -08:00
Kelly Brazil
caf0a5c871 add input type checking 2021-11-30 09:51:27 -08:00
Kelly Brazil
cfb58b1cf3 add input type checks 2021-11-30 09:41:16 -08:00
Kelly Brazil
975cf195cc formatting 2021-11-30 09:40:49 -08:00
Kelly Brazil
8a46a259a3 add input type checks 2021-11-30 09:19:51 -08:00
Kelly Brazil
e395142e59 version bump 2021-11-29 16:45:22 -08:00
Kelly Brazil
caaeaf0d67 add 'str' type check on input 2021-11-29 16:29:23 -08:00
Kelly Brazil
21e69a7cbf ignore _config.yml 2021-11-24 19:33:07 -08:00
Kelly Brazil
603964935b remove trailing whitespace 2021-11-24 19:30:10 -08:00
Kelly Brazil
47eb83ae55 add .vscode 2021-11-24 13:32:51 -08:00
Kelly Brazil
fc0ce6c959 add streaming parser to custom parsers info 2021-11-22 09:45:14 -08:00
Kelly Brazil
077a29fb4e add _jc_meta field info 2021-11-22 09:36:58 -08:00
Kelly Brazil
8568d0d328 fix csv_s documentation 2021-11-22 09:10:11 -08:00
Kelly Brazil
597d39c28e Merge pull request #180 from kellyjonbrazil/dev
Dev v1.17.2
2021-11-18 06:52:01 -10:00
Kelly Brazil
eb888dcbbc version bump 2021-11-18 08:48:03 -08:00
Kelly Brazil
d1b9ac0841 doc update 2021-11-18 08:41:52 -08:00
Kelly Brazil
89a6d9c5c3 add key-check to restore previous behavior even with non-df data 2021-11-17 12:03:40 -08:00
Kelly Brazil
85d9837616 add df info 2021-11-17 11:41:54 -08:00
Kelly Brazil
cd7731484d fix for cases where the Filesystem data overflows the column length (happens on older versions of df) 2021-11-17 11:26:42 -08:00
Kelly Brazil
086da16b17 version bump 2021-11-15 13:05:53 -08:00
Kelly Brazil
20830528f0 add test for older netstat version fix 2021-11-15 12:52:43 -08:00
Kelly Brazil
83371edd8f add space before inode to compensate for removed dash 2021-11-15 12:25:22 -08:00
Kelly Brazil
364a81decc version bump 2021-11-04 10:25:51 -07:00
Kelly Brazil
ef09592ad3 update for 1.17.2 2021-11-04 10:21:38 -07:00
Kelly Brazil
4a86e109cc Merge pull request #179 from shaikustin/ping-alpine-linux
support alpine linux ping
2021-11-04 10:18:47 -07:00
Kelly Brazil
7fa5391b66 change alpine ping6 to ping 2021-11-04 10:13:44 -07:00
shaik
9b53ba5714 support alpine linux ping 2021-11-04 13:42:48 +02:00
Kelly Brazil
b59e38cfd2 Merge pull request #176 from kellyjonbrazil/dev
Dev v1.17.1
2021-10-30 14:02:25 -07:00
Kelly Brazil
5ba22dae59 add JSON lines info 2021-10-30 13:57:36 -07:00
Kelly Brazil
4232e523ac Merge branch 'master' into dev 2021-10-30 13:49:45 -07:00
Kelly Brazil
bee80b35d2 update for version bump 2021-10-30 13:47:21 -07:00
Kelly Brazil
c32395f695 linting 2021-10-27 12:54:20 -07:00
Kelly Brazil
735c5e1078 update comments for ParseError test: https://bugs.python.org/issue45617 2021-10-26 12:26:23 -07:00
Kelly Brazil
d09c94b292 add python 3.10 testing info 2021-10-26 12:24:49 -07:00
Kelly Brazil
4d04866f48 add python bug https://bugs.python.org/issue45617 info 2021-10-26 12:24:37 -07:00
Kelly Brazil
a2d90f4dfc force test 2021-10-26 10:04:39 -07:00
Kelly Brazil
93a5002c8b fix 3.10.0 version number 2021-10-26 10:01:02 -07:00
Kelly Brazil
23bf5227a4 Merge branch 'dev' of https://github.com/kellyjonbrazil/jc into dev 2021-10-26 07:44:04 -07:00
Kelly Brazil
77c96fa2a9 try tests on python 3.10 2021-10-26 07:43:47 -07:00
Kelly Brazil
3f5a1f015e add python 3.10 2021-10-26 07:42:37 -07:00
Kelly Brazil
b280c4fc18 add ParseError test to streaming csv parser 2021-10-26 07:36:44 -07:00
Kelly Brazil
3ab9b43a2e raise ParseError on newline bug 2021-10-26 07:36:23 -07:00
Kelly Brazil
46f568414a change streaming parser test names 2021-10-25 11:35:01 -07:00
Kelly Brazil
cba2fd299f add tests 2021-10-25 11:03:32 -07:00
Kelly Brazil
1e6e44f656 fix for piping data with non-platform newlines (e.g. windows csv files on unix) 2021-10-25 11:03:21 -07:00
Kelly Brazil
acac039994 working tests 2021-10-25 10:06:01 -07:00
Kelly Brazil
50a3b34016 optimizations and use iter() so we can exhaust data coming from list objects 2021-10-25 10:05:39 -07:00
Kelly Brazil
b45396070c update comment 2021-10-24 13:14:05 -07:00
Kelly Brazil
218b9aec8a doc update for streaming CSV parser 2021-10-24 13:10:47 -07:00
Kelly Brazil
2b887debc6 add csv streaming parser 2021-10-24 12:24:44 -07:00
Kelly Brazil
0313e3f8ca linting 2021-10-24 11:21:47 -07:00
Kelly Brazil
1669e6e20c linting 2021-10-24 10:58:13 -07:00
Kelly Brazil
ef6de75dda add vmstat timestamp tests to utils 2021-10-23 13:11:22 -07:00
Kelly Brazil
a6bcec425a comment update 2021-10-23 12:55:14 -07:00
Kelly Brazil
596ad9a64d update comment 2021-10-23 12:47:44 -07:00
Kelly Brazil
7a91c93319 add lsusb 2021-10-23 12:40:24 -07:00
Kelly Brazil
b5f7b35f89 comment update 2021-10-23 12:30:18 -07:00
Kelly Brazil
2f47fb7f14 fix ParseError tests 2021-10-23 12:24:35 -07:00
Kelly Brazil
1b214c4036 raise ParseError if -t option is detected. add test 2021-10-23 12:24:11 -07:00
Kelly Brazil
8f94f8acc6 add tests and update docs 2021-10-23 11:56:12 -07:00
Kelly Brazil
3a2a69cfa5 formatting 2021-10-23 11:39:08 -07:00
Kelly Brazil
f599c65988 add stress test examples 2021-10-23 11:08:26 -07:00
Kelly Brazil
ad12849fd9 update docs example and 2021-10-23 11:08:05 -07:00
Kelly Brazil
f36b3789e8 formatting 2021-10-22 15:39:02 -07:00
Kelly Brazil
6d18c0ba61 change variable name last_attribute and last_attr to last_item 2021-10-22 15:37:40 -07:00
Kelly Brazil
17097abec9 formatting 2021-10-22 15:28:44 -07:00
Kelly Brazil
b7ddd3b285 change variable names 2021-10-22 15:23:04 -07:00
Kelly Brazil
75b23f62c9 working configuration_descriptor and device_descriptor attributes 2021-10-22 15:18:55 -07:00
Kelly Brazil
f88967b2a5 add attribute lists up to interface_association 2021-10-22 15:02:04 -07:00
Kelly Brazil
ba2846664b edpoint_descriptors attributes working 2021-10-22 13:40:01 -07:00
Kelly Brazil
10dba37ca2 hub_descriptor attributes working 2021-10-22 12:49:57 -07:00
Kelly Brazil
0e6f938514 working hub_port_status section 2021-10-22 10:31:26 -07:00
Kelly Brazil
159d87c112 add length guard and test for uname with no -a on linux 2021-10-22 07:14:21 -07:00
Kelly Brazil
9e7b1621cf device_status working 2021-10-21 16:59:28 -07:00
Kelly Brazil
2057817ef8 add uname tests 2021-10-20 15:59:27 -07:00
Kelly Brazil
a1eabad2d3 add comments 2021-10-20 15:58:43 -07:00
Kelly Brazil
92bf2b1ca2 simplify fixup logic for uname 2021-10-20 15:27:14 -07:00
Kelly Brazil
2b2123a4ba add FreeBSD support 2021-10-20 07:34:37 -07:00
Kelly Brazil
908b2f9200 add items 2021-10-19 16:16:25 -07:00
Kelly Brazil
deff0c7bfd remove print debug 2021-10-19 16:05:10 -07:00
Kelly Brazil
7cd01efa64 fixup for cases where the 'process' and/or 'machine' fields are blank on linux 2021-10-19 16:01:56 -07:00
Kelly Brazil
2dbe56456b add nested_dict. start work on hub_port_status and device_status 2021-10-15 11:43:15 -07:00
Kelly Brazil
6078a411ef add initial schema doc 2021-10-13 11:07:09 -06:00
Kelly Brazil
4a3656562f del null keys 2021-10-13 07:26:31 -06:00
Kelly Brazil
ba75989a24 update comments 2021-10-12 22:51:45 -06:00
Kelly Brazil
9e9e2c3628 move state instantiation before has_data test 2021-10-12 22:40:39 -06:00
Kelly Brazil
9a2a8c6b61 shorten set_sections 2021-10-12 22:38:03 -06:00
Kelly Brazil
dae42ef161 add hub_port_status and device_status 2021-10-12 15:55:09 -06:00
Kelly Brazil
931f2cab78 add hub_descriptor 2021-10-12 12:38:40 -07:00
Kelly Brazil
72b061bed4 add endpoint_descriptors 2021-10-12 12:29:59 -07:00
Kelly Brazil
29a7c73990 add hid_device_descriptor and report_descriptors 2021-10-12 11:24:49 -07:00
Kelly Brazil
2d1d68e300 simplify populate_lists. Add CDC lists 2021-10-12 09:57:47 -07:00
Kelly Brazil
c5c1e170d1 interface descriptors working 2021-10-11 21:33:18 -07:00
Kelly Brazil
9c1bb66452 fix remove _state field during schema_populate 2021-10-11 07:48:23 -07:00
Kelly Brazil
a4f3306bae initial schema build. need to figure out why deleting _state from output_line causes exceptions 2021-10-10 22:18:13 -07:00
Kelly Brazil
1bc638b6ee add bus_list and add all device_list data to the list 2021-10-10 10:03:39 -07:00
Kelly Brazil
9ad0cd9dae now storing state within the objects to make building the schema (later) easier. 2021-10-09 20:05:55 -07:00
Kelly Brazil
6d4a469127 use class for state 2021-10-06 22:03:16 -07:00
Kelly Brazil
ed6997e3ff add interface_association section 2021-10-05 16:47:23 -07:00
Kelly Brazil
eb788fca6e somewhat working lsusb parser. needs a lot more TLC 2021-10-05 14:59:49 -07:00
Kelly Brazil
9186f5f377 fix file parser for gzip cases (has ': ' in the description, which is the delimiter) 2021-10-02 14:53:07 -07:00
Kelly Brazil
30cff5f281 add note that the streaming parser outputs JSON Lines 2021-09-27 10:35:08 -07:00
Kelly Brazil
b724e0969a -qq instead of -q 2021-09-26 20:22:16 -07:00
Kelly Brazil
a62c49e871 Merge pull request #172 from kellyjonbrazil/master
sync master to dev
2021-09-26 16:35:29 -07:00
Kelly Brazil
9b160f6279 link update 2021-09-26 16:29:36 -07:00
Kelly Brazil
338a4e2612 formatting 2021-09-26 16:27:15 -07:00
Kelly Brazil
0140688750 link updates 2021-09-26 16:24:18 -07:00
Kelly Brazil
73e5ea98c1 Merge pull request #170 from kellyjonbrazil/dev
jc v1.17.0 from dev
2021-09-26 14:55:18 -07:00
Kelly Brazil
77dcbc544d final doc update 2021-09-26 14:50:02 -07:00
Kelly Brazil
c7bcb0947a indent subsequent error and warning lines 2021-09-26 13:20:42 -07:00
Kelly Brazil
5cd3f7f71d Add example to raise ParseError if there is no output data to yield 2021-09-26 13:15:35 -07:00
Kelly Brazil
5044388ab2 raise if line data is unrecognized 2021-09-26 13:04:27 -07:00
Kelly Brazil
ee075db598 linting 2021-09-26 12:00:30 -07:00
Kelly Brazil
9904e0be61 formatting 2021-09-25 08:28:57 -07:00
Kelly Brazil
31b69b3242 formatting 2021-09-25 08:23:46 -07:00
Kelly Brazil
e6a80fea32 formatting 2021-09-25 08:19:34 -07:00
Kelly Brazil
d6aec00e03 add vmstat-1-long tests 2021-09-24 16:45:38 -07:00
Kelly Brazil
4aa7d81e11 ignore re-printed header rows in output 2021-09-24 16:27:11 -07:00
Kelly Brazil
48cdabc3b0 document timestamps 2021-09-24 10:11:15 -07:00
Kelly Brazil
a1791ef547 linting 2021-09-24 10:01:13 -07:00
Kelly Brazil
7bc87f6c2d change _meta to _jc_meta 2021-09-24 09:24:30 -07:00
Kelly Brazil
bbed9e274b linting 2021-09-24 09:16:44 -07:00
Kelly Brazil
486282b985 linting 2021-09-24 08:52:39 -07:00
Kelly Brazil
a4d45b653f linting 2021-09-24 08:49:37 -07:00
Kelly Brazil
22e151b01c linting 2021-09-24 08:43:09 -07:00
Kelly Brazil
7a4ebcd1ec language hints 2021-09-23 21:22:01 -07:00
Kelly Brazil
651cbfe02f add streaming foo parser 2021-09-23 21:20:25 -07:00
Kelly Brazil
8c3e764516 add streaming parser to contrib guidelines 2021-09-23 21:17:17 -07:00
Kelly Brazil
b4e75da7e3 formatting 2021-09-23 21:14:47 -07:00
Kelly Brazil
37223f086c formatting 2021-09-23 21:13:21 -07:00
Kelly Brazil
a404033735 add error and warning message wrap info 2021-09-23 20:54:44 -07:00
Kelly Brazil
b7433ed085 auto wrap warning and error messages 2021-09-23 20:53:31 -07:00
Kelly Brazil
224d3d65ad Add exception class name to error message 2021-09-23 13:15:38 -07:00
Kelly Brazil
a349fb0bda change _meta to _jc_meta 2021-09-23 13:08:31 -07:00
Kelly Brazil
e7ddcfb83f change _meta to _jc_meta 2021-09-23 13:07:10 -07:00
Kelly Brazil
abd20dfe36 formatting 2021-09-23 12:58:24 -07:00
Kelly Brazil
dc1fd3ef1b fix -qq docs 2021-09-23 11:54:58 -07:00
Kelly Brazil
98a7686db4 use -qq to ignore streaming exceptions 2021-09-23 11:48:39 -07:00
Kelly Brazil
9c6c6c4330 add next() info 2021-09-23 09:04:37 -07:00
Kelly Brazil
f9be5651da add language hints 2021-09-23 08:59:26 -07:00
Kelly Brazil
df9835a3e6 formatting 2021-09-23 08:57:14 -07:00
Kelly Brazil
92363be2dd fix streaming python module example 2021-09-23 08:56:14 -07:00
Kelly Brazil
31b6203015 formatting 2021-09-23 08:54:15 -07:00
Kelly Brazil
18805858d6 formatting 2021-09-23 08:53:25 -07:00
Kelly Brazil
e676f0e20f add streaming parser info for python module use 2021-09-23 08:53:14 -07:00
Kelly Brazil
20652edefa update changelog 2021-09-22 20:11:26 -07:00
Kelly Brazil
98c29d0747 add vmstat tests 2021-09-22 19:54:12 -07:00
Kelly Brazil
41a6311f6b add streaming parser tests 2021-09-22 19:34:44 -07:00
Kelly Brazil
978760ec57 add exception class name to error string 2021-09-22 19:32:20 -07:00
Kelly Brazil
d410425537 replace single quotes with double quotes in doc 2021-09-22 14:43:26 -07:00
Kelly Brazil
6b7430329c doc update 2021-09-22 14:38:13 -07:00
Kelly Brazil
40fe0d4a60 working parser 2021-09-22 14:34:46 -07:00
Kelly Brazil
365c5354a0 remove debug print statement 2021-09-22 14:34:32 -07:00
Kelly Brazil
b246a05cbb fix vmstat-s name 2021-09-22 14:34:19 -07:00
Kelly Brazil
9e5a7a4abb add vmstat sample output 2021-09-22 14:07:09 -07:00
Kelly Brazil
f266acbcca add processing logic 2021-09-22 14:06:51 -07:00
Kelly Brazil
4e3b471f18 add format for vmstat 2021-09-22 14:06:28 -07:00
Kelly Brazil
5e28736c2e add vmstat and vmstat_s 2021-09-22 12:08:20 -07:00
Kelly Brazil
a91913a3b5 streaming parser template 2021-09-22 12:07:27 -07:00
Kelly Brazil
90c64f0ae0 initial working parser 2021-09-22 12:07:09 -07:00
Kelly Brazil
7cc642ed1a formatting 2021-09-22 12:06:56 -07:00
Kelly Brazil
809f64d35a Merge pull request #169 from kellyjonbrazil/streaming
Streaming to dev
2021-09-21 22:58:18 -07:00
Kelly Brazil
a6f859a55e add final ping_s tests 2021-09-21 22:47:48 -07:00
Kelly Brazil
39ef88078f add destination_ip to error lines 2021-09-21 22:47:02 -07:00
Kelly Brazil
aeea5e8d2e formatting 2021-09-21 22:00:05 -07:00
Kelly Brazil
1a0700bff4 add more ping-s tests 2021-09-21 21:58:59 -07:00
Kelly Brazil
b5fa6d068f update docs 2021-09-21 16:03:00 -07:00
Kelly Brazil
1baec0b420 add some streaming tests 2021-09-21 15:43:02 -07:00
Kelly Brazil
4f2a4e1dee skip blank lines and warning lines 2021-09-21 15:42:45 -07:00
Kelly Brazil
758d617668 doc update 2021-09-21 13:29:50 -07:00
Kelly Brazil
55322c37f5 formatting 2021-09-21 12:36:36 -07:00
Kelly Brazil
d19ea5552b add streaming ls parser tests 2021-09-21 12:33:05 -07:00
Kelly Brazil
130c3527c1 update docstrings 2021-09-21 12:32:34 -07:00
Kelly Brazil
3f221f4714 doc update 2021-09-20 13:21:20 -07:00
Kelly Brazil
d64c4cb390 add streaming parsers section 2021-09-20 13:04:26 -07:00
Kelly Brazil
448c56aa46 formatting 2021-09-20 13:04:14 -07:00
Kelly Brazil
9fbea15b6d rename state class to _state 2021-09-20 11:59:54 -07:00
Kelly Brazil
932060314b doc update 2021-09-20 11:51:27 -07:00
Kelly Brazil
5e68ae5009 import exception. tighten up os detection 2021-09-20 11:42:15 -07:00
Kelly Brazil
d03541beae add docstring examples. add exception raise when OS cannot be detected. 2021-09-20 11:24:59 -07:00
Kelly Brazil
516fa571d9 remove unused variable. use elif instead of if for linux vs. bsd detection 2021-09-19 21:41:35 -07:00
Kelly Brazil
a19c12096a initial working parser for both linux and bsd 2021-09-19 13:18:23 -07:00
Kelly Brazil
758f27945d change data_bytes and bytes to sent_bytes and response_bytes 2021-09-17 15:09:56 -07:00
Kelly Brazil
8b1e8d58df remove unneeded line 2021-09-17 14:44:49 -07:00
Kelly Brazil
b967489d08 complete linux coverage including summary 2021-09-17 14:42:30 -07:00
Kelly Brazil
870d0218be add unbuffer note 2021-09-17 10:34:05 -07:00
Kelly Brazil
84020bc2af change error_msg to error in -q result docs 2021-09-17 10:26:47 -07:00
Kelly Brazil
4efe5344e0 add links to HN and Reddit 2021-09-17 10:20:22 -07:00
Kelly Brazil
9182c54513 formatting 2021-09-17 08:24:56 -07:00
Kelly Brazil
28f0ab0b02 update streaming error messages 2021-09-17 08:21:13 -07:00
Kelly Brazil
90d1a30696 formatting 2021-09-17 08:05:23 -07:00
Kelly Brazil
130b3738cc shorten successful yield to a single line 2021-09-16 22:32:46 -07:00
Kelly Brazil
92c7357615 formatting 2021-09-16 22:04:44 -07:00
Kelly Brazil
c80f863334 simplify return condition formatting 2021-09-16 22:04:31 -07:00
Kelly Brazil
4642c20179 formatting 2021-09-16 21:55:40 -07:00
Kelly Brazil
5288eb22aa add info about streaming parser performance characteristics 2021-09-16 21:43:36 -07:00
Kelly Brazil
df8387a1a9 streaming parsers cannot be used with the magic syntax 2021-09-16 21:37:54 -07:00
Kelly Brazil
cc38c27f44 formatting 2021-09-16 21:33:57 -07:00
Kelly Brazil
64f5357d69 add streaming parsers section 2021-09-16 21:31:45 -07:00
Kelly Brazil
51debb5649 add vmstat parser and change from linebuffer to unbuffer 2021-09-16 20:45:01 -07:00
Kelly Brazil
b48d05a431 change from line buffer output to unbuffer output 2021-09-16 20:41:56 -07:00
Kelly Brazil
4e7f6b337d simplify yield statements 2021-09-16 20:26:56 -07:00
Kelly Brazil
a509d99caf add stream_success dictionary 2021-09-16 20:25:28 -07:00
Kelly Brazil
481e45fb64 limit parse error msg lenght 2021-09-14 06:02:55 -07:00
Kelly Brazil
e9038e1720 initial streaming ping docs 2021-09-13 21:15:26 -07:00
Kelly Brazil
8fd9e582bf doc update 2021-09-13 21:15:08 -07:00
Kelly Brazil
c1fd6f48a5 add stream_error docs 2021-09-13 21:14:56 -07:00
Kelly Brazil
af615c7f4b add line buffer output option 2021-09-13 21:14:38 -07:00
Kelly Brazil
bf0bc32d7a flush streamed text for better piping experience 2021-09-13 20:51:24 -07:00
Kelly Brazil
2d6b53e012 add pattern support. move unparsable line detection to standard streaming parser style 2021-09-13 19:50:51 -07:00
Kelly Brazil
51271fea0f somewhat working parser 2021-09-13 19:27:34 -07:00
Kelly Brazil
2deb473e0b initial streaming ping parser 2021-09-13 18:36:36 -07:00
Kelly Brazil
23eeb33b3d modify stream_error message 2021-09-13 18:36:19 -07:00
Kelly Brazil
f50dfaef45 use stream_error function for exceptions. raise on non -l ls output 2021-09-13 18:31:52 -07:00
Kelly Brazil
55bb71e9d4 add streaming ping parser. update streaming exception message 2021-09-13 18:30:20 -07:00
Kelly Brazil
dab9357d28 use stream_error function for exceptions 2021-09-13 18:29:49 -07:00
Kelly Brazil
27eb427245 add stream_error function 2021-09-13 18:29:10 -07:00
Kelly Brazil
260f3685d9 add streaming parser template 2021-09-13 15:06:02 -07:00
Kelly Brazil
76e78fc0c3 doc updates 2021-09-13 15:05:49 -07:00
Kelly Brazil
1ac944fa02 add -q option info to docstring 2021-09-13 12:13:14 -07:00
Kelly Brazil
986bc9b042 cleanup unused code 2021-09-13 12:10:02 -07:00
Kelly Brazil
5a7942069b add support for parent field 2021-09-13 10:56:05 -07:00
Kelly Brazil
f6c6fc13ac enhance error msg when streaming parser is used 2021-09-13 08:55:19 -07:00
Kelly Brazil
1d8cfae89f only print _meta object if -q or quiet flag is used. Also, add message to the end of exceptions informing of the -q option to ignore errors 2021-09-12 17:30:56 -07:00
Kelly Brazil
787df51239 remove \n from end of line in exception message 2021-09-12 16:42:47 -07:00
Kelly Brazil
5e7f302a9c Raise exceptions unless the -q or quiet flag are used 2021-09-12 16:35:46 -07:00
Kelly Brazil
3d10fd40b5 remove print flush for better performance. Roll json.JSONDecodeError into the parse try/except block 2021-09-12 16:27:00 -07:00
Kelly Brazil
57e3bf239c formatting for docs 2021-09-10 15:02:15 -07:00
Kelly Brazil
ccb09861e8 formatting for docs 2021-09-10 15:01:02 -07:00
Kelly Brazil
94551d75dd doc update 2021-09-10 14:27:50 -07:00
Kelly Brazil
6e21218425 working prototype of streaming ls parser 2021-09-10 14:14:10 -07:00
Kelly Brazil
ff0fda48fc Merge pull request #168 from kellyjonbrazil/master
Sync master to dev
2021-09-10 08:08:45 -07:00
Kelly Brazil
528aac7ad8 use subprocess in python example 2021-09-08 07:00:50 -07:00
Kelly Brazil
ab482e521d Merge pull request #163 from kellyjonbrazil/dev
Dev v1.16.2
2021-08-31 09:50:38 -07:00
Kelly Brazil
e08b61fa81 add schema note to sfdisk 2021-08-31 08:54:23 -07:00
Kelly Brazil
ce61bd1d2b add tests for -F fixes 2021-08-31 08:50:42 -07:00
Kelly Brazil
7b708f7518 Don't convert 'size' to int, except for legacy -d support. Change partition table detection logic to fix -F output 2021-08-31 08:39:54 -07:00
Kelly Brazil
89ca50c7fc add -l to sfdisk raw example 2021-08-30 21:56:36 -07:00
Kelly Brazil
fb54899dcc doc update 2021-08-30 21:53:40 -07:00
Kelly Brazil
0a625ad7dd remove unneeded lines 2021-08-30 21:52:55 -07:00
Kelly Brazil
d32e45efbe add sfdisk tests 2021-08-30 21:49:07 -07:00
Kelly Brazil
c77696bc78 version bump 2021-08-30 20:55:26 -07:00
Kelly Brazil
736fde9e78 add support for newer versions of sfdisk 2021-08-30 20:51:19 -07:00
Kelly Brazil
9c1ad92fed fix examples 2021-08-26 10:31:51 -07:00
Kelly Brazil
1a9fd2139d add "For new parsers:" 2021-08-26 10:29:13 -07:00
Kelly Brazil
7661e7f27a formatting 2021-08-26 10:27:11 -07:00
Kelly Brazil
f857b7fbf7 add custom parser folder info 2021-08-26 10:25:37 -07:00
Kelly Brazil
d94d12dbc5 add foo parser template info 2021-08-26 10:20:53 -07:00
Kelly Brazil
700916276a Merge pull request #159 from kellyjonbrazil/master
Sync Master to dev
2021-08-26 10:01:08 -07:00
Kelly Brazil
834e52369c update man page 2021-08-16 10:33:26 -07:00
Kelly Brazil
1ce53365de Merge pull request #156 from kellyjonbrazil/dev
Dev v1.16.1
2021-08-16 10:32:03 -07:00
Kelly Brazil
473f70668f Merge branch 'master' into dev
# Conflicts:
#	jc/man/jc.1.gz
#	man/jc.1
#	man/jc.1.gz
2021-08-16 10:28:11 -07:00
Kelly Brazil
0dbd2702f6 reformat doc_text for nicer indentation 2021-08-13 17:17:51 -07:00
Kelly Brazil
01e3764a9b fix join syntax 2021-08-13 16:03:46 -07:00
Kelly Brazil
ff9c81722a try/except for shlex.join since only available in python 3.8 2021-08-13 16:01:45 -07:00
Kelly Brazil
166aef7a02 version bump 2021-08-13 15:22:33 -07:00
Kelly Brazil
78caf7646b add stat fix 2021-08-13 15:19:41 -07:00
Kelly Brazil
1f99d40cec fix filename with spaces for osx/bsd 2021-08-13 15:19:31 -07:00
Kelly Brazil
4c2912d3d5 use shlex.join to quote run_command_str for better error messages 2021-08-13 15:19:17 -07:00
Kelly Brazil
45e6e06be5 add glob and process substitution fixes 2021-08-13 14:19:45 -07:00
Kelly Brazil
fdbe3e05f3 fix issue with globs not including filenames with spaces with magic syntax (introduced during switch to use subprocess to grab process exit code). No longer need to shlex quote arguments. 2021-08-13 14:19:26 -07:00
Kelly Brazil
7cc168f640 add comment 2021-08-12 16:55:07 -07:00
Kelly Brazil
ff2d609c9b add close_fds=False in subprocess.Popen() to allow process substitution in magic syntax. Also check for too many open files exception 2021-08-12 16:36:35 -07:00
Kelly Brazil
2689697b4c formatting 2021-07-22 17:03:00 -07:00
Kelly Brazil
f90a0ea8ab formatting 2021-07-22 12:20:48 -07:00
Kelly Brazil
caabe60f84 fix kv example 2021-07-22 12:20:31 -07:00
Kelly Brazil
2bef4ed603 package updates 2021-07-21 08:47:16 -07:00
Kelly Brazil
ee57be533b fix sfdisk example 2021-07-20 12:35:02 -05:00
Kelly Brazil
c5b7aaca25 Merge pull request #149 from kellyjonbrazil/dev
Dev v1.16.0
2021-07-20 10:19:14 -07:00
Kelly Brazil
7a1be905bb version bump 2021-07-20 12:15:29 -05:00
Kelly Brazil
5798495a11 add 1.15.7 to 1.16.0 changes 2021-07-20 12:13:33 -05:00
Kelly Brazil
46171e2202 add sfdisk example 2021-07-20 12:13:14 -05:00
Kelly Brazil
dd5c924ff5 add man page location change 2021-07-19 12:13:46 -07:00
Kelly Brazil
30c4ab2976 new man page location 2021-07-19 12:08:50 -07:00
Kelly Brazil
26ea4d47b3 version bump and deprecate /man/jc.1.gz and /jc/man/jc.1.gz 2021-07-19 12:04:25 -07:00
Kelly Brazil
2732cd175c include CHANGELOG in source distribution 2021-07-12 08:10:18 -07:00
Kelly Brazil
3e54b597be add timezone change for unit tests 2021-07-07 09:00:19 -07:00
Kelly Brazil
f10ebea209 update tests to set correct timezone on POSIX systems 2021-07-07 08:53:52 -07:00
Kelly Brazil
2c6f3993cb remove extra comma 2021-07-01 15:53:10 -07:00
Kelly Brazil
708a696920 remove extra lines 2021-07-01 15:51:38 -07:00
Kelly Brazil
20bbb5d331 remove extra lines 2021-07-01 15:50:55 -07:00
Kelly Brazil
223e785b54 rename variable 2021-06-30 17:07:43 -07:00
Kelly Brazil
3d78692c59 add sfdisk tests 2021-06-30 16:54:34 -07:00
Kelly Brazil
5321a15dcf update examples 2021-06-30 14:30:35 -07:00
Kelly Brazil
a452f8252a fix integer conversion 2021-06-30 14:27:12 -07:00
Kelly Brazil
49267f09ac change to root prompt in examples 2021-06-30 14:06:15 -07:00
Kelly Brazil
db47f35783 add working sfdisk parser 2021-06-30 12:38:36 -07:00
Kelly Brazil
d48abf312c Merge pull request #147 from kellyjonbrazil/master
sync to dev
2021-06-30 10:10:59 -07:00
Kelly Brazil
3b22ce4110 fix local plugin parser issue where parser has .py in the name but it is not at the end 2021-06-28 08:04:46 -07:00
Kelly Brazil
c521ca5bc9 change possible to available 2021-06-11 11:41:16 -07:00
Kelly Brazil
3ddc1c6659 add jello 2021-06-11 11:39:38 -07:00
Kelly Brazil
a8e19402b7 remove temporary fix 2021-06-09 08:33:48 -07:00
Kelly Brazil
0927902b30 temp fix for wrong url 2021-06-08 16:51:03 -07:00
Kelly Brazil
572548b42f Merge pull request #141 from kellyjonbrazil/dev
Dev v1.15.5
2021-05-27 17:00:54 -07:00
Kelly Brazil
ff7ab0a1ed doc updates for v1.15.5 2021-05-27 16:58:14 -07:00
Kelly Brazil
5db71b05cb add en_US.UTF-8 to LANG info 2021-05-25 09:47:24 -07:00
Kelly Brazil
f9b952885a add python 3.9.5 packaged info 2021-05-21 10:21:21 -07:00
Kelly Brazil
e7983bc0b2 version bump 2021-05-21 10:16:19 -07:00
Kelly Brazil
473a643142 add windows msi info 2021-05-21 10:16:08 -07:00
Kelly Brazil
14f3d442cb formatting 2021-05-21 09:46:51 -07:00
Kelly Brazil
d6f4ed9ab5 add long-form UTC test 2021-05-21 09:46:34 -07:00
Kelly Brazil
1b8d654444 add error message info 2021-05-20 15:49:18 -07:00
Kelly Brazil
6002af0dca add more error message detail to the user for ParseError and LibraryNotFound exceptions 2021-05-20 15:46:31 -07:00
Kelly Brazil
0924d822a3 add windows example 2021-05-20 15:36:27 -07:00
Kelly Brazil
72a37b9289 version bump 2021-05-19 16:23:34 -07:00
Kelly Brazil
5eef7bd769 use LibraryNotInstalled exception instead of exiting via sys.exit 2021-05-19 16:14:26 -07:00
Kelly Brazil
c6893e1bd5 add LibraryNotInstalled exception 2021-05-19 16:13:05 -07:00
Kelly Brazil
039f6612e4 Merge pull request #139 from kellyjonbrazil/master
sync branches
2021-05-18 10:29:02 -07:00
Kelly Brazil
95aec9c6f9 add info about Magic syntax not supporting shell builtins 2021-05-18 10:27:36 -07:00
Kelly Brazil
4e9652a8ec spelling 2021-05-17 14:36:20 -07:00
Kelly Brazil
773b7f4b1f add space before exit code table 2021-05-17 08:38:09 -07:00
Kelly Brazil
d17ffde9cd Merge pull request #138 from kellyjonbrazil/dev
Dev v1.15.4
2021-05-17 08:35:13 -07:00
Kelly Brazil
9c57c09c00 doc update for release 2021-05-17 08:24:31 -07:00
Kelly Brazil
4d730a9de5 add UTC fix 2021-05-16 20:57:17 -07:00
Kelly Brazil
fc57bcfce2 fix for when UTC is referenced as "Coordinated Universal Time" 2021-05-16 20:51:39 -07:00
Kelly Brazil
fa5571486c simplify json_out function 2021-05-16 20:33:03 -07:00
Kelly Brazil
9996c4fe23 update docs for shell builtins 2021-05-16 19:55:53 -07:00
Kelly Brazil
038d429024 doc updates 2021-05-16 19:44:10 -07:00
Kelly Brazil
9bf6facb0d remove magic command capability since dir is a shell builtin 2021-05-16 19:43:10 -07:00
Kelly Brazil
965717886e add exceptions module info 2021-05-16 19:30:00 -07:00
Kelly Brazil
e9bfc3dd29 add time format, dig compatibility, windows colors fix 2021-05-16 19:21:37 -07:00
Kelly Brazil
f46b33eacf add windows time format 2021-05-16 19:20:13 -07:00
Kelly Brazil
f475fe44df add new time format for systeminfo 2021-05-16 19:09:53 -07:00
Kelly Brazil
5fdbe2962d make dig compatible with all platforms 2021-05-16 17:48:56 -07:00
Kelly Brazil
ab291b9eef only force enable colors when running on windows 2021-05-16 17:48:40 -07:00
Kelly Brazil
fd411fd772 attempt to get colors working on windows 2021-05-16 17:43:05 -07:00
Kelly Brazil
b1e95a60a2 remove unnecessary comment 2021-05-13 08:42:27 -07:00
Kelly Brazil
bb1439f0d5 use ParseError exception from jc.exceptions module 2021-05-13 08:20:58 -07:00
Kelly Brazil
ba963d98a0 add exceptions module including ParseError 2021-05-13 08:20:35 -07:00
Kelly Brazil
83440ccb55 error message capitalization 2021-05-13 08:02:38 -07:00
Kelly Brazil
796f61bfa4 handle case where the user pipes data and uses magic syntax simultaneously 2021-05-12 17:01:09 -07:00
Kelly Brazil
070cac4ae1 remove commented line 2021-05-12 15:36:06 -07:00
Kelly Brazil
3ed84f9f42 reorganize main function. remove pass condition. 2021-05-12 15:19:11 -07:00
Kelly Brazil
a205afb6f3 set run_command_str if run_command is set 2021-05-12 13:44:15 -07:00
Kelly Brazil
a6d983dd8f move run_command_str variable 2021-05-12 13:38:08 -07:00
Kelly Brazil
b6c8d6d01d add exception handling for filenotfound or other subprocess.popen and json.dumps exceptions 2021-05-12 13:18:58 -07:00
Kelly Brazil
b5a5d5b133 set parser_name for magic syntax use 2021-05-12 11:36:27 -07:00
Kelly Brazil
da528e7814 move separators to a variable 2021-05-12 09:40:22 -07:00
Kelly Brazil
4acebf4f62 move variables 2021-05-12 08:48:49 -07:00
Kelly Brazil
4d40808d2b update comments 2021-05-12 08:27:39 -07:00
Kelly Brazil
c543f00bd3 simplify piped_output function 2021-05-11 14:30:46 -07:00
Kelly Brazil
947cf41dfa add exit code info 2021-05-11 12:42:21 -07:00
Kelly Brazil
8d8c58742e formatting 2021-05-11 11:32:08 -07:00
Kelly Brazil
995ecc9bfb add exit codes section 2021-05-11 11:11:17 -07:00
Kelly Brazil
21a15225eb add exit codes section 2021-05-11 10:59:26 -07:00
Kelly Brazil
48921d4584 ensure exit code never exceeds 255 2021-05-11 10:50:35 -07:00
Kelly Brazil
342db45edc fix combined exit codes 2021-05-11 10:36:55 -07:00
Kelly Brazil
5f88ecf844 add comments to magic_parser return 2021-05-10 21:23:23 -07:00
Kelly Brazil
a56aebfe70 remove side-effect comment since it is no longer relevant 2021-05-10 21:09:00 -07:00
Kelly Brazil
422bb744a8 update man pages 2021-05-10 21:03:30 -07:00
Kelly Brazil
c3b814a15f move imports to the top 2021-05-10 21:02:28 -07:00
Kelly Brazil
e4574047a0 update tests for magic_parser function 2021-05-10 20:49:44 -07:00
Kelly Brazil
0d7d7951f8 don't reset sys.argv anymore. check for 'valid_command' instead 2021-05-10 18:58:45 -07:00
Kelly Brazil
da904e4770 remove final \n from stderr string when printing 2021-05-10 18:50:59 -07:00
Kelly Brazil
19b540041a proof of concept for passing command exit codes when using magic syntax. Needs more testing 2021-05-10 18:31:30 -07:00
Kelly Brazil
f2ffb93eea formatting 2021-05-10 10:43:40 -07:00
Kelly Brazil
c0c0e05642 add dig +noall +answer support 2021-05-10 10:40:13 -07:00
Kelly Brazil
966978f17e add more unparsable line ping tests 2021-05-10 10:39:51 -07:00
Kelly Brazil
8ab08a5231 doc update 2021-05-10 10:13:52 -07:00
Kelly Brazil
48e534fa03 add +noall +answer test 2021-05-07 16:55:18 -07:00
Kelly Brazil
61851c1bd0 add support for +noall +answer 2021-05-07 16:42:09 -07:00
Kelly Brazil
3c51b2d83d add tests for unparsable lines on linux 2021-05-07 13:50:28 -07:00
Kelly Brazil
ee3a28528e Merge branch 'dev' of https://github.com/kellyjonbrazil/jc into dev
# Conflicts:
#	templates/readme_template
2021-05-05 10:03:58 -07:00
Kelly Brazil
916bcdae38 Merge pull request #136 from kellyjonbrazil/master
merge changes from master
2021-05-05 10:02:25 -07:00
Kelly Brazil
efb1d3e6b2 add blog title and minor formatting 2021-05-05 09:23:21 -07:00
Kelly Brazil
4e6ae66bac formatting 2021-05-05 09:20:47 -07:00
Kelly Brazil
5ee88e7b67 add use cases section 2021-05-05 09:18:45 -07:00
Kelly Brazil
c3b68903cb add use cases section 2021-05-05 09:17:11 -07:00
Kelly Brazil
fe1f1013a7 add use cases section 2021-05-05 09:16:05 -07:00
Kelly Brazil
fb14f5439f fix and tests for unknown or unparsable errors 2021-05-05 08:03:27 -07:00
Kelly Brazil
5ca0fc364e add unparsed_line to docs 2021-05-04 19:05:20 -07:00
Kelly Brazil
a1fe7037e5 add unparsed_line field if line cannot be parsed 2021-05-04 19:04:16 -07:00
Kelly Brazil
c2af7d113e add ping updates 2021-05-04 15:35:47 -07:00
Kelly Brazil
ff034e401d use try/except to make parser more resilient against unknown error types 2021-05-04 15:34:45 -07:00
Kelly Brazil
5abe095beb update ping docs 2021-05-03 15:26:16 -07:00
Kelly Brazil
33de5f01e6 version bump 2021-05-03 15:16:47 -07:00
Kelly Brazil
8ce155d843 add support for error replies in v4 ping on osx and bsd 2021-05-03 15:16:33 -07:00
Kelly Brazil
b921d5ec95 initial support for error replies in bsd/osx 2021-04-30 16:53:52 -07:00
Kelly Brazil
e21542aaa2 Merge pull request #135 from kellyjonbrazil/dev
Dev clarify packaged binaries in readme
2021-04-30 10:31:55 -07:00
Kelly Brazil
6150aae0ae clarify packaged binaries 2021-04-30 10:31:02 -07:00
Kelly Brazil
f27b35f371 Merge pull request #131 from kellyjonbrazil/master
sync branches
2021-04-28 15:28:35 -07:00
Kelly Brazil
d24f9a885d fix contributing link 2021-04-28 15:26:52 -07:00
Kelly Brazil
48dd82c8d1 trigger page build on github pages 2021-04-28 15:15:41 -07:00
Kelly Brazil
e57167ad1f empty commit 2021-04-28 12:23:31 -07:00
Kelly Brazil
ada9137642 Merge pull request #130 from kellyjonbrazil/dev
Dev link updates
2021-04-28 11:53:15 -07:00
Kelly Brazil
bd428a9fd7 fix link 2021-04-28 11:52:24 -07:00
Kelly Brazil
934941332f minor link updates 2021-04-28 11:50:10 -07:00
Kelly Brazil
0c209dbd10 Merge pull request #129 from kellyjonbrazil/dev
Dev update readme
2021-04-28 11:36:05 -07:00
Kelly Brazil
56e041aa26 add Practical JSON at the Command Line blog link 2021-04-28 11:34:51 -07:00
Kelly Brazil
cf9d48582e Merge pull request #128 from kellyjonbrazil/master
sync branches
2021-04-26 13:17:20 -07:00
Kelly Brazil
92e2252bee fix typo 2021-04-26 12:18:21 -07:00
Kelly Brazil
fd7861db11 Merge pull request #127 from kellyjonbrazil/dev
Dev v1.15.3
2021-04-26 12:12:02 -07:00
Kelly Brazil
35464bbbfb date update 2021-04-26 12:08:10 -07:00
Kelly Brazil
db8ddd7f0e fix for scenarios where the default port range didn't always display, or overrode existing port ranges. 2021-04-26 12:04:03 -07:00
Kelly Brazil
72207c54ee update ufw app info docs to support multiple apps (ufw app info all) 2021-04-26 10:02:02 -07:00
Kelly Brazil
a683f68003 change schema to a list of dictionaries to support ufw app info all use case 2021-04-26 10:00:44 -07:00
Kelly Brazil
8d2d3db3fa formatting 2021-04-25 21:10:21 -07:00
Kelly Brazil
eca785450d add caveats to readme and manpage 2021-04-25 21:06:47 -07:00
Kelly Brazil
5b40a97ce4 add caveats to man page 2021-04-25 20:55:43 -07:00
Kelly Brazil
66cb4e9bde update ufw parser docs 2021-04-25 20:49:35 -07:00
Kelly Brazil
d1f33645ca update ufw tests 2021-04-25 20:40:38 -07:00
Kelly Brazil
5eff65c326 update schema to support port lists and port range lists. Also support other transports than tcp and udp 2021-04-25 20:10:52 -07:00
Kelly Brazil
929c38715d formatting 2021-04-24 12:53:29 -07:00
Kelly Brazil
8c91a7b760 formatting 2021-04-24 12:52:26 -07:00
Kelly Brazil
14289ecd6c more timezone info 2021-04-24 12:50:40 -07:00
Kelly Brazil
b833c44783 add ufw-appinfo parser 2021-04-24 12:47:24 -07:00
Kelly Brazil
e23aa818ea add tests section and timezone info 2021-04-24 12:47:12 -07:00
Kelly Brazil
473d919c13 add another ufw test sample 2021-04-24 10:58:31 -07:00
Kelly Brazil
9f925d6ac9 doc update 2021-04-24 10:22:37 -07:00
Kelly Brazil
f6ca32b3a3 update ufw docs with a note on lists of ports 2021-04-24 10:22:19 -07:00
Kelly Brazil
4cbe84c3d6 add ufw-appinfo tests 2021-04-23 16:15:04 -07:00
Kelly Brazil
ffac5bf9d3 doc update 2021-04-23 16:14:53 -07:00
Kelly Brazil
9aa424f9f8 fix ufw example 2021-04-23 16:14:39 -07:00
Kelly Brazil
0a8495c68e update docs 2021-04-23 16:14:25 -07:00
Kelly Brazil
6aea066cf0 make normalized list appear only when data exists. set magic commands 2021-04-23 16:14:11 -07:00
Kelly Brazil
ff3c2d809e add ufw-appinfo to docs 2021-04-23 09:57:41 -07:00
Kelly Brazil
145059fc89 clean up output if sections are blank 2021-04-23 09:04:11 -07:00
Kelly Brazil
20e5c19de4 fix key error if tcp or udp don't exist 2021-04-23 08:30:34 -07:00
Kelly Brazil
4c98fd4b87 doc update 2021-04-23 08:26:00 -07:00
Kelly Brazil
125e54213e update schema and add normalized fields 2021-04-23 08:13:53 -07:00
Kelly Brazil
0152e0665f initial working ufw-appinfo parser 2021-04-22 16:52:01 -07:00
Kelly Brazil
0679bcbc56 fix ufw tests 2021-04-22 08:33:57 -07:00
Kelly Brazil
5500648aa0 fix ufw docs for int conversions and service behavior 2021-04-22 08:33:45 -07:00
Kelly Brazil
bb50caad4d fix prefix int conversions. don't reset _transport if service is really a list of ports 2021-04-22 08:16:42 -07:00
Kelly Brazil
7eef5d94d5 ufw doc update 2021-04-21 16:55:25 -07:00
Kelly Brazil
74f623f8d6 add support for rule comments and LIMIT and REJECT actions 2021-04-21 16:55:14 -07:00
Kelly Brazil
f638aca092 add deb package name fix 2021-04-21 10:10:36 -07:00
Kelly Brazil
da35eaf80a formatting 2021-04-21 09:10:10 -07:00
Kelly Brazil
ade0e8e8fc add ufw tests 2021-04-21 09:09:23 -07:00
Kelly Brazil
90076090f0 fix int conversions if 'rules' key does not exist 2021-04-21 09:09:09 -07:00
Kelly Brazil
23635def8b add ufw to docs 2021-04-21 07:51:32 -07:00
Kelly Brazil
4eeec087bd add ufw example 2021-04-21 07:49:49 -07:00
Kelly Brazil
7331961038 update docs with new examples that have to_service always existing. 2021-04-21 07:41:32 -07:00
Kelly Brazil
e4acb3d5b7 always make to/from_service None if ports are assigned 2021-04-21 07:08:50 -07:00
Kelly Brazil
c60549a994 change field name from to/from_subnet to to/from_ip_prefix 2021-04-20 22:08:12 -07:00
Kelly Brazil
d46fc8bbfa set to/from_transport to None if to/from_service is set 2021-04-20 21:58:52 -07:00
Kelly Brazil
b133d1f90d strip interface value 2021-04-20 21:52:39 -07:00
Kelly Brazil
5be615a97e add examples for docs 2021-04-20 21:45:13 -07:00
Kelly Brazil
ea1d820f96 convert integer fields 2021-04-20 21:29:49 -07:00
Kelly Brazil
47e262cf72 clean up fields 2021-04-20 21:21:42 -07:00
Kelly Brazil
eec673be90 working raw parser 2021-04-20 20:32:59 -07:00
Kelly Brazil
9a0fb2a7c8 parse major sections 2021-04-20 14:17:01 -07:00
Kelly Brazil
b5145d6c14 version bump to v1.15.3 2021-04-20 13:39:12 -07:00
Kelly Brazil
9747ca414d minor optimization to convert_to_int(). No longer runs through convert_to_float(), but uses standard float() function. 2021-04-20 10:50:20 -07:00
Kelly Brazil
312d465b61 update link 2021-04-19 14:18:12 -07:00
Kelly Brazil
7dcf87d24a formatting 2021-04-19 13:12:55 -07:00
Kelly Brazil
cf3cfd16a9 rename tests 2021-04-19 09:59:58 -07:00
Kelly Brazil
fcc7e52949 Merge pull request #123 from kellyjonbrazil/dev
Dev v1.15.2
2021-04-18 17:28:27 -07:00
Kelly Brazil
3ab9d48014 update changelog 2021-04-18 17:24:42 -07:00
Kelly Brazil
7eddf41c5f dont round up int conversions and fix tests 2021-04-18 17:21:08 -07:00
Kelly Brazil
27a196c938 doc update 2021-04-18 16:42:42 -07:00
Kelly Brazil
e4324f05fb fix indentation in doc 2021-04-18 16:42:34 -07:00
Kelly Brazil
d36b332bd7 use jc.utils for conversions 2021-04-18 16:33:47 -07:00
Kelly Brazil
1f034826f6 use jc.utils for conversions 2021-04-18 13:01:25 -07:00
Kelly Brazil
246c707c98 use jc.utils conversions 2021-04-18 11:46:42 -07:00
Kelly Brazil
b5d8968144 add convert_to_int function 2021-04-17 17:22:59 -07:00
Kelly Brazil
f7b9fbefdd add query_size info for dig 2021-04-17 17:22:44 -07:00
Kelly Brazil
b1fc453383 fix _IfconfigParser name 2021-04-17 17:22:30 -07:00
Kelly Brazil
7581c8d0f4 add query_size field. handle user-specified dig output better - especially when querying dnssec 2021-04-17 17:07:20 -07:00
Kelly Brazil
32bf8ad6f4 update dig docs 2021-04-17 15:02:45 -07:00
Kelly Brazil
b083bcc10f update man page 2021-04-16 16:30:17 -07:00
Kelly Brazil
4f6fdd120d use dig as example 2021-04-16 16:30:04 -07:00
Kelly Brazil
eb0038be24 update dig examples 2021-04-16 16:29:44 -07:00
Kelly Brazil
7ecdf819fa remove dig example from readme, 2021-04-16 16:29:27 -07:00
Kelly Brazil
c6aa4d0835 update docs with new dig parser examples 2021-04-16 16:19:20 -07:00
Kelly Brazil
7c584b89a6 add additional section 2021-04-16 16:04:06 -07:00
Kelly Brazil
c166c0bfda add opt_pseudosection section to output and fix existing tests 2021-04-16 15:22:22 -07:00
Kelly Brazil
a8dd3f7802 working dig axfr fixes 2021-04-16 13:11:02 -07:00
Kelly Brazil
3b0e2f03f3 clean up examples 2021-04-16 08:46:20 -07:00
Kelly Brazil
8390ae48c8 fix server entry when IPv6 address is in value (maxsplit on colons) 2021-04-15 16:53:03 -07:00
Kelly Brazil
2db82c0a7e add systeminfo example 2021-04-14 20:43:58 -07:00
Kelly Brazil
6147954075 update tests 2021-04-14 20:39:35 -07:00
Kelly Brazil
691df271fc add info docstring 2021-04-14 20:30:31 -07:00
Kelly Brazil
89f52b95f7 update systeminfo parser with updated timestamps, normalized blank fields, and new doc style 2021-04-14 20:20:46 -07:00
Kelly Brazil
146acc1bf6 rename functions to make them private 2021-04-14 16:46:16 -07:00
Kelly Brazil
c4a345f59a Merge pull request #106 from jon-rd/j/systeminfo
Add windows systeminfo command parser
2021-04-14 16:39:44 -07:00
Kelly Brazil
dfd2703f75 bump dev to v1.15.2 2021-04-14 16:39:05 -07:00
Jon Smith
325fab2de7 update documentation for parsed structures 2021-04-14 11:52:13 -05:00
Jon Smith
f3d00cf38a append mb to memory key names; adjust expected timestamps to utc tz 2021-04-14 11:38:50 -05:00
Jon Smith
14838f7f5d update schema with nic, hyperv, and process changes 2021-04-14 11:38:50 -05:00
Jon Smith
af74047b81 update schema based on processor/hotfix changes 2021-04-14 11:38:50 -05:00
Jon Smith
660c59129c Add parsing of processors/hotfixs 2021-04-14 11:38:50 -05:00
Jon Smith
89a88e186e Add systeminfo.md file 2021-04-14 11:38:50 -05:00
Jon Smith
f861cf95b9 Change to v0.5; add parser to cli.py; add to docgen 2021-04-14 11:38:50 -05:00
Jon Smith
ee8f06cbdb Add windows systeminfo command parser 2021-04-14 11:38:49 -05:00
Kelly Brazil
a2e8b3c7b6 Merge pull request #121 from kellyjonbrazil/master
Merge pull request #120 from kellyjonbrazil/dev
2021-04-13 16:40:43 -07:00
Kelly Brazil
6c83846075 Merge pull request #120 from kellyjonbrazil/dev
Dev v1.15.1
2021-04-13 14:59:17 -07:00
Kelly Brazil
e0681eebb9 Merge branch 'master' into dev 2021-04-13 14:57:44 -07:00
Kelly Brazil
e5732d1cea update changelog 2021-04-13 14:54:38 -07:00
Kelly Brazil
6e7ae3cd3f formatting of timedatectl docs 2021-04-13 14:51:46 -07:00
Kelly Brazil
f95632d1aa add install_date calculated fields 2021-04-13 14:49:57 -07:00
Kelly Brazil
2f8b7b26e5 update docs for v1.15.1 2021-04-13 14:35:17 -07:00
Kelly Brazil
10292f7502 Merge pull request #119 from kellyjonbrazil/dpkg_l-fix
add _l to module name
2021-04-12 13:15:40 -07:00
Kelly Brazil
aef54705f5 add _l to module name 2021-04-12 13:15:12 -07:00
Kelly Brazil
bba5980fa5 man page update 2021-04-12 13:13:18 -07:00
Kelly Brazil
977425abfb add _l to package name in docs 2021-04-12 13:12:08 -07:00
Kelly Brazil
37a3565a1b Merge pull request #118 from kellyjonbrazil/rpm-qi-doc-fix
fix rpm-qi docs
2021-04-12 13:06:30 -07:00
Kelly Brazil
13deb8bfb6 fix rpm-qi docs 2021-04-12 13:05:34 -07:00
Kelly Brazil
a3ed9d075a remove old parser doc 2021-04-12 13:04:22 -07:00
Kelly Brazil
fb0ced549e fix rpm-qi docs (used underscore instead of dash in name) 2021-04-12 13:01:17 -07:00
Kelly Brazil
7eb31bc7d2 update airport_s docs 2021-04-09 19:55:03 -07:00
Kelly Brazil
6a06a39142 use herestring instead of echo -e into jq 2021-04-09 16:36:20 -07:00
Kelly Brazil
bdcdaee6c5 Merge pull request #117 from kellyjonbrazil/doc_update
add new docs
2021-04-09 15:11:05 -07:00
Kelly Brazil
605353fdce add new docs 2021-04-09 15:10:38 -07:00
Kelly Brazil
490c9e1769 add more cli tests for magic command 2021-04-09 11:38:17 -07:00
Kelly Brazil
6ebebb659d update changelog 2021-04-09 11:10:08 -07:00
Kelly Brazil
0e70c5ee12 update documentation link 2021-04-09 11:04:17 -07:00
Kelly Brazil
cd531acf60 clean up comment 2021-04-09 11:02:19 -07:00
Kelly Brazil
908ac1f61c update docs - remove compatibility section since it is now automatically generated from info() 2021-04-09 10:56:43 -07:00
Kelly Brazil
f5c7e7e404 add updated docs with home link and parser info at the bottom 2021-04-09 10:36:42 -07:00
Kelly Brazil
001c700b5b add home link to the top of the md file 2021-04-09 10:36:03 -07:00
Kelly Brazil
9b41e9bef0 Add parser information header 2021-04-09 10:32:58 -07:00
Kelly Brazil
34bd6e32dc pull each parser as a json object into a bash array and iterate on it to add supplementary information like version, author, and compatibility 2021-04-09 10:26:34 -07:00
Kelly Brazil
c5d058490b move parser doc printing to its own function 2021-04-09 09:12:41 -07:00
Kelly Brazil
dd1ae6d9a7 add man page inside the pypi package for easier packaging in homebrew 2021-04-09 08:09:37 -07:00
Kelly Brazil
d8ea9bde82 doc update 2021-04-08 16:42:57 -07:00
Kelly Brazil
125edc9c90 bail out for -h, -a, and -v in magic() 2021-04-08 16:42:45 -07:00
Kelly Brazil
15ea43e394 add man file to package for easier packaging in homebrew 2021-04-08 16:28:05 -07:00
Kelly Brazil
b55b02687c doc update 2021-04-08 16:14:11 -07:00
Kelly Brazil
da611f0ac6 update docs 2021-04-08 15:53:06 -07:00
Kelly Brazil
b8b8dfead4 update docs 2021-04-08 15:52:49 -07:00
Kelly Brazil
4290a3cbd1 make IfconfigParser class private 2021-04-08 14:00:56 -07:00
Kelly Brazil
a5e2203cee update ifconfig doc 2021-04-08 12:45:08 -07:00
Kelly Brazil
e28c08b136 update documentation 2021-04-08 12:42:01 -07:00
Kelly Brazil
a4b6846f63 man update 2021-04-08 11:37:39 -07:00
Kelly Brazil
2bc8307861 Merge branch 'master' into dev
# Conflicts:
#	man/jc.1
2021-04-08 11:33:50 -07:00
Kelly Brazil
9b39917c79 update docstrings for new help functionality 2021-04-08 11:24:02 -07:00
Kelly Brazil
57c13cc0a3 add support for parser help 2021-04-08 10:54:15 -07:00
Kelly Brazil
b7355fd30d new docstring format for improved documentation 2021-04-08 10:20:24 -07:00
Kelly Brazil
93ae309e40 bump version to 1.15.1 2021-04-08 10:20:00 -07:00
Kelly Brazil
5d8f8365e2 gzip man page 2021-04-07 14:27:34 -07:00
Kelly Brazil
f26909eefb formatting 2021-04-07 11:18:33 -07:00
Kelly Brazil
55bfbb2797 formatting 2021-04-07 11:13:27 -07:00
Kelly Brazil
8970b8342a Merge pull request #115 from kellyjonbrazil/master
Sync master and dev
2021-04-07 09:34:45 -07:00
Kelly Brazil
5285e699c3 fix rpm-qi parser name 2021-04-07 08:07:50 -07:00
Kelly Brazil
275f3860d5 Merge pull request #114 from kellyjonbrazil/dev
Dev v1.15.0
2021-04-07 07:54:41 -07:00
Kelly Brazil
a73fdb7478 update dates 2021-04-07 07:50:17 -07:00
Kelly Brazil
f2d746403a typo fix 2021-04-06 20:30:56 -07:00
Kelly Brazil
b7dbf2c49b doc formatting 2021-04-06 18:53:50 -07:00
Kelly Brazil
21f3c97788 rename rpm_qai to rpm_qi 2021-04-06 18:38:04 -07:00
Kelly Brazil
14b727cc71 add rpm_qi tests 2021-04-06 18:34:08 -07:00
Kelly Brazil
abee226591 rename rpm_qia to rpm_qi 2021-04-06 18:32:47 -07:00
Kelly Brazil
293ad39f4b typo fix 2021-04-06 16:48:31 -07:00
Kelly Brazil
9244302581 rpm parser doc update 2021-04-06 15:07:39 -07:00
Kelly Brazil
753cac25fb only add description if it exists 2021-04-06 14:46:27 -07:00
Kelly Brazil
0548263e89 add rpm -qai parser 2021-04-06 14:39:39 -07:00
Kelly Brazil
53776a9bf8 note -a output is JSON 2021-04-06 11:36:10 -07:00
Kelly Brazil
cc7def9b76 add OSX finger tests 2021-04-06 11:29:30 -07:00
Kelly Brazil
11a4422c25 add centos 7.7 finger tests 2021-04-06 11:23:29 -07:00
Kelly Brazil
3a44785260 del details key if details are blank 2021-04-06 11:23:09 -07:00
Kelly Brazil
e0d430c26c update -r raw option info 2021-04-06 11:00:46 -07:00
Kelly Brazil
417b70020a add idle time fields to finger parser 2021-04-06 10:51:41 -07:00
Kelly Brazil
7b29c464b7 date updated 2021-04-06 10:04:02 -07:00
Kelly Brazil
26d5529d86 remove aix support, add note for -s support. schema update 2021-04-06 10:03:51 -07:00
Kelly Brazil
852103c478 tweak regex to support arbitrary 'detail' data 2021-04-06 10:02:46 -07:00
Kelly Brazil
26a115421b add finger parser 2021-04-05 17:16:38 -07:00
Kelly Brazil
755b941a9a doc update 2021-04-05 17:14:33 -07:00
Kelly Brazil
fd1ca82d86 add finger parser 2021-04-05 17:09:22 -07:00
Kelly Brazil
6fe175344f change examples link to github.io 2021-04-05 13:38:09 -07:00
Kelly Brazil
3590cda13a docs formatting 2021-04-05 12:07:52 -07:00
Kelly Brazil
2f1011dd85 readme update 2021-04-05 12:03:35 -07:00
Kelly Brazil
2b155261b3 use new github.io links for documentation 2021-04-05 12:01:53 -07:00
Kelly Brazil
02f4d606d0 add documentation links to README.md 2021-04-05 11:49:30 -07:00
Kelly Brazil
577811f00b Set theme jekyll-theme-cayman 2021-04-05 11:42:59 -07:00
Kelly Brazil
b4098d67a3 latest 2021-04-05 09:42:35 -07:00
Kelly Brazil
88bd7554ae add status messages 2021-04-05 09:42:25 -07:00
Kelly Brazil
b5ec16c5ca formatting 2021-04-05 09:23:20 -07:00
Kelly Brazil
68fcb60a14 add updatedocs script 2021-04-04 20:56:10 -07:00
Kelly Brazil
e4781d60ce update parser descriptions with backticks surrounding command names 2021-04-04 20:52:34 -07:00
Kelly Brazil
6201fb346a test backticks in description 2021-04-04 20:31:58 -07:00
Kelly Brazil
f88c8343f9 update iw-scan description for documentation 2021-04-04 20:30:53 -07:00
Kelly Brazil
25410d3316 create readmegen.py script. move jinja2 templates to templates folder 2021-04-04 20:28:54 -07:00
Kelly Brazil
4ff9952938 change OSX to macOS 2021-04-04 15:57:44 -07:00
Kelly Brazil
5e3f63a412 add license and copyright info. use variables instead of hard-coded values 2021-04-04 15:53:23 -07:00
Kelly Brazil
e1f57be69e add license info 2021-04-04 15:52:50 -07:00
Kelly Brazil
2c65d5eecc man page updates 2021-04-04 14:40:22 -07:00
Kelly Brazil
aa621f2f1e enhance man page 2021-04-04 14:29:37 -07:00
Kelly Brazil
ac932c6e59 update timestamp docs 2021-04-03 14:48:30 -07:00
Kelly Brazil
029f79da16 added info regarding updated dev scripts for automating doc generation 2021-04-02 21:52:08 -07:00
Kelly Brazil
153b2b4a7a use jc to help automate the generation of its own docs 2021-04-02 21:50:04 -07:00
Kelly Brazil
709b2fe4ee add -h and -v options 2021-04-02 18:08:46 -07:00
Kelly Brazil
09c1fccc58 manpage updates 2021-04-02 18:04:55 -07:00
Kelly Brazil
fd254d99b7 add manpage generator 2021-04-02 17:40:09 -07:00
Kelly Brazil
88bd2c1722 fix typo 2021-04-02 16:31:22 -07:00
Kelly Brazil
d03e2f0fc1 add parser schema guidelines 2021-04-02 15:01:21 -07:00
Kelly Brazil
3f12a393bd formatting 2021-04-02 13:25:23 -07:00
Kelly Brazil
8c21284c50 remove redundant license info 2021-04-02 13:23:26 -07:00
Kelly Brazil
e7d396c215 update issues link 2021-04-02 13:21:56 -07:00
Kelly Brazil
f238fac0eb add contributing guidelines 2021-04-02 13:19:47 -07:00
Kelly Brazil
017228f80d add tested on Windows 10 2021-04-02 12:14:26 -07:00
Kelly Brazil
286c5fa943 add dir parser 2021-04-02 12:12:43 -07:00
Kelly Brazil
74cfc13abe fixup dir parser tests 2021-04-02 12:10:05 -07:00
Kelly Brazil
0ee4a6c377 update schema and add epoch naive timestamp 2021-04-02 12:01:39 -07:00
Kelly Brazil
283433578d add dir parser 2021-04-02 12:01:23 -07:00
Kelly Brazil
9559c85057 add windows dir format 2021-04-02 12:01:05 -07:00
Kelly Brazil
c5c020f565 add /S option 2021-04-02 11:16:03 -07:00
Kelly Brazil
95ec79bceb Merge pull request #107 from rasheed-rd/add-dir-parser
Add windows dir command parser
2021-04-02 11:14:26 -07:00
Kelly Brazil
8f8be8aa33 add -1 option info 2021-04-02 11:14:06 -07:00
Rasheed Elsaleh
5b60c7445a Add support for /S and update documentation 2021-04-02 13:43:06 -04:00
Rasheed Elsaleh
d9dbcc8b52 Add parent dir to structure. Add test cases. Remove support for /Q 2021-04-02 13:13:05 -04:00
Kelly Brazil
79bc525970 add codes field to schema 2021-04-01 20:42:36 -07:00
Kelly Brazil
9dae1091dd typo fix 2021-04-01 20:41:05 -07:00
Kelly Brazil
74d3ac686a add dpkg-l tests 2021-04-01 20:37:12 -07:00
Kelly Brazil
cf3cc636ba add dpkg-l parser info 2021-04-01 20:25:56 -07:00
Kelly Brazil
a720441e1d add dpkg -l example 2021-04-01 20:24:19 -07:00
Kelly Brazil
0a7ed0959d rename err to error 2021-04-01 20:17:21 -07:00
Kelly Brazil
eb83c9b86d replace parse_datetime_to_timestamp with timestamp class 2021-04-01 20:13:40 -07:00
Kelly Brazil
5c0142dd19 add dpkg-l parser 2021-04-01 20:12:58 -07:00
Kelly Brazil
c326c8dc83 add TypeError to except block. add /usr/bin/time tests 2021-04-01 12:52:10 -07:00
Kelly Brazil
fc4082a03f remove old parse_datetime_to_timestamp function 2021-04-01 11:26:02 -07:00
Kelly Brazil
c8655565ff use new timestamp class 2021-04-01 11:23:24 -07:00
Kelly Brazil
638f879f16 use new timestamp class 2021-04-01 11:21:27 -07:00
Kelly Brazil
1d221bf7e6 use new timestamp class 2021-04-01 11:19:49 -07:00
Kelly Brazil
60ea71f0ef use new timestamp class 2021-04-01 11:18:03 -07:00
Kelly Brazil
d8bdd35a3f use new timestamp class 2021-04-01 11:17:53 -07:00
Kelly Brazil
7463891c53 use new timestamp class 2021-04-01 11:13:02 -07:00
Kelly Brazil
7537aec76f use jc.utils.timestamp instead of jc.utils.parse_datetime_to_timestamp() 2021-04-01 11:08:27 -07:00
Kelly Brazil
62234e39a8 use jc.utils.timestamp instead of jc.utils.parse_datetime_to_timestamp() 2021-04-01 11:08:20 -07:00
Kelly Brazil
be004b7b3f make parse_datetime_to_timestamp function a class called timestamp for easier use 2021-04-01 11:07:37 -07:00
Kelly Brazil
82539444b2 fix indentation for int and float conversions. add real_time field to schema 2021-03-31 20:48:44 -07:00
Kelly Brazil
a571d3cbaf fix typo 2021-03-31 20:41:04 -07:00
Kelly Brazil
a038c14c23 change microseconds to centiseconds 2021-03-31 20:39:03 -07:00
Kelly Brazil
25a85d874c update docs 2021-03-31 20:21:29 -07:00
Kelly Brazil
884c36ff42 add /usr/bin/time parser 2021-03-31 20:19:46 -07:00
Kelly Brazil
b98e72b8b4 add ls parser info 2021-03-30 21:33:23 -07:00
Kelly Brazil
05885c0096 add epoch and epoch_utc timestamps 2021-03-30 21:29:34 -07:00
Kelly Brazil
4c9761231a add when_epoch and when_epoch_utc fields 2021-03-30 20:41:10 -07:00
Kelly Brazil
656eaa1508 formatting 2021-03-30 16:43:53 -07:00
Kelly Brazil
1560dcddcf add acpi, upower parsers and -v version option 2021-03-30 16:43:02 -07:00
Kelly Brazil
08d4cd4870 add time calculations to acpi parser 2021-03-30 16:34:01 -07:00
Kelly Brazil
9767a50ced update who parser to add epoch naive timestamp 2021-03-30 11:59:44 -07:00
Kelly Brazil
cd86890ed1 add website to info and use variables for version info 2021-03-30 08:05:26 -07:00
Kelly Brazil
ba0dd3b9ca add parse_timedate_to_timestamp test for format 7300 2021-03-29 21:25:19 -07:00
Kelly Brazil
8d7fa07ffd unformat json 2021-03-29 21:20:19 -07:00
Kelly Brazil
cade1bfe6e update timedatectl tests for new epoch_utc field 2021-03-29 21:19:12 -07:00
Kelly Brazil
daec4ab0a7 add epoch_utc field to timedatectl parser 2021-03-29 21:16:40 -07:00
Kelly Brazil
3c96bc3196 version bump 2021-03-29 20:57:58 -07:00
Kelly Brazil
7f7d8d4bd6 update stat docs 2021-03-29 20:36:10 -07:00
Kelly Brazil
47263661a4 update stat example 2021-03-29 20:30:20 -07:00
Kelly Brazil
4c42a086d2 clean up debug code 2021-03-29 20:25:54 -07:00
Kelly Brazil
5d2541a5c4 remove auto c locale and use a manual format rule for windows and linux compatibility 2021-03-29 20:22:35 -07:00
Kelly Brazil
d91d170b49 try manual c locale format for windows 2021-03-29 20:16:05 -07:00
Kelly Brazil
6d1f4584a9 try manually setting time format for windows compatibility 2021-03-29 20:05:42 -07:00
Kelly Brazil
1d76d96bcf debug windows issue 2021-03-29 16:58:57 -07:00
Kelly Brazil
e8847c998c update stat tests 2021-03-29 16:35:26 -07:00
Kelly Brazil
da88e49bae add new examples 2021-03-29 15:36:16 -07:00
Kelly Brazil
65c3a12e54 simplify None data scenario 2021-03-29 15:32:04 -07:00
Kelly Brazil
d8d600cc36 add reference to -h for help 2021-03-29 14:51:48 -07:00
Kelly Brazil
507999b117 add stat command timestamp detection 2021-03-29 14:45:13 -07:00
Kelly Brazil
8ad164eb34 fix tests for compact output 2021-03-29 12:33:54 -07:00
Kelly Brazil
a507df140b add compact json info 2021-03-29 12:25:58 -07:00
Kelly Brazil
8912a99986 make default json output more compact 2021-03-29 12:25:48 -07:00
Kelly Brazil
1953f98828 add version info. add json now supports unicode output 2021-03-29 11:44:43 -07:00
Kelly Brazil
7515218ddd use jc.utils for all warning and error messages. simply error and warning formatting. 2021-03-29 11:42:01 -07:00
Kelly Brazil
36c1120136 formatting 2021-03-29 10:59:56 -07:00
Kelly Brazil
8fa0fe64d8 add -v to helptext. minor formatting 2021-03-29 10:52:02 -07:00
Kelly Brazil
c1a8201b14 add copyright 2021-03-29 10:24:58 -07:00
Kelly Brazil
398bbac48c simplify return value for parse_datetime_to_timestamp() 2021-03-29 10:23:52 -07:00
Kelly Brazil
ea71a42bbd formatting 2021-03-29 09:43:19 -07:00
Kelly Brazil
1c16d25b17 add version option (-v) and copyright information. add 'ensure_ascii=False' to json dumps to properly show UTF-8 copyright character 2021-03-29 09:41:15 -07:00
Kelly Brazil
9d12ded889 help description change 2021-03-26 16:32:17 -07:00
Kelly Brazil
5312701515 add - make all external python requirements optional 2021-03-26 16:29:10 -07:00
Kelly Brazil
808c7bc0a9 make xmltodict library optional 2021-03-26 16:14:35 -07:00
Kelly Brazil
4d394015f4 make ruamel.yaml library optional 2021-03-26 16:10:28 -07:00
Kelly Brazil
3638298af8 make pygments library optional 2021-03-26 15:54:45 -07:00
Kelly Brazil
5f00973e40 remove parenthesis to normalize text for naive timezone detection 2021-03-26 15:38:57 -07:00
Kelly Brazil
0f6e2c14fc simplify timestamp failure logic 2021-03-26 14:57:19 -07:00
Kelly Brazil
51813da619 add offset timezones. fix timestamp logic on conversion failure 2021-03-26 14:56:45 -07:00
Kelly Brazil
e7751322ea formatting 2021-03-26 14:55:47 -07:00
Kelly Brazil
26ef298437 change return to always include the entire object but all keys may be None if conversion fails 2021-03-26 14:55:16 -07:00
Kelly Brazil
badaf8ce73 comment formatting 2021-03-26 14:00:33 -07:00
Kelly Brazil
b123a62203 move locale change formats to the end of the list 2021-03-26 13:11:34 -07:00
Kelly Brazil
cfd77e4252 reset locale to None on exception 2021-03-26 13:01:12 -07:00
Kelly Brazil
38f814072e better normalization of datetime string. better UTC detection. More formats supported with detected locale. 2021-03-26 11:55:12 -07:00
Kelly Brazil
a0db7754e3 add nixos install info 2021-03-26 09:32:49 -07:00
Kelly Brazil
f07620afc7 move version to jc.__init__.py
add -h option for help instead of always showing on error
use jc.utils.error_message for the following errors: missing/incorrect arguments, parser not found, missing piped data
2021-03-26 09:28:03 -07:00
Kelly Brazil
c1b0d27752 remove old commented commands 2021-03-25 20:45:38 -07:00
Kelly Brazil
430a5108aa move all tests to github actions 2021-03-25 20:42:58 -07:00
Kelly Brazil
111ce92fc9 attempt all tests in github actions with timezone correction 2021-03-25 20:37:35 -07:00
Kelly Brazil
c851e8a58d force github action 2021-03-25 20:33:25 -07:00
Kelly Brazil
39f4bcd9b4 Change Windows timezone
use "Pacific Standard Time"
2021-03-25 20:30:13 -07:00
Kelly Brazil
4a610c4c81 force github action 2021-03-25 19:57:32 -07:00
Kelly Brazil
89ee11945d Change timezone provider
uses: szenius/set-timezone@v1.0
2021-03-25 19:55:21 -07:00
Kelly Brazil
dadb09b74a force github action 2021-03-25 19:52:43 -07:00
Kelly Brazil
1b1f638b97 Change timezone change provider
change to actions/set-timezone-action
2021-03-25 19:49:03 -07:00
Kelly Brazil
794fc4ed44 add parse_datetime_to_timestamp() tests 2021-03-25 19:43:16 -07:00
Kelly Brazil
72f735bf92 Set Timezone to America/Los_Angeles
Using zcong1993/setup-timezone
2021-03-25 19:42:02 -07:00
Kelly Brazil
912877f25a additional timezone info 2021-03-25 15:34:54 -07:00
Kelly Brazil
2772c5ae43 formatting 2021-03-25 15:10:07 -07:00
Rasheed Elsaleh
a7ad24d2cb Add dir parser
Add usage commands

Fix example options

update dir.md
2021-03-25 18:09:47 -04:00
Kelly Brazil
a364a6a9fa add note regarding calculated timestamps 2021-03-25 15:08:23 -07:00
Kelly Brazil
7b2dc86a8d update last example with new timestamp fields 2021-03-25 12:07:36 -07:00
Kelly Brazil
ad645636d0 update uptime docs 2021-03-25 11:43:30 -07:00
Kelly Brazil
2f2f297b29 update uptime fixtures with new fields 2021-03-25 11:35:21 -07:00
Kelly Brazil
099ae3fde0 fix issue when there is no data 2021-03-25 11:17:44 -07:00
Kelly Brazil
e9febe98ac add localtest partition lines for readability 2021-03-25 11:17:01 -07:00
Kelly Brazil
5fbd07cccf rewrite of uptime parser including new fields 2021-03-25 10:31:12 -07:00
Kelly Brazil
5fed4698c2 update docs and version number 2021-03-24 21:57:04 -07:00
Kelly Brazil
ed7eb0983a use parse_datetime_to_timestamp function instead of custom format string 2021-03-24 21:51:43 -07:00
Kelly Brazil
90c7e18e5f update date example 2021-03-24 21:50:32 -07:00
Kelly Brazil
953ab5c3bd make upower tests local only 2021-03-24 21:29:30 -07:00
Kelly Brazil
699c97d8a0 add last parser info 2021-03-24 21:24:47 -07:00
Kelly Brazil
e4ca0de92a add upower tests 2021-03-24 21:24:25 -07:00
Kelly Brazil
04745a36b8 doc update 2021-03-24 20:21:06 -07:00
Kelly Brazil
5936940532 rewrite of date parser using datetime library 2021-03-24 20:20:53 -07:00
Kelly Brazil
b3eb064b67 clarify format definition comments 2021-03-24 17:13:01 -07:00
Kelly Brazil
e4b41057e3 update upower fixture names 2021-03-24 17:02:17 -07:00
Kelly Brazil
1d41c46cc7 normalize datetime string to remove all timezones except UTC 2021-03-24 17:01:56 -07:00
Kelly Brazil
a5c444587b add before and after midnight date tests 2021-03-24 15:13:10 -07:00
Kelly Brazil
a56f471be9 update fixture to use UTC for better testing 2021-03-24 15:05:22 -07:00
Kelly Brazil
6a6b26ed8d fix 12 to 24 hour conversion for midnight cases 2021-03-24 15:04:39 -07:00
Kelly Brazil
f62446c152 rename variables. add another european time format 2021-03-24 15:04:09 -07:00
Kelly Brazil
56011f1f17 updated upower examples 2021-03-24 14:14:22 -07:00
Kelly Brazil
6d44091c80 refactor parse_datetime_to_timestamp() 2021-03-24 14:01:06 -07:00
Kelly Brazil
440c458eb4 no need for ternary clause 2021-03-24 12:57:19 -07:00
Kelly Brazil
798250af61 use jc.utils.parse_datetime_to_timestamp() function for timestamp creation 2021-03-24 12:49:53 -07:00
Kelly Brazil
c762de29c6 doc updates 2021-03-24 12:47:57 -07:00
Kelly Brazil
0701e65e97 add parse_datetime_to_timestamp() function 2021-03-24 12:36:54 -07:00
Kelly Brazil
209d54e8b5 add hour_24 to schema docs 2021-03-24 07:39:11 -07:00
Kelly Brazil
2b38462de7 update examples 2021-03-23 14:59:03 -07:00
Kelly Brazil
1e8e553316 add hour_24 field 2021-03-23 14:47:44 -07:00
Kelly Brazil
ab42e6bb15 formatting 2021-03-23 14:10:42 -07:00
Kelly Brazil
6802884540 ensure period is always uppercase in dict value. update period documentation 2021-03-23 14:04:36 -07:00
Kelly Brazil
7cb8577b96 correct epoch_utc calculation. Fix for 12 hour vs. 24 hour representation 2021-03-23 13:55:23 -07:00
Kelly Brazil
55810ccd1f set epoch_dt conversion again if not C locale 2021-03-22 22:10:35 -07:00
Kelly Brazil
f9921720cd revert to local testing for naive datetime objects 2021-03-22 22:01:07 -07:00
Kelly Brazil
cda1ebd271 try tzset() 2021-03-22 21:53:50 -07:00
Kelly Brazil
6901e4a23a try setting timezone env variable before tests to ensure it is the same on all test systems 2021-03-22 21:49:26 -07:00
Kelly Brazil
6bc21d3c73 fix date parser tests - local tests only since timezones may not match on github actions VMs 2021-03-22 21:05:39 -07:00
Kelly Brazil
1ef231e26a add date parser updates 2021-03-22 20:57:36 -07:00
Kelly Brazil
3cd43f0f98 formatting 2021-03-22 20:57:16 -07:00
Kelly Brazil
1565019966 fix weekday numbering to be ISO 8601 compliant. Add naive calculated epoch timestamp field 2021-03-22 20:56:57 -07:00
Kelly Brazil
0a4de2d3a1 add naive datetime calculation info to docs 2021-03-22 20:22:35 -07:00
Kelly Brazil
a058f6c174 added naive epoch calculation info to docs 2021-03-22 20:21:46 -07:00
Kelly Brazil
d8e5d03b01 naive updated_epoch timestamp calculation added 2021-03-22 20:21:12 -07:00
Kelly Brazil
9dc62eff2e remove epoch conversions 2021-03-21 15:43:37 -07:00
Kelly Brazil
d4fea17c57 use UTC when calculating epoch timestamp. reset time locale to default after changing 2021-03-21 14:03:36 -07:00
Kelly Brazil
3dd7a5b77e add upower docs 2021-03-19 11:00:50 -07:00
Kelly Brazil
d77c90a3ba fix quoted values in detail level. Add examples 2021-03-19 10:43:20 -07:00
Kelly Brazil
01f0c20df0 add sample using C locale timestamp 2021-03-18 16:59:46 -07:00
Kelly Brazil
aafbe576b3 working parser and processor 2021-03-18 16:59:19 -07:00
Kelly Brazil
bd68ad4034 don't modify detail_type value since it is no longer a key 2021-03-17 14:31:51 -07:00
Kelly Brazil
bfee017c13 made the schema more explicit by hardcoding more items. still working on the schema 2021-03-17 14:21:19 -07:00
Kelly Brazil
61f532cfd0 working history list 2021-03-17 13:30:47 -07:00
Kelly Brazil
58dbbb75b6 simplified logic 2021-03-17 13:10:52 -07:00
Kelly Brazil
8d88b91fcf move if statements and generalize the history detail detection 2021-03-17 12:49:48 -07:00
Kelly Brazil
ad39fc6029 working upower parser. history lines are ignored 2021-03-17 11:26:06 -07:00
Kelly Brazil
89f1fd96e6 add acpi tests 2021-03-16 12:12:01 -07:00
Kelly Brazil
bd425f2493 version bump to v1.15.0. Add acpi docs 2021-03-16 11:45:56 -07:00
Kelly Brazil
46962ff02a remove redundant lines 2021-03-12 16:45:15 -08:00
Kelly Brazil
e4cb88b051 remove unneeded line-state assignment 2021-03-12 12:47:59 -08:00
Kelly Brazil
32840703dc remove redundant code 2021-03-12 08:55:04 -08:00
Kelly Brazil
1f7aafd041 fix for full charge batter case. Clean up battery object logic 2021-03-12 08:45:32 -08:00
Kelly Brazil
7378d5dce4 remove comment 2021-03-11 21:06:24 -08:00
Kelly Brazil
84f76866cd working process function 2021-03-11 21:05:29 -08:00
Kelly Brazil
322da9ea6a working parser 2021-03-11 20:43:31 -08:00
Kelly Brazil
58645301ec add acpi command parser 2021-03-11 19:55:47 -08:00
Kelly Brazil
1e18dd30a8 Merge pull request #102 from kellyjonbrazil/dev
Dev v1.14.4
2021-03-05 11:50:37 -08:00
Kelly Brazil
cc6a19adcc fix typo in comments 2021-03-05 09:41:17 -08:00
Kelly Brazil
2a5588b177 packaging fix for yaml parser and pyoxidizer 2021-03-05 09:38:22 -08:00
Kelly Brazil
20f9b7f88b fix typo 2021-02-25 11:09:56 -08:00
Kelly Brazil
d7e32313cd fix typo 2021-02-25 11:09:14 -08:00
Kelly Brazil
fb5654d3c4 formatting 2021-02-11 11:27:54 -08:00
Kelly Brazil
258f1433b3 add locale info to readme 2021-02-11 11:27:01 -08:00
Kelly Brazil
fb723ae8bd Merge pull request #101 from kellyjonbrazil/dev
Dev v1.14.3
2021-02-10 11:01:57 -08:00
Kelly Brazil
283b89e37c simplify answer data logic 2021-02-10 10:55:53 -08:00
Kelly Brazil
f450f9eb8b add hciconfig tests 2021-02-10 10:47:56 -08:00
Kelly Brazil
b3f8cf99a4 work for both tabs and spaces 2021-02-10 08:03:36 -08:00
Kelly Brazil
4301ea8cae remove debug line 2021-02-09 16:12:36 -08:00
Kelly Brazil
c672d1c174 initial working hciconfig parser 2021-02-09 16:03:00 -08:00
Kelly Brazil
229e953a38 initial add of hciconfig parser 2021-02-09 13:26:24 -08:00
Kelly Brazil
87b506dc9b fix for spaces in dig answer data 2021-02-05 06:55:06 -08:00
Kelly Brazil
15c9002d9e simplify logic by taking out 'not' in JC_COLORS parsing 2021-01-08 11:56:56 -08:00
Kelly Brazil
042aaa61b9 minor updates 2021-01-08 08:23:29 -08:00
Kelly Brazil
ef856c6ba5 clarify -q option 2021-01-07 12:09:41 -08:00
Kelly Brazil
9cf5be73e3 typo fix 2021-01-06 16:19:47 -08:00
Kelly Brazil
63fc149e2a typo fix 2021-01-06 16:17:25 -08:00
Kelly Brazil
3c25839350 Merge pull request #98 from kellyjonbrazil/dev
Dev v1.14.1
2021-01-06 14:37:24 -08:00
Kelly Brazil
58246e33b7 update compatibility info and changelog date 2021-01-06 14:33:38 -08:00
Kelly Brazil
8b1407c706 pull env-specific tests from CI/CD and run locally only 2021-01-06 14:22:26 -08:00
Kelly Brazil
2fde4a4e22 doc updates 2021-01-06 12:07:58 -08:00
Kelly Brazil
60b9e97982 last parser enhancements: augment hostname with CONSOLE for GUI login, add convenience fields when -F is used: login_epoch, logout_epoch, duration_seconds, calculate duration to hours:minutes 2021-01-06 12:02:47 -08:00
Kelly Brazil
0adac79c0f Add last parser enhancements 2021-01-06 11:09:59 -08:00
Kelly Brazil
9f485b5981 change mac_address fieldname to bssid. Add credit to Phillip 2021-01-06 11:09:37 -08:00
Kelly Brazil
db17d21b8f Merge pull request #97 from pschmitt/iw_scan_fix_space_detection
iw_scan: Improve detection of lines starting with spaces
2021-01-06 10:42:30 -08:00
Philipp Schmitt
996d394e89 iw_scan: Improve detection of lines starting with spaces 2021-01-06 10:32:17 +01:00
Kelly Brazil
5885b960f9 doc updates 2021-01-05 22:12:13 -08:00
Kelly Brazil
79987b35f3 formatting 2021-01-05 22:07:22 -08:00
Kelly Brazil
661b3ef311 doc updates 2021-01-05 22:04:44 -08:00
Kelly Brazil
fb422726a8 update test to add 'down' condition 2021-01-05 21:55:06 -08:00
Kelly Brazil
4fb6f3ea59 add support for down in addition to crash 2021-01-05 21:51:30 -08:00
Kelly Brazil
f78fe771e1 add iw-scan tests 2021-01-05 21:38:51 -08:00
Kelly Brazil
567b887253 doc updates 2021-01-05 21:26:43 -08:00
Kelly Brazil
e516e6b946 fix country/environment fields and process int/float conversions 2021-01-05 21:17:40 -08:00
Kelly Brazil
62748676aa initial iw-scan parser 2021-01-05 20:44:22 -08:00
Kelly Brazil
7351c72e45 add fixes and tests for entries that contain 'crash' 2021-01-05 15:16:40 -08:00
Kelly Brazil
2b7405c5e2 doc updates 2021-01-05 13:58:38 -08:00
Kelly Brazil
e2c77cb935 add test for last -F output 2021-01-05 13:00:38 -08:00
Kelly Brazil
7ac621e4c9 add -F support 2021-01-05 12:29:29 -08:00
Kelly Brazil
d8b5d6c66c version bump to 1.14.1 2021-01-05 09:45:37 -08:00
Kelly Brazil
22b461eb4b Add period field for en_US.UTF-8 locale 2021-01-05 09:42:05 -08:00
Kelly Brazil
b37ee8555a changelog update 2021-01-04 18:02:07 -08:00
Kelly Brazil
1d0ad2f045 doc fixes 2021-01-04 18:01:16 -08:00
Kelly Brazil
ceccfb2c81 add test output for iw-scan and date on ubuntu 20.04 2021-01-04 17:05:26 -08:00
Kelly Brazil
03c02953cd add wc doc 2021-01-01 12:01:56 -08:00
Kelly Brazil
f254a0eaa1 version bump 2020-12-31 16:45:10 -08:00
Kelly Brazil
9e3b88727c Merge pull request #91 from kellyjonbrazil/dev
Dev v1.14.0
2020-12-31 16:40:36 -08:00
Kelly Brazil
b12217466e spelling 2020-12-31 16:37:47 -08:00
Kelly Brazil
8b9c932f9b update date 2020-12-31 16:37:14 -08:00
Kelly Brazil
5986ce03db add printenv info 2020-12-31 16:36:27 -08:00
Kelly Brazil
a7b0e936e4 add vdir and printenv info 2020-12-31 14:21:24 -08:00
Kelly Brazil
cb02211424 add wc tests 2020-12-31 14:19:45 -08:00
Kelly Brazil
bd443bf392 add printenv to env docs 2020-12-31 14:11:25 -08:00
Kelly Brazil
1f547edd36 add printenv to env docs 2020-12-31 14:10:56 -08:00
Kelly Brazil
e4bac3a493 add wc parser 2020-12-31 14:10:37 -08:00
Kelly Brazil
5e6bfa681a add vdir info 2020-12-31 13:18:53 -08:00
Kelly Brazil
276160125e add new commands to README 2020-12-30 14:04:49 -08:00
Kelly Brazil
d4ae5543f2 add hash tests 2020-12-30 13:11:13 -08:00
Kelly Brazil
55f360e267 add hash command parser 2020-12-30 12:58:52 -08:00
Kelly Brazil
fdedab2a0c description updates 2020-12-30 11:33:29 -08:00
Kelly Brazil
a9be42e303 specify parser warnings for quiet option 2020-12-30 11:28:42 -08:00
Kelly Brazil
6da9510e46 add cksum tests 2020-12-30 11:22:17 -08:00
Kelly Brazil
0431798178 add cksum parser 2020-12-30 11:02:02 -08:00
Kelly Brazil
62432f3c48 update hashsum description 2020-12-30 09:59:54 -08:00
Kelly Brazil
9fbbc30906 add supported commands to docs 2020-12-29 13:09:03 -08:00
Kelly Brazil
d1567d1f62 add hashsum documentation 2020-12-29 13:05:04 -08:00
Kelly Brazil
6ca1f5970b Merge branch 'dev' of https://github.com/kellyjonbrazil/jc into dev 2020-12-29 12:59:02 -08:00
Kelly Brazil
1c880b9e24 force git tests 2020-12-29 12:58:04 -08:00
Kelly Brazil
3b7d54c720 add python 3.9 2020-12-29 12:55:30 -08:00
Kelly Brazil
44a7406057 add hashsum tests 2020-12-29 12:51:43 -08:00
Kelly Brazil
8157dcfdb1 fix for files with spaces in the name 2020-12-29 12:25:20 -08:00
Kelly Brazil
28762aea15 add hashsum parser 2020-12-29 11:36:20 -08:00
Kelly Brazil
439871ea9f add ubuntu 2020-11-19 07:07:30 -08:00
Kelly Brazil
c9180b005c formatting 2020-08-30 11:58:42 -07:00
Kelly Brazil
b14e0725f8 add ansible plugin blog post link 2020-08-30 11:57:55 -07:00
Kelly Brazil
70fe3dcb4d formatting 2020-08-26 15:21:45 -07:00
Kelly Brazil
8c554604a4 formatting 2020-08-26 14:41:01 -07:00
Kelly Brazil
a0a35454bd add link to the web demo 2020-08-26 14:39:40 -07:00
Kelly Brazil
e8467e2af5 remove extra space 2020-08-20 10:57:13 -07:00
Kelly Brazil
7515deb566 add ansible install command 2020-08-20 10:39:34 -07:00
Kelly Brazil
ed9e52af24 spelling 2020-08-20 10:37:15 -07:00
Kelly Brazil
592a380410 add Ansible note 2020-08-20 10:35:49 -07:00
Kelly Brazil
1a458d2d5b update link 2020-08-11 07:00:07 -07:00
Kelly Brazil
0e4cf53b92 add parser docs link 2020-08-11 06:36:30 -07:00
Kelly Brazil
e2f06ccb33 formatting 2020-08-06 13:00:33 -07:00
Kelly Brazil
8abff004cd indentation fix 2020-08-06 12:59:30 -07:00
Kelly Brazil
c4a0e2e3fe fix indentation 2020-08-06 12:58:53 -07:00
Kelly Brazil
4f10f79c73 standardize doc 2020-08-06 12:55:24 -07:00
Kelly Brazil
69e7a560fd add output info to docs 2020-08-06 07:48:08 -07:00
Kelly Brazil
59b1055808 enhance docs 2020-08-05 16:51:58 -07:00
Kelly Brazil
6ed48c6289 enhance docs 2020-08-05 15:34:17 -07:00
Kelly Brazil
f2fb4d3f41 improve docs 2020-08-05 15:10:48 -07:00
Kelly Brazil
6aeea59ea8 doc updates 2020-08-05 15:08:42 -07:00
Kelly Brazil
d016f3bbb3 improve documentation 2020-08-05 15:07:33 -07:00
Kelly Brazil
7131c29718 add module usage info to docs 2020-08-05 13:32:59 -07:00
Kelly Brazil
7432442983 add usage 2020-08-05 13:31:52 -07:00
Kelly Brazil
5344883394 spelling/add ping parser update 2020-08-05 11:35:52 -07:00
Kelly Brazil
3fcd2f6c2e version bump 2020-08-05 11:34:29 -07:00
Kelly Brazil
f3d84bd5bf tighten crontab and crontab-u parser variable detection 2020-08-05 11:28:37 -07:00
Kelly Brazil
549780c232 add debian/apt-get info 2020-08-05 11:04:07 -07:00
Kelly Brazil
2a6da69b82 improve linux/bsd check 2020-08-05 09:58:01 -07:00
Kelly Brazil
5c538816cf ping parser fix for raspberry pi 2020-08-04 17:36:35 -07:00
Kelly Brazil
7b8b378a7d add pydoc-markdown version requirement 2020-08-03 12:39:18 -07:00
Kelly Brazil
e30a75e25c Merge pull request #76 from kellyjonbrazil/dev
Dev v1.13.2
2020-08-03 10:18:39 -07:00
Kelly Brazil
85ad5cfd0b date change 2020-08-03 10:14:13 -07:00
Kelly Brazil
88b9d5068c finish date parser 2020-08-03 09:26:37 -07:00
Kelly Brazil
f8c4948a09 remove comment 2020-07-31 16:52:48 -07:00
Kelly Brazil
412322447f add month_num and weekday_num fields 2020-07-31 16:51:05 -07:00
Kelly Brazil
d4f289e40f documentation fixup 2020-07-31 14:47:06 -07:00
Kelly Brazil
e1f3feb8f5 cover empty data case in process 2020-07-31 14:45:30 -07:00
Kelly Brazil
37d3bc699c add date parser 2020-07-31 14:39:02 -07:00
Kelly Brazil
672fd18016 date bump 2020-07-31 12:59:44 -07:00
Kelly Brazil
bc2c23a2a0 version bump 2020-07-31 12:58:58 -07:00
Kelly Brazil
865f7e7812 add kv parser to man page 2020-07-31 12:58:11 -07:00
Kelly Brazil
720212b552 fixup traceroute example with new behavior 2020-07-31 11:02:24 -07:00
Kelly Brazil
d3be61f608 version bump 2020-07-31 10:59:46 -07:00
Kelly Brazil
13418b16b8 doc update 2020-07-31 10:56:51 -07:00
Kelly Brazil
42d2017cd6 traceroute updates: handle missing header row, add annotations, don't print timeouts as probes 2020-07-31 10:53:47 -07:00
Kelly Brazil
4345e76ead change to use --kv for key/value files 2020-07-30 16:49:38 -07:00
Kelly Brazil
741431322b update tests for kv parser 2020-07-30 16:45:36 -07:00
Kelly Brazil
980beaaf41 fix docgen issue 2020-07-30 16:21:03 -07:00
Kelly Brazil
2205034e09 add kv parser 2020-07-30 16:20:51 -07:00
Kelly Brazil
82b9c87a66 update docs 2020-07-30 16:20:24 -07:00
Kelly Brazil
dda517a937 shorten more examples 2020-07-29 14:36:20 -07:00
Kelly Brazil
4e6d283b9e shorten netstat example 2020-07-29 14:27:13 -07:00
Kelly Brazil
55acab05aa change name to CHANGELOG 2020-07-29 11:55:16 -07:00
Kelly Brazil
ed38a18d23 remove more examples 2020-07-29 11:49:00 -07:00
Kelly Brazil
95b3c11203 remove more examples 2020-07-29 11:43:22 -07:00
Kelly Brazil
dce318f4fd remove examples to reduce file size 2020-07-29 11:40:47 -07:00
Kelly Brazil
85127f0fb8 move examples to root 2020-07-29 11:34:43 -07:00
Kelly Brazil
fb45058244 add examples file 2020-07-29 11:32:18 -07:00
Kelly Brazil
45bb5ae389 spelling 2020-07-28 11:03:41 -07:00
Kelly Brazil
339238ab36 version bump and add route -6 tests 2020-07-27 20:37:33 -07:00
Kelly Brazil
032cda8b3d Merge pull request #74 from kellyjonbrazil/dev
Dev v1.13.0
2020-07-27 19:12:21 -07:00
Kelly Brazil
6badd3fb1e add parser count test 2020-07-27 19:02:23 -07:00
Kelly Brazil
724d825745 add tracepath parser 2020-07-27 19:02:11 -07:00
Kelly Brazil
ff1e32ad2e version bump 2020-07-27 16:49:34 -07:00
Kelly Brazil
a5f97febd3 update traceroute, tracepath, and uname tests 2020-07-27 16:47:41 -07:00
Kelly Brazil
5baa6cc865 add route parser update 2020-07-27 15:44:13 -07:00
Kelly Brazil
7a4f30b843 fix for iface issue 2020-07-27 15:37:44 -07:00
Kelly Brazil
b2c385dc4f change 'if' to 'iface' 2020-07-27 15:30:09 -07:00
Kelly Brazil
5d5da8d33f more fixes for ipv6 fix 2020-07-27 15:27:11 -07:00
Kelly Brazil
e604571578 fix next_hop fix 2020-07-27 15:20:51 -07:00
Kelly Brazil
f9dacc3f95 fixup for ipv6 2020-07-27 15:18:13 -07:00
Kelly Brazil
6086920332 update ParseError message 2020-07-27 15:13:32 -07:00
Kelly Brazil
f52f3163bc add tracepath example 2020-07-27 13:57:58 -07:00
Kelly Brazil
d18ff73e88 update author info 2020-07-27 13:51:51 -07:00
Kelly Brazil
1e5d602cae working tracepath parser 2020-07-27 13:48:46 -07:00
Kelly Brazil
12912521ec doc update 2020-07-27 11:04:27 -07:00
Kelly Brazil
842ea3a94b add tracepath parser skeleton 2020-07-27 11:02:13 -07:00
Kelly Brazil
a8560dbc15 add tracepath 2020-07-27 11:01:57 -07:00
Kelly Brazil
a65e27540a update docs 2020-07-27 11:01:45 -07:00
Kelly Brazil
c3c5ed11e6 change name from tr to trparse 2020-07-27 10:33:40 -07:00
Kelly Brazil
ce24149335 formatting 2020-07-27 10:33:25 -07:00
Kelly Brazil
0314ca8c48 add trparse acknowledgement 2020-07-27 10:33:15 -07:00
Kelly Brazil
ebd8ee49a9 add key/value info to ini example 2020-07-27 10:28:15 -07:00
Kelly Brazil
38d10c9781 add ping and traceroute examples 2020-07-27 09:29:30 -07:00
Kelly Brazil
360106c24d add tracepath 2020-07-27 09:23:01 -07:00
Kelly Brazil
ca470a5d02 add tracepath fixtures 2020-07-27 09:20:00 -07:00
Kelly Brazil
57f66e6b1d add exception with hint to use "uname -a" 2020-07-27 09:19:48 -07:00
Kelly Brazil
e774f67924 turn off interpolation and coerce None to '' 2020-07-24 16:53:17 -07:00
Kelly Brazil
ac10e576c1 spelling 2020-07-24 16:29:27 -07:00
Kelly Brazil
bcae0a99cd add key/value to ini description 2020-07-24 16:23:45 -07:00
Kelly Brazil
c73c2ff879 add ping, traceroute, and ini update 2020-07-24 16:23:30 -07:00
Kelly Brazil
c39b1a3356 add ping, traceroute and update ini description 2020-07-24 16:17:51 -07:00
Kelly Brazil
125dc2d9e0 add info about key/value files to doc 2020-07-24 16:17:16 -07:00
Kelly Brazil
b7d4ddc7ce add tests for key/value files 2020-07-24 16:16:54 -07:00
Kelly Brazil
f5e546c6fa add support for simple key/value pairs 2020-07-24 16:16:24 -07:00
Kelly Brazil
928e39cd10 add generic traceroute tests 2020-07-24 14:16:41 -07:00
Kelly Brazil
d0b7ea68a0 check for key in dictionary 2020-07-24 13:47:47 -07:00
Kelly Brazil
8444690133 add traceroute 2020-07-24 13:47:29 -07:00
Kelly Brazil
c03c42d767 add traceroute tests 2020-07-24 13:47:23 -07:00
Kelly Brazil
ab67688a00 add test skeleton 2020-07-23 16:45:09 -07:00
Kelly Brazil
5dcb7166da add traceroute doc 2020-07-23 16:44:57 -07:00
Kelly Brazil
14697b86d7 add MIT license 2020-07-23 15:48:08 -07:00
Kelly Brazil
4f4b6276d4 update docstring 2020-07-23 15:46:22 -07:00
Kelly Brazil
7bc497e129 updated process() function to set integers and floats 2020-07-23 15:42:33 -07:00
Kelly Brazil
68a37a6a5a remove unused function load() 2020-07-23 12:48:33 -07:00
Kelly Brazil
6f5cd1d7c5 change to use f-string 2020-07-23 12:03:21 -07:00
Kelly Brazil
126b1b121c add traceroute6 example 2020-07-23 11:31:56 -07:00
Kelly Brazil
2341e456a0 use ParseError instead of generic Exception 2020-07-23 11:31:35 -07:00
Kelly Brazil
72d80e95bb remove unused regex patterns 2020-07-23 10:52:40 -07:00
Kelly Brazil
f5ec82440c simplify regex patterns 2020-07-23 10:19:56 -07:00
Kelly Brazil
c8e526ead3 fixes for bsd-style ipv6 output 2020-07-22 17:23:24 -07:00
Kelly Brazil
066adfb764 handle warning lines in the traceroute output 2020-07-22 15:02:02 -07:00
Kelly Brazil
5b444d4717 add traceroute parser 2020-07-22 12:19:27 -07:00
Kelly Brazil
69c95adc8d add osx ipv6 ping dup test 2020-07-22 09:06:11 -07:00
Kelly Brazil
2b0e0d8f5c add ipv6 dup test 2020-07-21 17:34:30 -07:00
Kelly Brazil
778d1bacbf update docs to add "duplicates" fields 2020-07-21 15:16:39 -07:00
Kelly Brazil
7e1b041016 add duplicate replies tests 2020-07-21 15:12:43 -07:00
Kelly Brazil
313b9b329c update fixtures for added 'duplicate' fields 2020-07-21 15:05:54 -07:00
Kelly Brazil
6830062256 add support for duplicate replies 2020-07-21 14:47:25 -07:00
Kelly Brazil
323072c982 add source_ip to schema doc 2020-07-21 09:02:44 -07:00
Kelly Brazil
8719d96bdd change description 2020-07-20 16:54:43 -07:00
Kelly Brazil
dd5d318ab5 version bump and add ping command 2020-07-20 16:25:20 -07:00
Kelly Brazil
d6dc7f5e65 add osx ping tests 2020-07-20 16:11:18 -07:00
Kelly Brazil
c203664eb5 freebsd ping tests 2020-07-20 15:46:27 -07:00
Kelly Brazil
19ecf1fa19 add Fedora32 tests 2020-07-20 14:35:41 -07:00
Kelly Brazil
b8deb0426c add ubuntu ping tests 2020-07-20 13:51:39 -07:00
Kelly Brazil
3b8371f020 add centos ping tests 2020-07-20 12:49:05 -07:00
Kelly Brazil
20bb1cdf39 add TypeError to except for None values 2020-07-20 11:53:06 -07:00
Kelly Brazil
301daa48d0 update documentation 2020-07-19 15:30:54 -07:00
Kelly Brazil
8421ec8803 remove cygwin compatibility 2020-07-19 15:19:47 -07:00
Kelly Brazil
74211eb012 add examples 2020-07-19 15:16:04 -07:00
Kelly Brazil
60bd42f298 add process() logic 2020-07-19 15:13:52 -07:00
Kelly Brazil
14bdd74526 add ping test fixtures 2020-07-19 14:46:02 -07:00
Kelly Brazil
fb0f3eda04 add ping commands 2020-07-19 14:45:50 -07:00
Kelly Brazil
91ee6e6701 add osx ping test fixtures 2020-07-19 14:18:56 -07:00
Kelly Brazil
51f4e6927c add support for pattern in osx/bsd 2020-07-19 14:18:40 -07:00
Kelly Brazil
94988d8667 add fedora ping fixtures 2020-07-19 13:50:40 -07:00
Kelly Brazil
fe36f5a98c add fixtures for ping 2020-07-19 12:56:53 -07:00
Kelly Brazil
f9eb18b927 change 'request_timeout' field to 'type', fix compatibility, other formatting fixes 2020-07-19 12:56:34 -07:00
Kelly Brazil
cc60f36748 add ping parser 2020-07-18 12:35:46 -07:00
Kelly Brazil
604ade791f add ping parser 2020-07-17 15:57:07 -07:00
Kelly Brazil
690ac52a91 add man page 2020-07-13 07:18:48 -07:00
Kelly Brazil
34ed772775 version bump 2020-07-11 09:46:47 -07:00
Kelly Brazil
d5ab95571f fix tests when using older versions of pygments 2020-07-11 09:44:08 -07:00
Kelly Brazil
ffb3a0ee5f Merge pull request #73 from kellyjonbrazil/dev
Dev v1.12.0
2020-07-10 16:34:56 -07:00
Kelly Brazil
94b12b57aa spelling 2020-07-10 16:30:08 -07:00
Kelly Brazil
6d149e8457 version bump 2020-07-10 16:25:03 -07:00
Kelly Brazil
1ad89c90d8 add pacman 2020-07-10 15:58:02 -07:00
Kelly Brazil
fb71c7b020 function name spelling 2020-07-10 15:49:35 -07:00
Kelly Brazil
28ed17ad3b add parser_count test to test_cli_about_jc 2020-07-10 15:45:21 -07:00
Kelly Brazil
0c2a4e2bf7 add cli tests 2020-07-10 15:35:05 -07:00
Kelly Brazil
62bec30de2 add json_out tests 2020-07-10 14:44:50 -07:00
Kelly Brazil
3fced77e4e add set_env_colors tests 2020-07-10 12:23:48 -07:00
Kelly Brazil
a09d1d8b76 move environment variable assignment to main() to simplify tests 2020-07-10 12:23:25 -07:00
Kelly Brazil
8f4243fbd8 formatting 2020-07-10 10:54:34 -07:00
Kelly Brazil
47aaf20549 add sysctl command parser 2020-07-10 10:50:51 -07:00
Kelly Brazil
0c5289ea50 add sysctl tests 2020-07-10 10:47:23 -07:00
Kelly Brazil
3e53323514 don't filter out empty lines 2020-07-10 09:58:56 -07:00
Kelly Brazil
a5ee9861b9 update fixtures 2020-07-10 09:28:32 -07:00
Kelly Brazil
feb8ca7654 spelling 2020-07-10 09:28:20 -07:00
Kelly Brazil
a7abe4473b spelling 2020-07-10 09:03:04 -07:00
Kelly Brazil
780b9b61de specify IndexError exception in try/except block 2020-07-10 08:30:31 -07:00
Kelly Brazil
19ace36ffa add fixtures 2020-07-10 08:21:30 -07:00
Kelly Brazil
5fff8afc9f add fixes for freebsd where values can be on separate lines under the key 2020-07-10 08:21:15 -07:00
Kelly Brazil
4ad230c927 doc update and add test fixtures 2020-07-09 16:35:36 -07:00
Kelly Brazil
dd98eb1ec8 append duplicate key values to original key instead of adding unique keys 2020-07-09 16:25:41 -07:00
Kelly Brazil
c6baf42e72 doc updates 2020-07-09 16:18:33 -07:00
Kelly Brazil
e2bac97d56 fix for multiple identical keys in sysctl output 2020-07-09 14:51:15 -07:00
Kelly Brazil
d112ee94d0 use try/except and add support for floats in process() 2020-07-09 14:26:35 -07:00
Kelly Brazil
27b21b2faf formatting and docstring updates 2020-07-09 11:11:29 -07:00
Kelly Brazil
8c96d5cd20 reduce pygments version requirement 2020-07-09 10:59:36 -07:00
Kelly Brazil
c29ed3fd69 formatting of quotation marks and docstrings 2020-07-09 10:54:49 -07:00
Kelly Brazil
cedf603f12 minor formatting 2020-07-09 09:59:00 -07:00
Kelly Brazil
279161c36f Merge pull request #72 from duelafn/pygments-2.3
Support older pygments
2020-07-09 09:48:58 -07:00
Dean Serenevy
ce0b43d919 Remove dependency on 3rd party packaging library 2020-07-09 12:44:41 -04:00
Dean Serenevy
ddafa5bf06 Support older pygments 2020-07-09 11:39:34 -04:00
Kelly Brazil
bc7116c31b fix JC_COLORS env bug and simplify set_env_colors() 2020-07-09 08:30:10 -07:00
Kelly Brazil
53b7092721 remove side-effects from functions and print in main() 2020-07-08 16:40:28 -07:00
Kelly Brazil
beb9174b1b add sysctl parser 2020-07-08 15:42:06 -07:00
Kelly Brazil
aea41ed341 move verbose_debug enable earlier in code to catch more issues. add sysctl and version bump 2020-07-08 15:41:46 -07:00
Kelly Brazil
d789494cb1 change type check to use isinstance 2020-07-08 05:59:19 -07:00
Kelly Brazil
608e7b4cff add license info 2020-07-06 10:52:12 -07:00
Kelly Brazil
4ee199c02a use tracebackplus instead of cgitb since cgitb is depricated 2020-07-06 10:41:01 -07:00
Kelly Brazil
fbf47d4085 add arch linux 2020-07-01 13:28:58 -07:00
Kelly Brazil
5a238e4b42 remove updates-testing from fedora command 2020-07-01 09:11:32 -07:00
Kelly Brazil
f852b8246a wrap warning message 2020-06-30 11:50:37 -07:00
Kelly Brazil
88140d929a wrap error message in code 2020-06-30 11:37:33 -07:00
Kelly Brazil
45f7268240 add -dd to error message 2020-06-30 11:34:08 -07:00
Kelly Brazil
3a3c8e4d4a move verbose_debug under debug check 2020-06-30 11:31:08 -07:00
Kelly Brazil
c1ac183a04 simplify debug option 2020-06-30 11:26:09 -07:00
Kelly Brazil
18bb779ee5 formatting: double quotes to single quotes 2020-06-30 09:39:05 -07:00
Kelly Brazil
8b6612fe79 move JC_COLORS parsing error message 2020-06-30 07:56:34 -07:00
Kelly Brazil
fde0bc8534 improve package install info 2020-06-27 18:53:19 -07:00
Kelly Brazil
e661a78939 Merge pull request #71 from wigust/guix
add guix package info
2020-06-27 18:43:02 -07:00
Oleg Pykhalov
847e346602 add guix package info 2020-06-27 13:01:56 +03:00
Kelly Brazil
b969751688 add other references 2020-06-26 09:53:57 -07:00
Kelly Brazil
ad6f2ba03a formatting 2020-06-25 21:16:52 -07:00
Kelly Brazil
63c6a5edc0 formatting 2020-06-25 21:12:30 -07:00
Kelly Brazil
9f4cf9dd5e formatting 2020-06-25 21:11:21 -07:00
Kelly Brazil
51331b6dc0 formatting 2020-06-25 13:01:10 -07:00
Kelly Brazil
efb6761033 formatting 2020-06-25 12:59:56 -07:00
Kelly Brazil
6a4f737a0f update json syntax highlighting 2020-06-25 12:56:06 -07:00
Kelly Brazil
be6864b778 add syntax highlighting tags 2020-06-25 12:28:23 -07:00
Kelly Brazil
de3b91a36c add -dd option 2020-06-25 07:38:39 -07:00
Kelly Brazil
ef5482c3b5 add verbose debug option 2020-06-25 07:29:28 -07:00
Kelly Brazil
d20b795137 Merge pull request #70 from kellyjonbrazil/dev
Dev v1.11.7
2020-06-22 11:28:23 -07:00
Kelly Brazil
8a134065df update fixtures for last chain fix 2020-06-22 11:23:37 -07:00
Kelly Brazil
22aee1bfa4 version bump 2020-06-22 11:23:15 -07:00
Kelly Brazil
b282820fd6 fix to include the final chain in output 2020-06-22 11:09:09 -07:00
Kelly Brazil
3ee098306d version bump 2020-06-22 10:48:51 -07:00
Kelly Brazil
09e8f379a6 iptables code optimizations 2020-06-22 10:47:34 -07:00
Kelly Brazil
69018cdb3a fix date 2020-06-14 17:39:14 -07:00
Kelly Brazil
d0d7254c6a add docstring 2020-06-14 17:23:10 -07:00
Kelly Brazil
cc0f0971d7 Improve and standardize empty data check for all parsers 2020-06-14 17:17:40 -07:00
Kelly Brazil
2af61730f0 Merge pull request #68 from kellyjonbrazil/dev
Dev v1.11.5
2020-06-12 12:34:34 -07:00
Kelly Brazil
83f41b83dc version bump 2020-06-12 12:30:19 -07:00
Kelly Brazil
1fb84fce88 fix for no data 2020-06-12 12:25:07 -07:00
Kelly Brazil
a8837e1244 remove --upgrade from pip install 2020-06-12 07:57:40 -07:00
Kelly Brazil
04d2eec558 fix for no data 2020-06-11 17:59:06 -07:00
Kelly Brazil
1b57ec92f0 fix for no data 2020-06-11 17:52:03 -07:00
Kelly Brazil
4d88595404 enhance empty data check 2020-06-11 17:16:11 -07:00
Kelly Brazil
52b1272a3a enhance empty data check 2020-06-11 17:13:45 -07:00
Kelly Brazil
d2ccad6a83 fix for no data 2020-06-11 17:09:51 -07:00
Kelly Brazil
cad6dde4ac fix for no data 2020-06-10 17:54:06 -07:00
Kelly Brazil
06811c3539 add test for no data 2020-06-10 17:41:54 -07:00
Kelly Brazil
0cb23c2b21 add fix for no data 2020-06-10 17:40:18 -07:00
Kelly Brazil
ac4688dca2 add test for no data 2020-06-10 17:35:40 -07:00
Kelly Brazil
326c3b4670 add test for no data 2020-06-10 17:34:22 -07:00
Kelly Brazil
9b29d0c268 add test for no data 2020-06-10 17:32:39 -07:00
Kelly Brazil
e0013c3871 add test for no data 2020-06-10 17:31:14 -07:00
Kelly Brazil
a75744075b add no data test 2020-06-10 17:29:41 -07:00
Kelly Brazil
525aec1a02 fix for no data 2020-06-10 17:27:46 -07:00
Kelly Brazil
0bf9a7a072 add test for no data 2020-06-10 17:22:59 -07:00
Kelly Brazil
d8f2f4c95b fix for no data 2020-06-10 17:20:09 -07:00
Kelly Brazil
35d733b44f fix for no data 2020-06-10 17:10:53 -07:00
Kelly Brazil
9179b4175c add nodata tests 2020-06-10 16:40:11 -07:00
Kelly Brazil
bb07d78c78 add nodata fix 2020-06-10 16:39:49 -07:00
Kelly Brazil
07b179cd7f Merge pull request #67 from kellyjonbrazil/Dev
Dev v1.11.4
2020-06-10 06:07:42 -07:00
Kelly Brazil
054422d837 add test for empty directory 2020-06-10 06:04:50 -07:00
Kelly Brazil
3e052d1810 version bump 2020-06-10 05:53:20 -07:00
Kelly Brazil
c8e72805cf fix error on empty directory 2020-06-10 05:51:12 -07:00
Kelly Brazil
12a80e7db0 add fedora package info 2020-06-09 15:13:53 -07:00
2226 changed files with 611357 additions and 11074 deletions

View File

@@ -13,13 +13,19 @@ jobs:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [macos-latest, ubuntu-latest, windows-latest]
python-version: [3.6, 3.7, 3.8]
os: [macos-latest, ubuntu-20.04, windows-latest]
python-version: ["3.6", "3.7", "3.8", "3.9", "3.10", "3.11", "3.12"]
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v3
- name: "Set up timezone to America/Los_Angeles"
uses: szenius/set-timezone@v1.2
with:
timezoneLinux: "America/Los_Angeles"
timezoneMacos: "America/Los_Angeles"
timezoneWindows: "Pacific Standard Time"
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v1
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}
- name: Install dependencies

3
.gitignore vendored
View File

@@ -4,3 +4,6 @@ dist/
build/
*.egg-info/
.github/
.vscode/
_config.yml
.venv

866
CHANGELOG Normal file
View File

@@ -0,0 +1,866 @@
jc changelog
20240323 v1.25.2
- Add `apt-cache-show` command parser
- Add `apt-get-sqq` command parser
- Add `ethtool` command parser
- Add `needrestart` command parser
- Enhance `df` parser to add human readable output support. Note: the `size`
field has been changed to an integer and all size values have been normalized
to bytes.
- Enhance `free` parser to add human readable output support. All size values
have been normalizd to bytes.
- Enhance `iptables` parser to handle -x output
- Enhance `/proc/pid/stat` parser to support "Idle" state
- Enhance `rpm_qi` and `pkg_index_deb` parsers to split list fields into arrays
- Fix `iwconfig` parser to handle more special characters in the SSID name
- Fix `xrandr` parser to ignore extra horizontal and vertical stats lines
- Add aarch64 binaries to Releases for macOS and Linux
- Documentation and doc build updates
20240212 v1.25.1
- Fix for crash when optional libraries are not installed (e.g. xmltodict)
- Fix for `ini` parser crashing with some keys with no values
- Fix `xrandr` parser to extract more EDID data
- Enhance `uptime` parser to support output with no user information
- Enhance `--quiet` CLI option to cover more warning messages
- Add tests for missing optional libraries
- Documentation updates
20240204 v1.25.0
- Add `--slurp` functionality to wrap output from multiple lines into a single array.
Note, this only works with single-line input parsers. (e.g. `date`, `ip-address`, `url`, etc.)
Streaming parsers are not supported. Use `jc -hhh` to find parsers compatible with the slurp option.
- Enhance `/proc` file magic syntax to allow slurping when multiple files are selected
and to include the `_file` metadata field in the data
- Enhance `--meta-out` functionality to include a list of the input data when using `--slurp`
or `/proc` file magic syntax. For slurpable parsers, this is a list of string inputs in order.
For `/proc` file magic syntax, this is a list of `/proc` filenames in order. This can help with
identifying which input matches to which output when using `--slurp` or when converting multiple
files via `/proc` file magic syntax.
- Add `curl-head` command parser for `curl --head` or `curl -I` with verbose support
- Add `efibootmgr` command parser
- Add `http-headers` parser for plain HTTP header output
- Add `kv-dup` parser for Key/Value files with duplicate keys
- Add `path` string parser to parse posix path
- Add `path-list` string parser to parse path list strings found in env variables
- Add source link to online parser documentation
- Add snap package build scripts
- Add `remove_quotes` function to `utils.py`
- Add `normalize_key` function to `utils.py`
- Add `line_slice` function to `utils.py`
- Add `get_parser` function to `lib.py`
- Enhance `nsd-control` parser to support more zone information
- Enhance `ping` and `ping-s` parsers to support the `-I` command option
- Enhance `proc-net-tcp` parser to add opposite endian support for architectures
like the s390x
- Enhance `url` parser to add `parent`, `filename`, `stem`, and `extension` fields
- Fix `ini` and `ini-dup` parsers to consistently handle null values as empty strings
- Fix line slicer to not skip blank lines
- Refactor parser aliases for `kv`, `pkg_index_deb`, `lsb_release`, and `os-release`
- Update copyright date
20231216 v1.24.0
- Add `debconf-show` command parser
- Add `iftop` command parser
- Add `pkg-index-apk` parser for Alpine Linux Package Index files
- Add `pkg-index-deb` parser for Debian/Ubuntu Package Index files
- Add `proc-cmdline` parser for `/proc/cmdline` file
- Add `swapon` command parser
- Add `tune2fs` command parser
- Remove `iso-datetime` parser deprecated since v1.22.1. (use `datetime-iso` instead)
- Update timezone change in Github Actions for node v16 requirement
- Add Python 3.12 tests to Github Actions
- Refactor `acpi` command parser for code cleanup
- Refactor vendored libraries to remove Python 2 support
- Fix `iptables` parser for cases where the `target` field is blank in a rule
- Fix `vmstat` parsers for some cases where wide output is used
- Fix `mount` parser for cases with spaces in the mount point name
- Fix `xrandr` parser for infinite loop issues
20231023 v1.23.6
- Fix XML parser for xmltodict library versions < 0.13.0
- Fix `who` command parser for cases when the from field contains spaces
20231021 v1.23.5
- Add `host` command parser
- Add `nsd-control` command parser
- Add `lsb_release` command parser
- Add `/etc/os-release` file parser
- Enhance `env` command parser to support multi-line values
- Enhance `ping` and `ping-s` parsers to add error and corrupted support
- Enhance `xml` parser to include comments in the JSON output
- Fix `pidstat` command parser when using `-T ALL`
- Fix `x509-cert` parser to allow negative serial numbers
- Fix `x509-cert` parser for cases when bitstrings are larger than standard
- Fix `xrandr` command parser for associated device issues
- Fix error when pygments library is not installed
20230730 v1.23.4
- Add `/etc/resolve.conf` file parser
- Add `/proc/net/tcp` and `/proc/net/tcp6` file parser
- Add `find` command parser
- Add `ip route` command parser
- Fix `certbot` command parser to be more robust with different line endings
20230621 v1.23.3
- Add `lsattr` command parser
- Add `srt` file parser
- Add `veracrypt` command parser
- Add X509 Certificate Request file parser
- Enhance X509 Certificate parser to allow non-compliant email addresses with a warning
- Enhance `dig` command parser to support the `+nsid` option
- Enhance `last` and `lastb` command parser to support the `-x` option
- Enhance `route` command parser to add Windows support
- Enhnace `netstat` command parser to add Windows support
- Enhance `ss` command parser to support extended options
- Enhance the compatibility warning message
- Fix `bluetoothctl` command parser for some mouse devices
- Fix `ping` command parsers for output with missing hostname
- Fix `stat` command parser for older versions that may not contain all fields
- Fix deprecated option in `setup.cfg`
20230429 v1.23.2
- Add `bluetoothctl` command parser
- Add `certbot` command parser for `certificates` and `show_account` options
- Fix `acpi` command parser for "Not charging" battery status lines
- Fix `iwconfig` command parser for SSIDs with dashes in the name
- Fix `crontab` command parsers for incorrect variable parsing in some cases
- Fix `git-log` and `git-log-s` command parsers for incorrect insertion/deletion parsing
- Fix `ufw-appinfo` command parser for parsing errors on multiline description fields
- Fix pytest warnings
20230323 v1.23.1
- Fix `zpool-status` command parser for lines that start with tab
- Fix `timedatectl` command parser when RTC set to local
- Fix to ensure `py.typed` file is included in the package wheel
- Fix `lsusb` command parser to support CDC MBIM and CDC MBIM Extended fields
- Add support for the `timesync-status` for the `timedatectl` command parser
- Fix to ignore non-parser-plugins in the parser plugin directory
20230227 v1.23.0
- Add input slicing as a `jc` command-line option
- Add `ssh` configuration file parser
- Add `ver` Version string parser
- Add `zpool iostat` command parser
- Add `zpool status` command parser
- Fix `acpi` command parser for "will never fully discharge" battery state
- Fix `crontab` and `crontab-u` command and file parsers for cases where only
shortcut schedule items exist
- Fix `ifconfig` command parser for older-style linux output
- Fix `xrandr` command parser for proper `is_current` output
- Fix `xrandr` command parser for infinite loop with some device configurations
- Add `reflection` key to `xrandr` parser schema
- Add display model info from EDID to `xrandr` parser
- Add `MPX-specific VMA` support for VM Flags in `/proc/<pid>/smaps` parser
20230111 v1.22.5
- Add TOML file parser
- Add INI with duplicate key support file parser
- Add AIX support for the `arp` command parser
- Add AIX support for the `mount` command parser
- Fix `lsusb` command parser when extra hub port status information is output
- Refactor `lsusb` command parser for more code reuse
- Fix INI file parser to include top-level values with no section header
- Fix INI file parser to not specially handle the [DEFAULT] section
- Fix INI file and Key/Value parsers to only remove one quotation mark from the
beginning and end of values.
- Update copyright dates
20221230 v1.22.4
- Add `iwconfig` command parser
- Add NeXTSTEP format support to the PLIST file parser
- Fix `proc` parser magic signature detection for `/proc/pid/stat` hacks
- Fix `x509-cert` parser for string serial numbers
- Add category tags to parser metadata: generic, standard, file, string, binary, command
- Add "list parsers by category" view to help
- Fix python 3.6-related issues
- Add python 3.6 to automated tests
20221216 v1.22.3
- Add Common Log Format and Combined Log Format file parser (standard and streaming)
- Add PostgreSQL password file parser
- Add openvpn-status.log file parser
- Add `cbt` command parser (Google Big Table)
- Enhance `ifconfig` parser with interface lane information on BSD
- Enhance `ifconfig` parser with additional IPv6 `scope_id` info for BSD
- Fix `ifconfig` parser to capture some IPv6 addresses missed on BSD
- Fix `git-log` and `git-log-s` parsers for failure on empty author name
- Update `os-prober` parser with split EFI partition fields
- Add ISO string attribute (`.iso`) to `jc.utils.timestamp()`
- Fix several documentation typos
20221107 v1.22.2
- add `sshd_conf` parser for `sshd` configuration files and `sshd -T` output
- add `findmnt` command parser
- add `git ls-remote` command parser
- add `os-prober` command parser
- add SemVer string parser
- enhance the `ifconfig` parser so it can output multiple IPv4 and IPv6 addresses
- enhance the `ifconfig` parser so it can output additional fields common on BSD
- enhance `xml` parser with optional `_` prefix for attributes instead of
`@` by using the `--raw` option. This can make it easier to filter the
JSON output in some tools.
- fix the `xml` parser to output a normal Dictionary instead of OrderdDict.
This cleans up YAML output. (No `!!omap` comments)
- fix `csv` and `csv-s` parsers for UTF-8 encoded CSV files with leading BOM bytes
- fix exit code to be non-zero on interrupt
- allow parser module objects to be used as arguments to `jc.get_help()` and `jc.parser_info()`
- catch unexpected exceptions in the CLI
- add error message on interrupt to STDERR
- add python 3.11 tests to github actions
20221024 v1.22.1
- add `udevadm` command parser
- add `lspci` command parser
- add `pci.ids` file parser
- fix `proc-pid-stat` parser for command names with spaces and newlines
- enhance `ip-address` parser to add `ip_split` field
- rename `iso-datetime` parser to `datetime-iso`. A deprecation warning will
display until `iso-datetime` is removed in a future version.
- refactor cli module
- optimize performance of calculated timestamps
- add more type annotations
- add support for deprecating parsers
- move jc-web demo site from heroku to render.com
20220926 v1.22.0
- Add /proc file parsers for linux. Support for the following files:
`/proc/buddyinfo`
`/proc/consoles`
`/proc/cpuinfo`
`/proc/crypto`
`/proc/devices`
`/proc/diskstats`
`/proc/filesystems`
`/proc/interrupts`
`/proc/iomem`
`/proc/ioports`
`/proc/loadavg`
`/proc/locks`
`/proc/meminfo`
`/proc/modules`
`/proc/mtrr`
`/proc/pagetypeinfo`
`/proc/partitions`
`/proc/slabinfo`
`/proc/softirqs`
`/proc/stat`
`/proc/swaps`
`/proc/uptime`
`/proc/version`
`/proc/vmallocinfo`
`/proc/vmstat`
`/proc/zoneinfo`
`/proc/driver/rtc`
`/proc/net/arp`
`/proc/net/dev`
`/proc/net/dev_mcast`
`/proc/net/if_inet6`
`/proc/net/igmp`
`/proc/net/igmp6`
`/proc/net/ipv6_route`
`/proc/net/netlink`
`/proc/net/netstat`
`/proc/net/packet`
`/proc/net/protocols`
`/proc/net/route`
`/proc/net/unix`
`/proc/<pid>/fdinfo/<fd>`
`/proc/<pid>/io`
`/proc/<pid>/maps`
`/proc/<pid>/mountinfo`
`/proc/<pid>/numa_maps`
`/proc/<pid>/smaps`
`/proc/<pid>/stat`
`/proc/<pid>/statm`
`/proc/<pid>/status`
- Magic syntax support for `/proc` files
- Enhance bash and zsh autocompletions for `/proc` files
- Enhance `free` parser to support `-w` option integer conversions
- Fix `ini` and `kv` parsers so they don't change keynames to lower case
NOTE: This can be a breaking change in your scripts
- Fix `id` command parser to allow usernames and groupnames with spaces
- Enhance metadata output to output metadata even when results are empty
- Optimize tests
- Optimize documentation build script
20220829 v1.21.2
- Fix IP Address string parser for older python versions that don't cleanly
accept decimal input format - IPv6 fix (e.g. python 3.6)
20220828 v1.21.1
- Fix IP Address string parser for older python versions that don't cleanly
accept decimal input format - IPv4 fix (e.g. python 3.6)
- Fix `arp -a` parser for cases where incomplete hardware addresses are found
in the arp table on linux
20220821 v1.21.0
- Add IP Address string parser
- Add Syslog standard and streaming string parsers (RFC 3164 and RFC 5424)
- Add CEF standard and streaming string parser
- Add PLIST file parser (XML and binary support)
- Add `-n` support to the `traceroute` parser
- Add `mdadm` command parser tested on linux
- Add `--meta-out` or `-M` option to add metadata to the JSON output, including
a UTC timestamp, parser name, magic command, and magic command exit code
- Fix `lsusb` command parser for output containing a `Device Qualifier` and
`Binary Object Store Descriptor` sections
- Change `LANG=C` to `LC_ALL=C` in locale instructions
- Add `__main__.py` to package allowing `python -m jc` usage
- Add an enclosing top-level folder inside the windows.zip package
20220723 v1.20.4
- Fix URL string parser path list for URLs ending in a forward slash
20220723 v1.20.3
- Add URL string parser
- Add Email Address string parser
- Add JWT string parser
- Add ISO 8601 Datetime string parser
- Add UNIX Epoch Timestamp string parser
- Add M3U/M3U8 file parser
- Add pager functionality to help (parser documentation only)
- Minor parser performance optimizations
20220705 v1.20.2
- Add `gpg --with-colons` parser tested on linux
- Add DER and PEM encoded X.509 Certificate parser
- Add Bash and Zsh completion scripts to DEB and RPM packages
20220615 v1.20.1
- Add `postconf -M` parser tested on linux
- Update `asciitable` and `asciitable-m` parsers to preserve case in key
names when using the `-r` or `raw=True` options.
- Add long options (e.g. `--help`, `--about`, `--pretty`, etc.)
- Add shell completions for Bash and Zsh
- Fix `id` parser for cases where the user or group name is not present
20220531 v1.20.0
- Add YAML output option with `-y`
- Add `top -b` standard and streaming parsers tested on linux
- Add `plugin_parser_count`, `standard_parser_count`, and `streaming_parser_count`
keys to `jc -a` output
- Add `is_compatible` function to the `utils` module
- Fix `pip-show` parser for packages with a multi-line license field
- Fix ASCII Table parser for cases where centered headers cause mis-aligned fields
20220513 v1.19.0
- Add `chage --list` command parser tested on linux
- Add `git log` command streaming parser
- Fix `git log` standard parser for corner-cases where hash values are in messages
- Fix `df` command parser for rare instances when a newline is found at the end
- Allow jc to pip install on unsupported python version 3.6
- Fix `asciitable-m` parser to skip some rows that contain column separator
characters in cell data. A warning message will be printed to STDERR
unless `-q` or `quiet=True` is used.
20220427 v1.18.8
- Fix `update-alternatives --query` parser for cases where `slaves` are not present
- Fix UnicodeEncodeError on some systems where LANG=C is set and unicode
characters are in the output
- Update `history` parser: do not drop non-ASCII characters if the system
is configured for UTF-8 encoding
- Enhance "magic syntax" to always use UTF-8 encoding
20220425 v1.18.7
- Add `git log` command parser
- Add `update-alternatives --query` parser
- Add `update-alternatives --get-selections` parser
- Fix key/value and ini parsers to allow duplicate keys
- Fix yaml file parser for files including timestamp objects
- Update `xrandr` parser: add a 'rotation' field
- Fix failing tests by moving template files
- Add python interpreter version and path to -v and -a output
20220325 v1.18.6
- Add `pidstat` command parser tested on linux
- Add `pidstat` command streaming parser tested on linux
- Add `mpstat` command parser tested on linux
- Add `mpstat` command streaming parser tested on linux
- Add single-line ASCII and Unicode table parser
- Add multi-line ASCII and Unicode table parser
- Add documentation option to `parser_info()` and `all_parser_info()`
20220305 v1.18.5
- Fix date parser to ensure AM/PM period string is always uppercase
20220304 v1.18.4
- Add nmcli command parser tested on linux
- Enhance parse error messages at the cli
- Add standard and streaming parser list functions to the public API
- Enhance python developer documentation formatting
20220214 v1.18.3
- Add rsync command and log file parser tested on linux and macOS
- Add rsync command and log file streaming parser tested on linux and macOS
- Add xrandr command parser tested on linux
- Enhance timestamp performance with caching and format hints
- Refactor ignore_exceptions functionality in streaming parsers
- Fix man page in packages
20220127 v1.18.2
- Fix for plugin parsers with underscores in the name
- Add type hints to public API functions
- Add plugin attribute to plugin parser metadata
- Add C locale hint to parsing error messages
- Refactor more cli code into lib
20220121 v1.18.1
- Minor fix for MacOS binary
20220121 v1.18.0
- Add high-level parse API for built-in and plugin parsers
- Add python module developer documentation
- Enhance magic syntax exception messages
- Enhance documentation formatting
20220106 v1.17.7
- Add stat command streaming parser tested on linux and macOS
20220103 v1.17.6
- Add jar-manifest file parser (for MANIFEST.MF files)
- Fix CSV parsers for some files that include doublequotes
20211221 v1.17.5
- Add zipinfo parser tested on linux and macOS
20211207 v1.17.4
- Add support for the NO_COLOR environment variable to set mono (http://no-color.org/)
- Add -C option to force color output even when using pipes (overrides -m and NO_COLOR)
20211202 v1.17.3
- Update parsers to exit with error if non-string input is detected (raise TypeError)
- Update streaming parsers to exit with error if non-iterable input is detected (raise TypeError)
- Simplify quiet-checking in parsers
- Add iostat parser tested on linux
- Add iostat streaming parser tested on linux
20211117 v1.17.2
- Fix ping parser to add Alpine linux support
- Fix netstat parser for older versions of netstat on linux
- Fix df parser for cases where the filesystem field overflows the column length
20211030 v1.17.1
- Fix file parser for gzip files
- Fix uname parser for cases where the 'processor' and/or 'hardware_platform' fields are missing on linux
- Fix uname parser on FreeBSD
- Add lsusb parser tested on linux
- Add CSV file streaming parser
- Add testing for Python 3.10.0
20210923 v1.17.0
- Note to Package Maintainers: please see note at 20210720 v1.16.0
- Add wrapping of warning and error messages
- Add vmstat parser tested on linux
- Add support for streaming parsers
- Add ls command streaming parser tested on linux, macOS, and freeBSD
- Add ping command streaming parser tested on linux, macOS, and freeBSD
- Add vmstat command streaming parser tested on linux
- Add -u option to allow unbuffered output
20210830 v1.16.2
- Note to Package Maintainers: please see note at 20210720 v1.16.0
- Update sfdisk parser to support the -F option and newer versions of sfdisk
20210813 v1.16.1
- Note to Package Maintainers: please see note at 20210720 v1.16.0
- Fix issue with process substitution with the magic syntax
- Fix issue with globs not including filenames with spaces with magic syntax
- Fix stat parser to properly handle filenames with spaces on macOS/BSD
20210720 v1.16.0
- Note to Package Maintainers:
TL;DR: `/man/jc.1.gz` and `/jc/man/jc.1.gz` are deprecated and only `/man/jc.1` should be used.
The Man page in the PyPi source packages will be moving from `/jc/man/jc.1.gz` to `/man/jc.1`
in version 1.17.0. For now the Man pages will be available in both locations, but be aware that
the Man page at `/jc/man/jc.1.gz` is now considered deprecated.
Also, starting in v1.17.0, the Man page will no longer be compressed in the source package,
therefore `/man/jc.1.gz` should also be considered deprecated and will no longer be available
after v1.17.0. Please use `/man/jc.1` and compress downstream if you would like.
- Include CHANGELOG in source distribution
- Fix Man page location in source packages
- Add sfdisk command parser tested on linux
- Update unit test files to change the timezone when needed (POSIX only)
- Binaries and DEB/RPM/MSI packages now include Python 3.9.5 interpreter
20210628 v1.15.6
- Fix issue to only load local plugin parsers that have filenames that end in .py
20210520 v1.15.5
- Fix issue where help and about information would not display if a 3rd party parser library was missing. (e.g. xmltodict)
- Add more error message detail when encountering ParseError and LibraryNotFound exceptions
20210517 v1.15.4
- Update ping parser to support error responses in OSX and BSD
- Update ping parser to be more resilient against parsing errors for unknown error types
- Update dig parser to support `+noall +answer` use case
- Update dig parser compatibility to all platforms
- Fix colors in Windows terminals (cmd.exe and PowerShell)
- Fix epoch calculations when UTC is referenced as "Coordinated Universal Time"
- Add Windows time format for systeminfo output
- Add exceptions module to standardize parser exceptions
- JC no longer swallows exit codes when using the "magic" syntax. See the Exit Codes section of the README and man page for details
20210426 v1.15.3
- Add ufw status command parser tested on linux
- Add ufw-appinfo command parser tested on linux
- Fix deb package name to conform to standard
- Add Caveats section to readme and manpage
20210418 v1.15.2
- Add systeminfo parser tested on Windows
- Update dig parser to fix an issue with IPv6 addresses in the server field
- Update dig parser to fix an issue when axfr entries contain a semicolon
- Update dig parser to add support for Additional Section and Opt Pseudosection
- Update dig parser to add query_size field
- Use dig parser as the main example in readme, documentation, and man page
- Standardize int, float, and boolean conversion rules with functions in jc.utils
20210413 v1.15.1
- New feature to show parser documentation interactively with -h --parser_name
for example: $ jc -h --arp
- Add man page to pypi package for easier packaging in homebrew
- Update rpm-qi parser to add two calculated timestamp fields: install_date_epoch and install_date_epoch_utc
- Clean up documentation and autogenerate the Parser Information section from metadata
20210407 v1.15.0
- Add acpi command parser tested on linux
- Add upower command parser tested on linux
- Add /usr/bin/time command parser tested on linux and macOS
- Add dpkg -l command parser tested on linux
- Add rpm -qi command parser tested on linux
- Add finger command parser tested on linux and macOS
- Add dir command parser tested on Windows 10
- Update date parser: complete rewrite (v2.0) providing many enhancements:
- Make weekday numbering ISO 8601 compliant
- Add a calculated naive timestamp field
- Add a calculated UTC timestamp field (only if date output is in UTC)
- Add several fields, including: hour_24, utc_offset, day_of_year, week_of_year, iso, and timezone_aware
- Update uptime parser to add uptime_days, uptime_hours, uptime_minutes, uptime_total_seconds, time_hour,
time_minute, and time_second fields
- Update last parser to use new timestamp function
- Update stat parser to add access_time_epoch, access_time_epoch_utc, modify_time_epoch, modify_time_epoch_utc,
change_time_epoch, change_time_epoch_utc, birth_time_epoch, birth_time_epoch_utc fields
- Update timedatectl parser to add epoch_utc field
- Update who parser to add epoch field
- Update dig parser to add when_epoch and when_epoch_utc fields
- Update ls parser to add epoch and epoch_utc fields
- Add -h option to display the help text. Piping errors no longer show the help text.
- Add -v option to display version information.
- Add contributing information to project root
- Make all external python library dependencies optional: pygments, ruamel.yaml, xmltodict
- JSON output now supports unencoded unicode characters
- JSON output is now more compact unless the -p (pretty) option is used
- Developer scripts added and enhanced to automate documentation and man page creation
- Enhanced man page
20210305 v1.14.4
- Packaging fix only for binaries and RPMs hosted on https://github.com/kellyjonbrazil/jc-packaging.
Packages from PyPi and OS repositories are not affected. This fixes an issue that kept the YAML
parser from initializing.
20210210 v1.14.3
- Add hciconfig parser tested on linux
- Update dig parser to simplify answer data logic
20210205 v1.14.2
- Update dig parser to fix cases where there are spaces in the answer data (e.g. TXT records)
20210106 v1.14.1
- Add iw-scan parser tested on linux (beta)
- Update date parser for Ubuntu 20.04 support
- Update last parser for last -F support
- Update last parser to add convenience fields and augment data for easier parsing
- Update man page
- Minor documentation updates
20201231 v1.14.0
- Add hashsum parser tested on linux, macos
- Add hash parser tested on linux, macos
- Add cksum parser tested on linux, macos
- Add wc parser tested on linux, macos
- Add printenv support under env parser
- Add vdir support under ls parser
- Add python 3.9 to github automation tests
20200805 v1.13.4
- Update crontab and crontab-u parsers to tighten up variable detection
- Update ping parser to tighten linux/bsd detection
20200804 v1.13.3
- Update ping parser for Raspberry Pi compatibility
20200803 v1.13.2
- Add key/value file parser (wrapper for ini parser)
- Add date command parser
- Update traceroute parser to more gracefully handle missing header row
- Update traceroute parser to handle annotations
- Update traceroute parser to only return successful probes
20200727 v1.13.1
- Add route -6 tests
20200727 v1.13.0
- Add ping and ping6 command parser tested on linux, macos, and freebsd
- Add traceroute and traceroute6 command parser tested on linux, macos, and freebsd
- Add tracepath command parser tested on linux
- Update ini parser to support files only containing key/value pairs
- Update uname parser exception with a hint to use "uname -a"
- Update route parser to support IPv6 tables
20200711 v1.12.1
- Fix tests when using older version of pygments library
20200710 v1.12.0
- Add sysctl command parser tested on linux, macOS, and freebsd
- Update the cli code to allow older versions of the pygments library (2.3.0) for debian packaging
- Code cleanup on the cli
- Add tests for the cli
- Vendorize cgitb as tracebackplus for verbose debug messages
20200625 v1.11.8
- Add verbose debug option using -dd argument
20200622 v1.11.7
- Fix iptables parser issue which would not output the last chain
20200614 v1.11.6
- Improve and standardize empty data check for all parsers
20200612 v1.11.5
- Update airport_s parser to fix error on parsing empty data
- Update arp parser to fix error on parsing empty data
- Update blkid parser to fix error on parsing empty data
- Update crontab parser to fix error on parsing empty data
- Update crontab_u parser to fix error on parsing empty data
- Update df parser to fix error on parsing empty data
- Update free parser to fix error on parsing empty data
- Update lsblk parser to fix error on parsing empty data
- Update lsmod parser to fix error on parsing empty data
- Update mount parser to fix error on parsing empty data
- Update netstat parser to fix error on parsing empty data
- Update ntpq parser to fix error on parsing empty data
- Update ps parser to fix error on parsing empty data
- Update route parser to fix error on parsing empty data
- Update systemctl parser to fix error on parsing empty data
- Update systemctl_lj parser to fix error on parsing empty data
- Update systemctl_ls parser to fix error on parsing empty data
- Update systemctl_luf parser to fix error on parsing empty data
- Update uptime parser to fix error on parsing empty data
- Update w parser to fix error on parsing empty data
- Update xml parser to fix error on parsing empty data
- Add tests to all parsers for no data condition
- Update ss parser to fix integer fields
20200610 v1.11.4
- Update ls parser to fix error on parsing an empty directory
20200609 v1.11.3
- Add local parser plugin feature (contributed by Dean Serenevy)
20200530 v1.11.2
- Update netstat parser to add freebsd support
- Update netstat parser to add route_flags_pretty field
- Update netstat parser to change osx_inode field name to unix_inode
- Update netstat parser to change osx_flags field name to unix_flags
- Update netstat parser to strip whitespace from state field
- Update route parser to add flags_pretty field
- Update arp parser to add permanent field (freebsd and osx)
- Update arp parser to add expires field (freebsd)
- Update w parser to strip whitespace from what field
- Update last parser to fix FreeBSD issues
- Update stat parser to change osx_flags field name to unix_flags
- Update stat parser to add unix_device field for freebsd and osx
- Fix freebsd compatibility message for df, fstab, mount, ntpq, stat, and uname parsers
- Fix compatibility message for platforms that include the version number at the end (e.g. freebsd12)
20200523 v1.11.1
- Update stat command parser to change osx_flags field to string
20200522 v1.11.0
- Add dmidecode command parser
- Update stat command parser to add OSX support
- Update netstat command parser to add OSX support
- Update netstat command parser to add -r (route) functionality for linux and OSX
- Update netstat command parser to add -i (interface) functionality for linux and OSX
20200511 v1.10.12
- Remove shebang from jc/cli.py for Fedora packaging
20200511 v1.10.11
- Change file permissions for Fedora packaging
20200509 v1.10.10
- Fix ls parser issue where the first file was skipped for ls -R on some platforms
- Update last parser to handle 'gone - no logout' condition
- Update netstat parser to handle bluetooth section (ignore gracefully for now)
20200508 v1.10.9
- Add license info to vendorized ifconfig-parser class
20200508 v1.10.8
- Add license file to dist for Fedora RPM packaging requirements
- Remove tests from package to keep from polluting the global site-packages
20200501 v1.10.7
- Requirements modifications for Fedora RPM packaging requirements
20200420 v1.10.6
- Remove homebrew shim references from du osx tests
20200414 v1.10.5
- Minor change of using sys.exit(0) instead of exit()
20200412 v1.10.4
- Add color customization via JC_COLORS env variable
20200409 v1.10.3
- Fix break on pipe error
20200409 v1.10.2
- Change colors to ansi and match jello colors
20200402 v1.10.1
- Code cleanup
20200402 v1.10.0
- Add color output by default when not piping data to another program
- Add -m option for monochrome output
20200326 v1.9.3
- Add axfr support for dig command parser
20200312 v1.9.2
- Update arp parser to fix OSX detection for some edge cases
20200312 v1.9.1
- Update file command parser to make filename splitting more robust
20200311 v1.9.0
- Add ntpq command parser
- Add timedatectl status command parser
- Add airport -I and airport -s command parser
- Add file command parser
- Optimized history command parser by https://github.com/philippeitis
- Magic syntax fix for certain edge cases
20200308 v1.8.1
- CLI optimizations by https://github.com/philippeitis
- Refactored magic syntax function and added tests (https://github.com/philippeitis)
- Github actions for CI testing on multiple platforms by https://github.com/philippeitis
- Update ls parser to fix parsing error in OSX with -lR when there are empty folders
20200303 v1.8.0
- Add blkid command parser
- Add last and lastb command parser
- Add who command parser
- Add CSV file parser
- Add /etc/passwd file parser
- Add /etc/shadow file parser
- Add /etc/group file parser
- Add /etc/gshadow file parser
20200227 v1.7.5
- Update ls parser to support filenames with newline characters
20200219 v1.7.4
- Update ls parser to support multiple directories, globbing, and -R (recursive)
20200211 v1.7.3
- Add alternative 'magic' syntax: e.g. `jc ls -al`
- Options can now be condensed (e.g. -prq is equivalent to -p -r -q)
20200208 v1.7.2
- Include test fixtures in wheel and sdist
20200205 v1.7.1
- Add YAML file parser
- Add INI file parser
- Add XML file parser
- Add id parser (tested on linux and OSX)
- Add crontab file parser with user support (tested on linux)
- Add __version__ variable to parser modules
- Add exit code on error
- Update history parser to output "line" as an integer
- Update compatibility list for some parsers
- Bugfix in crontab file parser: header insertion was clobbering first row
- Just-in-time loading of parser modules instead of loading all at start
20191217 v1.6.1
- Add du parser (tested on linux and OSX)
- Add crontab parser (tested on linux and OSX)
- Add pip list parser (tested on linux and OSX)
- Add pip show parser (tested on linux and OSX)
- Add OSX support for the ifconfig, arp, df, mount, and uname parsers
- Add tests for ls, dig, ps, w, uptime on OSX
- Add about option
- Add universal parsers to refactor repetitive code
- Update ifconfig parser to output 'state' as an array
20191117 v1.5.1
- Add ss parser
- Add stat parser
- Add /etc/hosts parser
- Add /etc/fstab parser
- Add systemctl parser (includes list-jobs, list-sockets, and list-unit-files)
- Add -r and raw=True options. By default, jc will now convert numbers and boolean, if possible, and add other semantic information, while the raw output will keep all values as text and provide a more literal JSON output
- Add -q and quiet=True options to suppress warnings to stderr
- Add -d option to debug parsing issues
- Add compatibility warnings to stderr
- Add documentation
- Update iptables parser to allow --line-numbers option
- Update lsblk parser to allow parsing of added columns
- Update mount parser: changed 'access' field name to 'options'
- Update netstat parser to allow parsing of unix sockets and raw network connections
- Update w parser to fix unaligned data where blanks are possible
- Clean up code and reorganize package
20191031 v1.1.1
- Add arp parser
- Add dig parser
- Add unit tests
- fix netstat parser (remove side effects due to global variable)
20191025 v1.0.1
- Add w parser
- Add uptime parser
- Add history parser
- Flatten env parser output
- Remove problematic characters from key names in: df, free, history, lsblk, lsof, and w
- Where possible, lowercase all keys (except cases like env where the key is the variable name)
- Remove integer values
- Handle CTRL-C gracefully
20191023 v0.9.1
- Add jobs parser
- Add lsof parser
- Add lsmod parser
- No blocking if no piped data
- Better help text
- Clean up iptables parser code
20191022 v0.8.1
- Add env parser
- Add df parser
- Add free parser
- Add lsblk parser
- Add mount parser
- Add uname parser
- Add iptables parser
20191021 v0.6.4
- Flatten netstat parser output
- Clean up argument parsing
- Fix command help
20191018 v0.5.5
- Fix netstat -p parsing for Ubuntu
- Add ps parser
- Add route parser
- ls parser fixes
20191017 v0.2.0
- ifconfig, ls, and netstat support

174
CONTRIBUTING.md Normal file
View File

@@ -0,0 +1,174 @@
# Contributing to jc
We love your input! We want to make contributing to this project as easy and
transparent as possible, whether it's:
- Reporting a bug
- Discussing the current state of the code
- Submitting a fix
- Proposing new features
- Proposing a new parser
## We Develop with Github
We use github to host code, to track issues and feature requests, as well as
accept pull requests.
## We Use Github Flow, So All Code Changes Happen Through Pull Requests
Pull requests are the best way to propose changes to the codebase (we use
[Github Flow](https://guides.github.com/introduction/flow/index.html)). We
actively welcome your pull requests:
1. Open an issue to discuss the new feature, bug fix, or parser before opening
a pull request. For new parsers, it is important to agree upon a schema
before developing the parser.
2. Fork the repo and create your branch from `dev`, if available, otherwise
`master`.
3. For new parsers:
- Templates: Use the [`jc/parsers/foo.py`](https://github.com/kellyjonbrazil/jc/blob/master/jc/parsers/foo.py)
or [`jc/parsers/foo_s.py (streaming)`](https://github.com/kellyjonbrazil/jc/blob/master/jc/parsers/foo_s.py)
parsers as a template to get started.
- Local development: You can even place a new parser python module file in
the [parser plugin directory](https://github.com/kellyjonbrazil/jc#parser-plugins)
to get started right away with just a standard `jc` installation.
- Parser registry: Add the parser name to the [jc/lib.py](https://github.com/kellyjonbrazil/jc/blob/master/jc/lib.py)
file.
4. If you've added code that should be tested, add tests. All new parsers should
have several sample outputs and tests.
- Templates:
- **Recommended:** [tests/templates/_test_foo_simple.py](https://github.com/kellyjonbrazil/jc/tree/master/tests/templates/_test_foo_simple.py) as a template if you only have test with fixtures.
Execute these steps for standard tests:
- Save this file as `test_{parser_name}.py` since the helper methods extract parser names from the filename. Use underscores instead of dashes for the parser name.
- Organize fixtures in `tests/fixtures` for optimal structure.
- Format fixtures as follows (using double dashes):
- `{parser_name}--{some_test_description}.out` for command output. (no dots in the filename except for the `.out` suffix)
- `{parser_name}--{some_test_description}.json` for expected JSON after parsing. (no dots in the filename except for the `.json` suffix)
- Custom: [tests/templates/_test_foo.py](https://github.com/kellyjonbrazil/jc/blob/master/tests/templates/_test_foo.py) as a template for tests.
- Custom: [tests/templates/_test_foo_s.py](https://github.com/kellyjonbrazil/jc/tree/master/tests/templates/_test_foo_s.py) as a template for **streaming parser** tests.
- Fixtures: Tests typically consist of an input file and an expected output
JSON file. Add the data files to the appropriate folder under [tests/fixtures](https://github.com/kellyjonbrazil/jc/tree/master/tests/fixtures)
5. Documentation is auto-generated from docstrings, so ensure they are clear and
accurate.
6. Ensure the test suite passes. (Note: "**America/Los_Angeles**" timezone
should be configured on the test system)
7. Make sure your code lints.
8. Issue that pull request!
## Documentation And Completions
No need to worry about documentation and completions as those are auto generated
via the python doc strings.
## Parser Schema Guidelines
- Try to keep the schema as flat as possible - typically a list of flat
dictionaries
- Keys should be lowercase, contain no special characters, and spaces should be
converted to underscores
- Keys should be static, if possible. If they have to be dynamic, then they
should not contain lists or dictionaries
This will make it easier to use tools like `jq` without requiring escaping of
special characters, encapsulating key names in `[""]`, keeps paths predictable,
and makes iterating and searching for values easier.
**Examples**
Bad:
```json
{
"Interface 1": [
"192.168.1.1",
"172.16.1.1"
],
"Wifi Interface 1": [
"10.1.1.1"
]
}
```
Good:
```json
[
{
"interface": "Interface 1",
"ip_addresses": [
"192.168.1.1",
"172.16.1.1"
]
},
{
"interface": "Wifi Interface 1",
"ip_addresses": [
"10.1.1.1"
]
}
]
```
## Development Environment
Use the following steps to set up the development environment.
### Virtual Environment
Set up a Python virtual environment for `jc` development so you won't have to
worry about library conflicts. This can be done with something like
[pyenv](https://github.com/pyenv/pyenv) and/or
[venv](https://docs.python.org/3/library/venv.html)
### Clone the repo
Once the virtual environment is set up, clone the `jc` repository inside:
```bash
git clone https://github.com/kellyjonbrazil/jc.git
```
### Install In Developer Mode
Next, use the `./install.sh` script to install `jc` and the requirements in
developer mode (code chages take effect immediately). This will install the
console-script entry point to `$HOME/.local/bin` so you may need to add this
to your path.
## Tests
It is essential to have good command output sample coverage and tests to keep
the `jc` parser quality high.
Many parsers include calculated timestamp fields using the `jc.utils.timestamp`
class. Naive timestamps created with this class should be generated on a system
configured with the "**America/Los_Angeles**" timezone on linux/macOS/unix and
"**Pacific Standard Time**" timezone on Windows for tests to pass on the Github
Actions CI tests. This timezone should be configured on your local system before
running the tests locally, as well.
You can run all tests by running the `./runtests.sh` script.
## Debug Messages
Use `--debug` or `-d` to see debug error messages (double to see more):
```shell
echo 'abc' | jc --parser-with-error -dd
```
## Any contributions you make will be under the MIT Software License
In short, when you submit code changes, your submissions are understood to be
under the same [MIT License](http://choosealicense.com/licenses/mit/) that
covers the project. Feel free to contact the maintainers if that's a concern.
## Report bugs using Github's Issues
We use GitHub issues to track public bugs. Report a bug by
[opening a new issue](https://github.com/kellyjonbrazil/jc/issues); it's that
easy!
## Write bug reports with detail, background, and sample code
**Great Bug Reports** tend to have:
- A quick summary and/or background
- Steps to reproduce
- Be specific!
- Give sample code if you can.
- What you expected would happen
- What actually happens
- Notes (possibly including why you think this might be happening, or stuff you
tried that didn't work)
## Use a Consistent Coding Style
* 4 spaces for indentation rather than tabs
* Use a Python linter that will enforce PEP 8 and other best practices

4814
EXAMPLES.md Normal file

File diff suppressed because it is too large Load Diff

3
MANIFEST.in Normal file
View File

@@ -0,0 +1,3 @@
include jc/py.typed
include man/jc.1
include CHANGELOG

75
README-snap.md Normal file
View File

@@ -0,0 +1,75 @@
# How to use `jc` with `snap`
## How to build `snap` package
- Install `snapd`. [One](https://snapcraft.io/docs/installing-snapd) or [two](https://github.com/don-rumata/ansible-role-install-snap).
- Install `snapcraft`:
```bash
$ sudo snap install snapcraft --classic
```
- Update snapd:
```bash
$ sudo snap refresh snapcraft --edge
```
- Clone the repo:
```bash
$ git clone https://github.com/kellyjonbrazil/jc
```
- Change the directory:
```bash
$ cd ./jc
```
- Select branch:
```bash
$ git checkout snap-support
```
- Initialize LXD:
```bash
$ lxd init --auto
```
- Build `.snap` file:
```bash
$ snapcraft
```
## How to install local snap file
```bash
$ snap install --dangerous ./jc_*_amd64.snap
```
## How to use `jc` with plugins
- Put your plugin in the `"$HOME/.local/share/jc"` directory.
- To connect the directory, run:
```bash
snap connect jc:dot-jc-plugins snapd
```
## Urls
- <https://snapcraft.io/docs/supported-interfaces>
- <https://snapcraft.io/docs/interface-management>
- <https://snapcraft.io/docs/personal-files-interface>
- <https://snapcraft.io/docs/python-apps>
- <https://documentation.ubuntu.com/lxd/en/latest/getting_started/>

2937
README.md

File diff suppressed because it is too large Load Diff

View File

@@ -1 +1,2 @@
theme: jekyll-theme-cayman
theme: jekyll-theme-cayman
markdown: GFM

9
build-completions.py Executable file
View File

@@ -0,0 +1,9 @@
#!/usr/bin/env python3
# build Bash and Zsh completion scripts and add to the completions folder
from jc.shell_completions import bash_completion, zsh_completion
with open('completions/jc_bash_completion.sh', 'w') as f:
print(bash_completion(), file=f)
with open('completions/jc_zsh_completion.sh', 'w') as f:
print(zsh_completion(), file=f)

View File

@@ -1,208 +0,0 @@
jc changelog
20200609 v1.11.3
- Add local parser plugin feature (contributed by Dean Serenevy)
20200530 v1.11.2
- Update netstat parser to add freebsd support
- Update netstat parser to add route_flags_pretty field
- Update netstat parser to change osx_inode field name to unix_inode
- Update netstat parser to change osx_flags field name to unix_flags
- Update netstat parser to strip whitespace from state field
- Update route parser to add flags_pretty field
- Update arp parser to add permanent field (freebsd and osx)
- Update arp parser to add expires field (freebsd)
- Update w parser to strip whitespace from what field
- Update last parser to fix FreeBSD issues
- Update stat parser to change osx_flags field name to unix_flags
- Update stat parser to add unix_device field for freebsd and osx
- Fix freebsd compatibility message for df, fstab, mount, ntpq, stat, and uname parsers
- Fix compatibility message for platforms that include the version number at the end (e.g. freebsd12)
20200523 v1.11.1
- Update stat command parser to change osx_flags field to string
20200522 v1.11.0
- Add dmidecode command parser
- Update stat command parser to add OSX support
- Update netstat command parser to add OSX support
- Update netstat command parser to add -r (route) functionality for linux and OSX
- Update netstat command parser to add -i (interface) functionality for linux and OSX
20200511 v1.10.12
- Remove shebang from jc/cli.py for Fedora packaging
20200511 v1.10.11
- Change file permissions for Fedora packaging
20200509 v1.10.10
- Fix ls parser issue where the first file was skipped for ls -R on some platforms
- Update last parser to handle 'gone - no logout' condition
- Update netstat parser to handle bluetooth section (ignore gracefully for now)
20200508 v1.10.9
- Add license info to vendorized ifconfig-parser class
20200508 v1.10.8
- Add license file to dist for Fedora RPM packaging requirements
- Remove tests from package to keep from polluting the global site-packages
20200501 v1.10.7
- Requirements modifications for Fedora RPM packaging requirements
20200420 v1.10.6
- Remove homebrew shim references from du osx tests
20200414 v1.10.5
- Minor change of using sys.exit(0) instead of exit()
20200412 v1.10.4
- Add color customization via JC_COLORS env variable
20200409 v1.10.3
- Fix break on pipe error
20200409 v1.10.2
- Change colors to ansi and match jello colors
20200402 v1.10.1
- Code cleanup
20200402 v1.10.0
- Add color output by default when not piping data to another program
- Add -m option for monochrome output
20200326 v1.9.3
- Add axfr support for dig command parser
20200312 v1.9.2
- Updated arp parser to fix OSX detection for some edge cases
20200312 v1.9.1
- Updated file command parser to make filename splitting more robust
20200311 v1.9.0
- Added ntpq command parser
- Added timedatectl status command parser
- Added airport -I and airport -s command parser
- Added file command parser
- Optimized history command parser by https://github.com/philippeitis
- Magic syntax fix for certain edge cases
20200308 v1.8.1
- CLI optimizations by https://github.com/philippeitis
- Refactored magic syntax function and added tests (https://github.com/philippeitis)
- Github actions for CI testing on multiple platforms by https://github.com/philippeitis
- Updated ls parser to fix parsing error in OSX with -lR when there are empty folders
20200303 v1.8.0
- Added blkid command parser
- Added last and lastb command parser
- Added who command parser
- Added CSV file parser
- Added /etc/passwd file parser
- Added /etc/shadow file parser
- Added /etc/group file parser
- Added /etc/gshadow file parser
20200227 v1.7.5
- Updated ls parser to support filenames with newline characters
20200219 v1.7.4
- Updated ls parser to support multiple directories, globbing, and -R (recursive)
20200211 v1.7.3
- Add alternative 'magic' syntax: e.g. `jc ls -al`
- Options can now be condensed (e.g. -prq is equivalant to -p -r -q)
20200208 v1.7.2
- Include test fixtures in wheel and sdist
20200205 v1.7.1
- Add YAML file parser
- Add INI file parser
- Add XML file parser
- Add id parser (tested on linux and OSX)
- Add crontab file parser with user support (tested on linux)
- Add __version__ variable to parser modules
- Add exit code on error
- Updated history parser to output "line" as an integer
- Updated compatibility list for some parsers
- Bugfix in crontab file parser: header insertion was clobbering first row
- Just-in-time loading of parser modules instead of loading all at start
20191217 v1.6.1
- Add du parser (tested on linux and OSX)
- Add crontab parser (tested on linux and OSX)
- Add pip list parser (tested on linux and OSX)
- Add pip show parser (tested on linux and OSX)
- Add OSX support for the ifconfig, arp, df, mount, and uname parsers
- Add tests for ls, dig, ps, w, uptime on OSX
- Add about option
- Add universal parsers to refactor repetitive code
- Updated ifconfig parser to output 'state' as an array
20191117 v1.5.1
- Add ss parser
- Add stat parser
- Add /etc/hosts parser
- Add /etc/fstab parser
- Add systemctl parser (includes list-jobs, list-sockets, and list-unit-files)
- Add -r and raw=True options. By default, jc will now convert numbers and boolean, if possible, and add other semantic information, while the raw output will keep all values as text and provide a more literal JSON output
- Add -q and quiet=True options to suppress warnings to stderr
- Add -d option to debug parsing issues
- Add compatibility warnings to stderr
- Add documentation
- Updated iptables parser to allow --line-numbers option
- Updated lsblk parser to allow parsing of added columns
- Updated mount parser: changed 'access' field name to 'options'
- Updated netstat parser to allow parsing of unix sockets and raw network connections
- Updated w parser to fix unaligned data where blanks are possible
- Clean up code and reorganize package
20191031 v1.1.1
- Add arp parser
- Add dig parser
- Add unit tests
- fix netstat parser (remove side effects due to global variable)
20191025 v1.0.1
- Add w parser
- Add uptime parser
- Add history parser
- Flatten env parser output
- Remove problematic characters from key names in: df, free, history, lsblk, lsof, and w
- Where possible, lowercase all keys (except cases like env where the key is the variable name)
- Remove integer values
- Handle CTRL-C gracefully
20191023 v0.9.1
- Add jobs parser
- Add lsof parser
- Add lsmod parser
- No blocking if no piped data
- Better help text
- Clean up iptables parser code
20191022 v0.8.1
- Add env parser
- Add df parser
- Add free parser
- Add lsblk parser
- Add mount parser
- Add uname parser
- Add iptables parser
20191021 v0.6.4
- Flatten netstat parser output
- Clean up argument parsing
- Fix command help
20191018 v0.5.5
- Fix netstat -p parsing for Ubuntu
- Add ps parser
- Add route parser
- ls parser fixes
20191017 v0.2.0
- ifconfig, ls, and netstat support

View File

@@ -0,0 +1,90 @@
_jc()
{
local cur prev words cword jc_commands jc_parsers jc_options \
jc_about_options jc_about_mod_options jc_help_options jc_special_options
jc_commands=(acpi airport apt-cache apt-get arp blkid bluetoothctl cbt certbot chage cksum crontab curl date debconf-show df dig dmidecode dpkg du efibootmgr env ethtool file findmnt finger free git gpg hciconfig host id ifconfig iostat ip iptables iw iwconfig jobs last lastb ls lsattr lsb_release lsblk lsmod lsof lspci lsusb md5 md5sum mdadm mount mpstat needrestart netstat nmcli nsd-control ntpq os-prober pidstat ping ping6 pip pip3 postconf printenv ps route rpm rsync sfdisk sha1sum sha224sum sha256sum sha384sum sha512sum shasum ss ssh sshd stat sum swapon sysctl systemctl systeminfo timedatectl top tracepath tracepath6 traceroute traceroute6 tune2fs udevadm ufw uname update-alternatives upower uptime vdir veracrypt vmstat w wc who xrandr zipinfo zpool)
jc_parsers=(--acpi --airport --airport-s --apt-cache-show --apt-get-sqq --arp --asciitable --asciitable-m --blkid --bluetoothctl --cbt --cef --cef-s --certbot --chage --cksum --clf --clf-s --crontab --crontab-u --csv --csv-s --curl-head --date --datetime-iso --debconf-show --df --dig --dir --dmidecode --dpkg-l --du --efibootmgr --email-address --env --ethtool --file --find --findmnt --finger --free --fstab --git-log --git-log-s --git-ls-remote --gpg --group --gshadow --hash --hashsum --hciconfig --history --host --hosts --http-headers --id --ifconfig --ini --ini-dup --iostat --iostat-s --ip-address --iptables --ip-route --iw-scan --iwconfig --jar-manifest --jobs --jwt --kv --kv-dup --last --ls --ls-s --lsattr --lsb-release --lsblk --lsmod --lsof --lspci --lsusb --m3u --mdadm --mount --mpstat --mpstat-s --needrestart --netstat --nmcli --nsd-control --ntpq --openvpn --os-prober --os-release --passwd --path --path-list --pci-ids --pgpass --pidstat --pidstat-s --ping --ping-s --pip-list --pip-show --pkg-index-apk --pkg-index-deb --plist --postconf --proc --proc-buddyinfo --proc-cmdline --proc-consoles --proc-cpuinfo --proc-crypto --proc-devices --proc-diskstats --proc-filesystems --proc-interrupts --proc-iomem --proc-ioports --proc-loadavg --proc-locks --proc-meminfo --proc-modules --proc-mtrr --proc-pagetypeinfo --proc-partitions --proc-slabinfo --proc-softirqs --proc-stat --proc-swaps --proc-uptime --proc-version --proc-vmallocinfo --proc-vmstat --proc-zoneinfo --proc-driver-rtc --proc-net-arp --proc-net-dev --proc-net-dev-mcast --proc-net-if-inet6 --proc-net-igmp --proc-net-igmp6 --proc-net-ipv6-route --proc-net-netlink --proc-net-netstat --proc-net-packet --proc-net-protocols --proc-net-route --proc-net-tcp --proc-net-unix --proc-pid-fdinfo --proc-pid-io --proc-pid-maps --proc-pid-mountinfo --proc-pid-numa-maps --proc-pid-smaps --proc-pid-stat --proc-pid-statm --proc-pid-status --ps --resolve-conf --route --rpm-qi --rsync --rsync-s --semver --sfdisk --shadow --srt --ss --ssh-conf --sshd-conf --stat --stat-s --swapon --sysctl --syslog --syslog-s --syslog-bsd --syslog-bsd-s --systemctl --systemctl-lj --systemctl-ls --systemctl-luf --systeminfo --time --timedatectl --timestamp --toml --top --top-s --tracepath --traceroute --tune2fs --udevadm --ufw --ufw-appinfo --uname --update-alt-gs --update-alt-q --upower --uptime --url --ver --veracrypt --vmstat --vmstat-s --w --wc --who --x509-cert --x509-csr --xml --xrandr --yaml --zipinfo --zpool-iostat --zpool-status)
jc_options=(--force-color -C --debug -d --monochrome -m --meta-out -M --pretty -p --quiet -q --raw -r --slurp -s --unbuffer -u --yaml-out -y)
jc_about_options=(--about -a)
jc_about_mod_options=(--pretty -p --yaml-out -y --monochrome -m --force-color -C)
jc_help_options=(--help -h)
jc_special_options=(--version -v --bash-comp -B --zsh-comp -Z)
COMPREPLY=()
_get_comp_words_by_ref cur prev words cword
# if jc_about_options are found anywhere in the line, then only complete from jc_about_mod_options
for i in "${words[@]::${#words[@]}-1}"; do
if [[ " ${jc_about_options[*]} " =~ " ${i} " ]]; then
COMPREPLY=( $( compgen -W "${jc_about_mod_options[*]}" \
-- "${cur}" ) )
return 0
fi
done
# if jc_help_options and a parser are found anywhere in the line, then no more completions
if
(
for i in "${words[@]::${#words[@]}-1}"; do
if [[ " ${jc_help_options[*]} " =~ " ${i} " ]]; then
return 0
fi
done
return 1
) && (
for i in "${words[@]::${#words[@]}-1}"; do
if [[ " ${jc_parsers[*]} " =~ " ${i} " ]]; then
return 0
fi
done
return 1
); then
return 0
fi
# if jc_help_options are found anywhere in the line, then only complete with parsers
for i in "${words[@]::${#words[@]}-1}"; do
if [[ " ${jc_help_options[*]} " =~ " ${i} " ]]; then
COMPREPLY=( $( compgen -W "${jc_parsers[*]}" \
-- "${cur}" ) )
return 0
fi
done
# if special options are found anywhere in the line, then no more completions
for i in "${words[@]::${#words[@]}-1}"; do
if [[ " ${jc_special_options[*]} " =~ " ${i} " ]]; then
return 0
fi
done
# if magic command is found anywhere in the line, use called command's autocompletion
for i in "${words[@]::${#words[@]}-1}"; do
if [[ " ${jc_commands[*]} " =~ " ${i} " ]]; then
_command
return 0
fi
done
# if "/pr[oc]" (magic for Procfile parsers) is in the current word, complete with files/directories in the path
if [[ "${cur}" =~ "/pr" ]]; then
_filedir
return 0
fi
# if a parser arg is found anywhere in the line, only show options and help options
for i in "${words[@]::${#words[@]}-1}"; do
if [[ " ${jc_parsers[*]} " =~ " ${i} " ]]; then
COMPREPLY=( $( compgen -W "${jc_options[*]} ${jc_help_options[*]}" \
-- "${cur}" ) )
return 0
fi
done
# default completion
COMPREPLY=( $( compgen -W "${jc_options[*]} ${jc_about_options[*]} ${jc_help_options[*]} ${jc_special_options[*]} ${jc_parsers[*]} ${jc_commands[*]}" \
-- "${cur}" ) )
} &&
complete -F _jc jc

View File

@@ -0,0 +1,478 @@
#compdef jc
_jc() {
local -a jc_commands jc_commands_describe \
jc_parsers jc_parsers_describe \
jc_options jc_options_describe \
jc_about_options jc_about_options_describe \
jc_about_mod_options jc_about_mod_options_describe \
jc_help_options jc_help_options_describe \
jc_special_options jc_special_options_describe
jc_commands=(acpi airport apt-cache apt-get arp blkid bluetoothctl cbt certbot chage cksum crontab curl date debconf-show df dig dmidecode dpkg du efibootmgr env ethtool file findmnt finger free git gpg hciconfig host id ifconfig iostat ip iptables iw iwconfig jobs last lastb ls lsattr lsb_release lsblk lsmod lsof lspci lsusb md5 md5sum mdadm mount mpstat needrestart netstat nmcli nsd-control ntpq os-prober pidstat ping ping6 pip pip3 postconf printenv ps route rpm rsync sfdisk sha1sum sha224sum sha256sum sha384sum sha512sum shasum ss ssh sshd stat sum swapon sysctl systemctl systeminfo timedatectl top tracepath tracepath6 traceroute traceroute6 tune2fs udevadm ufw uname update-alternatives upower uptime vdir veracrypt vmstat w wc who xrandr zipinfo zpool)
jc_commands_describe=(
'acpi:run "acpi" command with magic syntax.'
'airport:run "airport" command with magic syntax.'
'apt-cache:run "apt-cache" command with magic syntax.'
'apt-get:run "apt-get" command with magic syntax.'
'arp:run "arp" command with magic syntax.'
'blkid:run "blkid" command with magic syntax.'
'bluetoothctl:run "bluetoothctl" command with magic syntax.'
'cbt:run "cbt" command with magic syntax.'
'certbot:run "certbot" command with magic syntax.'
'chage:run "chage" command with magic syntax.'
'cksum:run "cksum" command with magic syntax.'
'crontab:run "crontab" command with magic syntax.'
'curl:run "curl" command with magic syntax.'
'date:run "date" command with magic syntax.'
'debconf-show:run "debconf-show" command with magic syntax.'
'df:run "df" command with magic syntax.'
'dig:run "dig" command with magic syntax.'
'dmidecode:run "dmidecode" command with magic syntax.'
'dpkg:run "dpkg" command with magic syntax.'
'du:run "du" command with magic syntax.'
'efibootmgr:run "efibootmgr" command with magic syntax.'
'env:run "env" command with magic syntax.'
'ethtool:run "ethtool" command with magic syntax.'
'file:run "file" command with magic syntax.'
'findmnt:run "findmnt" command with magic syntax.'
'finger:run "finger" command with magic syntax.'
'free:run "free" command with magic syntax.'
'git:run "git" command with magic syntax.'
'gpg:run "gpg" command with magic syntax.'
'hciconfig:run "hciconfig" command with magic syntax.'
'host:run "host" command with magic syntax.'
'id:run "id" command with magic syntax.'
'ifconfig:run "ifconfig" command with magic syntax.'
'iostat:run "iostat" command with magic syntax.'
'ip:run "ip" command with magic syntax.'
'iptables:run "iptables" command with magic syntax.'
'iw:run "iw" command with magic syntax.'
'iwconfig:run "iwconfig" command with magic syntax.'
'jobs:run "jobs" command with magic syntax.'
'last:run "last" command with magic syntax.'
'lastb:run "lastb" command with magic syntax.'
'ls:run "ls" command with magic syntax.'
'lsattr:run "lsattr" command with magic syntax.'
'lsb_release:run "lsb_release" command with magic syntax.'
'lsblk:run "lsblk" command with magic syntax.'
'lsmod:run "lsmod" command with magic syntax.'
'lsof:run "lsof" command with magic syntax.'
'lspci:run "lspci" command with magic syntax.'
'lsusb:run "lsusb" command with magic syntax.'
'md5:run "md5" command with magic syntax.'
'md5sum:run "md5sum" command with magic syntax.'
'mdadm:run "mdadm" command with magic syntax.'
'mount:run "mount" command with magic syntax.'
'mpstat:run "mpstat" command with magic syntax.'
'needrestart:run "needrestart" command with magic syntax.'
'netstat:run "netstat" command with magic syntax.'
'nmcli:run "nmcli" command with magic syntax.'
'nsd-control:run "nsd-control" command with magic syntax.'
'ntpq:run "ntpq" command with magic syntax.'
'os-prober:run "os-prober" command with magic syntax.'
'pidstat:run "pidstat" command with magic syntax.'
'ping:run "ping" command with magic syntax.'
'ping6:run "ping6" command with magic syntax.'
'pip:run "pip" command with magic syntax.'
'pip3:run "pip3" command with magic syntax.'
'postconf:run "postconf" command with magic syntax.'
'printenv:run "printenv" command with magic syntax.'
'ps:run "ps" command with magic syntax.'
'route:run "route" command with magic syntax.'
'rpm:run "rpm" command with magic syntax.'
'rsync:run "rsync" command with magic syntax.'
'sfdisk:run "sfdisk" command with magic syntax.'
'sha1sum:run "sha1sum" command with magic syntax.'
'sha224sum:run "sha224sum" command with magic syntax.'
'sha256sum:run "sha256sum" command with magic syntax.'
'sha384sum:run "sha384sum" command with magic syntax.'
'sha512sum:run "sha512sum" command with magic syntax.'
'shasum:run "shasum" command with magic syntax.'
'ss:run "ss" command with magic syntax.'
'ssh:run "ssh" command with magic syntax.'
'sshd:run "sshd" command with magic syntax.'
'stat:run "stat" command with magic syntax.'
'sum:run "sum" command with magic syntax.'
'swapon:run "swapon" command with magic syntax.'
'sysctl:run "sysctl" command with magic syntax.'
'systemctl:run "systemctl" command with magic syntax.'
'systeminfo:run "systeminfo" command with magic syntax.'
'timedatectl:run "timedatectl" command with magic syntax.'
'top:run "top" command with magic syntax.'
'tracepath:run "tracepath" command with magic syntax.'
'tracepath6:run "tracepath6" command with magic syntax.'
'traceroute:run "traceroute" command with magic syntax.'
'traceroute6:run "traceroute6" command with magic syntax.'
'tune2fs:run "tune2fs" command with magic syntax.'
'udevadm:run "udevadm" command with magic syntax.'
'ufw:run "ufw" command with magic syntax.'
'uname:run "uname" command with magic syntax.'
'update-alternatives:run "update-alternatives" command with magic syntax.'
'upower:run "upower" command with magic syntax.'
'uptime:run "uptime" command with magic syntax.'
'vdir:run "vdir" command with magic syntax.'
'veracrypt:run "veracrypt" command with magic syntax.'
'vmstat:run "vmstat" command with magic syntax.'
'w:run "w" command with magic syntax.'
'wc:run "wc" command with magic syntax.'
'who:run "who" command with magic syntax.'
'xrandr:run "xrandr" command with magic syntax.'
'zipinfo:run "zipinfo" command with magic syntax.'
'zpool:run "zpool" command with magic syntax.'
)
jc_parsers=(--acpi --airport --airport-s --apt-cache-show --apt-get-sqq --arp --asciitable --asciitable-m --blkid --bluetoothctl --cbt --cef --cef-s --certbot --chage --cksum --clf --clf-s --crontab --crontab-u --csv --csv-s --curl-head --date --datetime-iso --debconf-show --df --dig --dir --dmidecode --dpkg-l --du --efibootmgr --email-address --env --ethtool --file --find --findmnt --finger --free --fstab --git-log --git-log-s --git-ls-remote --gpg --group --gshadow --hash --hashsum --hciconfig --history --host --hosts --http-headers --id --ifconfig --ini --ini-dup --iostat --iostat-s --ip-address --iptables --ip-route --iw-scan --iwconfig --jar-manifest --jobs --jwt --kv --kv-dup --last --ls --ls-s --lsattr --lsb-release --lsblk --lsmod --lsof --lspci --lsusb --m3u --mdadm --mount --mpstat --mpstat-s --needrestart --netstat --nmcli --nsd-control --ntpq --openvpn --os-prober --os-release --passwd --path --path-list --pci-ids --pgpass --pidstat --pidstat-s --ping --ping-s --pip-list --pip-show --pkg-index-apk --pkg-index-deb --plist --postconf --proc --proc-buddyinfo --proc-cmdline --proc-consoles --proc-cpuinfo --proc-crypto --proc-devices --proc-diskstats --proc-filesystems --proc-interrupts --proc-iomem --proc-ioports --proc-loadavg --proc-locks --proc-meminfo --proc-modules --proc-mtrr --proc-pagetypeinfo --proc-partitions --proc-slabinfo --proc-softirqs --proc-stat --proc-swaps --proc-uptime --proc-version --proc-vmallocinfo --proc-vmstat --proc-zoneinfo --proc-driver-rtc --proc-net-arp --proc-net-dev --proc-net-dev-mcast --proc-net-if-inet6 --proc-net-igmp --proc-net-igmp6 --proc-net-ipv6-route --proc-net-netlink --proc-net-netstat --proc-net-packet --proc-net-protocols --proc-net-route --proc-net-tcp --proc-net-unix --proc-pid-fdinfo --proc-pid-io --proc-pid-maps --proc-pid-mountinfo --proc-pid-numa-maps --proc-pid-smaps --proc-pid-stat --proc-pid-statm --proc-pid-status --ps --resolve-conf --route --rpm-qi --rsync --rsync-s --semver --sfdisk --shadow --srt --ss --ssh-conf --sshd-conf --stat --stat-s --swapon --sysctl --syslog --syslog-s --syslog-bsd --syslog-bsd-s --systemctl --systemctl-lj --systemctl-ls --systemctl-luf --systeminfo --time --timedatectl --timestamp --toml --top --top-s --tracepath --traceroute --tune2fs --udevadm --ufw --ufw-appinfo --uname --update-alt-gs --update-alt-q --upower --uptime --url --ver --veracrypt --vmstat --vmstat-s --w --wc --who --x509-cert --x509-csr --xml --xrandr --yaml --zipinfo --zpool-iostat --zpool-status)
jc_parsers_describe=(
'--acpi:`acpi` command parser'
'--airport:`airport -I` command parser'
'--airport-s:`airport -s` command parser'
'--apt-cache-show:`apt-cache show` command parser'
'--apt-get-sqq:`apt-get -sqq` command parser'
'--arp:`arp` command parser'
'--asciitable:ASCII and Unicode table parser'
'--asciitable-m:multi-line ASCII and Unicode table parser'
'--blkid:`blkid` command parser'
'--bluetoothctl:`bluetoothctl` command parser'
'--cbt:`cbt` (Google Bigtable) command parser'
'--cef:CEF string parser'
'--cef-s:CEF string streaming parser'
'--certbot:`certbot` command parser'
'--chage:`chage --list` command parser'
'--cksum:`cksum` and `sum` command parser'
'--clf:Common and Combined Log Format file parser'
'--clf-s:Common and Combined Log Format file streaming parser'
'--crontab:`crontab` command and file parser'
'--crontab-u:`crontab` file parser with user support'
'--csv:CSV file parser'
'--csv-s:CSV file streaming parser'
'--curl-head:`curl --head` command parser'
'--date:`date` command parser'
'--datetime-iso:ISO 8601 Datetime string parser'
'--debconf-show:`debconf-show` command parser'
'--df:`df` command parser'
'--dig:`dig` command parser'
'--dir:`dir` command parser'
'--dmidecode:`dmidecode` command parser'
'--dpkg-l:`dpkg -l` command parser'
'--du:`du` command parser'
'--efibootmgr:`efibootmgr` command parser'
'--email-address:Email Address string parser'
'--env:`env` command parser'
'--ethtool:`ethtool` command parser'
'--file:`file` command parser'
'--find:`find` command parser'
'--findmnt:`findmnt` command parser'
'--finger:`finger` command parser'
'--free:`free` command parser'
'--fstab:`/etc/fstab` file parser'
'--git-log:`git log` command parser'
'--git-log-s:`git log` command streaming parser'
'--git-ls-remote:`git ls-remote` command parser'
'--gpg:`gpg --with-colons` command parser'
'--group:`/etc/group` file parser'
'--gshadow:`/etc/gshadow` file parser'
'--hash:`hash` command parser'
'--hashsum:hashsum command parser (`md5sum`, `shasum`, etc.)'
'--hciconfig:`hciconfig` command parser'
'--history:`history` command parser'
'--host:`host` command parser'
'--hosts:`/etc/hosts` file parser'
'--http-headers:HTTP headers parser'
'--id:`id` command parser'
'--ifconfig:`ifconfig` command parser'
'--ini:INI file parser'
'--ini-dup:INI with duplicate key file parser'
'--iostat:`iostat` command parser'
'--iostat-s:`iostat` command streaming parser'
'--ip-address:IPv4 and IPv6 Address string parser'
'--iptables:`iptables` command parser'
'--ip-route:`ip route` command parser'
'--iw-scan:`iw dev [device] scan` command parser'
'--iwconfig:`iwconfig` command parser'
'--jar-manifest:Java MANIFEST.MF file parser'
'--jobs:`jobs` command parser'
'--jwt:JWT string parser'
'--kv:Key/Value file and string parser'
'--kv-dup:Key/Value with duplicate key file and string parser'
'--last:`last` and `lastb` command parser'
'--ls:`ls` command parser'
'--ls-s:`ls` command streaming parser'
'--lsattr:`lsattr` command parser'
'--lsb-release:`lsb_release` command parser'
'--lsblk:`lsblk` command parser'
'--lsmod:`lsmod` command parser'
'--lsof:`lsof` command parser'
'--lspci:`lspci -mmv` command parser'
'--lsusb:`lsusb` command parser'
'--m3u:M3U and M3U8 file parser'
'--mdadm:`mdadm` command parser'
'--mount:`mount` command parser'
'--mpstat:`mpstat` command parser'
'--mpstat-s:`mpstat` command streaming parser'
'--needrestart:`needrestart -b` command parser'
'--netstat:`netstat` command parser'
'--nmcli:`nmcli` command parser'
'--nsd-control:`nsd-control` command parser'
'--ntpq:`ntpq -p` command parser'
'--openvpn:openvpn-status.log file parser'
'--os-prober:`os-prober` command parser'
'--os-release:`/etc/os-release` file parser'
'--passwd:`/etc/passwd` file parser'
'--path:POSIX path string parser'
'--path-list:POSIX path list string parser'
'--pci-ids:`pci.ids` file parser'
'--pgpass:PostgreSQL password file parser'
'--pidstat:`pidstat -H` command parser'
'--pidstat-s:`pidstat -H` command streaming parser'
'--ping:`ping` and `ping6` command parser'
'--ping-s:`ping` and `ping6` command streaming parser'
'--pip-list:`pip list` command parser'
'--pip-show:`pip show` command parser'
'--pkg-index-apk:Alpine Linux Package Index file parser'
'--pkg-index-deb:Debian Package Index file parser'
'--plist:PLIST file parser'
'--postconf:`postconf -M` command parser'
'--proc:`/proc/` file parser'
'--proc-buddyinfo:`/proc/buddyinfo` file parser'
'--proc-cmdline:`/proc/cmdline` file parser'
'--proc-consoles:`/proc/consoles` file parser'
'--proc-cpuinfo:`/proc/cpuinfo` file parser'
'--proc-crypto:`/proc/crypto` file parser'
'--proc-devices:`/proc/devices` file parser'
'--proc-diskstats:`/proc/diskstats` file parser'
'--proc-filesystems:`/proc/filesystems` file parser'
'--proc-interrupts:`/proc/interrupts` file parser'
'--proc-iomem:`/proc/iomem` file parser'
'--proc-ioports:`/proc/ioports` file parser'
'--proc-loadavg:`/proc/loadavg` file parser'
'--proc-locks:`/proc/locks` file parser'
'--proc-meminfo:`/proc/meminfo` file parser'
'--proc-modules:`/proc/modules` file parser'
'--proc-mtrr:`/proc/mtrr` file parser'
'--proc-pagetypeinfo:`/proc/pagetypeinfo` file parser'
'--proc-partitions:`/proc/partitions` file parser'
'--proc-slabinfo:`/proc/slabinfo` file parser'
'--proc-softirqs:`/proc/softirqs` file parser'
'--proc-stat:`/proc/stat` file parser'
'--proc-swaps:`/proc/swaps` file parser'
'--proc-uptime:`/proc/uptime` file parser'
'--proc-version:`/proc/version` file parser'
'--proc-vmallocinfo:`/proc/vmallocinfo` file parser'
'--proc-vmstat:`/proc/vmstat` file parser'
'--proc-zoneinfo:`/proc/zoneinfo` file parser'
'--proc-driver-rtc:`/proc/driver/rtc` file parser'
'--proc-net-arp:`/proc/net/arp` file parser'
'--proc-net-dev:`/proc/net/dev` file parser'
'--proc-net-dev-mcast:`/proc/net/dev_mcast` file parser'
'--proc-net-if-inet6:`/proc/net/if_inet6` file parser'
'--proc-net-igmp:`/proc/net/igmp` file parser'
'--proc-net-igmp6:`/proc/net/igmp6` file parser'
'--proc-net-ipv6-route:`/proc/net/ipv6_route` file parser'
'--proc-net-netlink:`/proc/net/netlink` file parser'
'--proc-net-netstat:`/proc/net/netstat` file parser'
'--proc-net-packet:`/proc/net/packet` file parser'
'--proc-net-protocols:`/proc/net/protocols` file parser'
'--proc-net-route:`/proc/net/route` file parser'
'--proc-net-tcp:`/proc/net/tcp` and `/proc/net/tcp6` file parser'
'--proc-net-unix:`/proc/net/unix` file parser'
'--proc-pid-fdinfo:`/proc/<pid>/fdinfo/<fd>` file parser'
'--proc-pid-io:`/proc/<pid>/io` file parser'
'--proc-pid-maps:`/proc/<pid>/maps` file parser'
'--proc-pid-mountinfo:`/proc/<pid>/mountinfo` file parser'
'--proc-pid-numa-maps:`/proc/<pid>/numa_maps` file parser'
'--proc-pid-smaps:`/proc/<pid>/smaps` file parser'
'--proc-pid-stat:`/proc/<pid>/stat` file parser'
'--proc-pid-statm:`/proc/<pid>/statm` file parser'
'--proc-pid-status:`/proc/<pid>/status` file parser'
'--ps:`ps` command parser'
'--resolve-conf:`/etc/resolve.conf` file parser'
'--route:`route` command parser'
'--rpm-qi:`rpm -qi` command parser'
'--rsync:`rsync` command parser'
'--rsync-s:`rsync` command streaming parser'
'--semver:Semantic Version string parser'
'--sfdisk:`sfdisk` command parser'
'--shadow:`/etc/shadow` file parser'
'--srt:SRT file parser'
'--ss:`ss` command parser'
'--ssh-conf:`ssh` config file and `ssh -G` command parser'
'--sshd-conf:`sshd` config file and `sshd -T` command parser'
'--stat:`stat` command parser'
'--stat-s:`stat` command streaming parser'
'--swapon:`swapon` command parser'
'--sysctl:`sysctl` command parser'
'--syslog:Syslog RFC 5424 string parser'
'--syslog-s:Syslog RFC 5424 string streaming parser'
'--syslog-bsd:Syslog RFC 3164 string parser'
'--syslog-bsd-s:Syslog RFC 3164 string streaming parser'
'--systemctl:`systemctl` command parser'
'--systemctl-lj:`systemctl list-jobs` command parser'
'--systemctl-ls:`systemctl list-sockets` command parser'
'--systemctl-luf:`systemctl list-unit-files` command parser'
'--systeminfo:`systeminfo` command parser'
'--time:`/usr/bin/time` command parser'
'--timedatectl:`timedatectl status` command parser'
'--timestamp:Unix Epoch Timestamp string parser'
'--toml:TOML file parser'
'--top:`top -b` command parser'
'--top-s:`top -b` command streaming parser'
'--tracepath:`tracepath` and `tracepath6` command parser'
'--traceroute:`traceroute` and `traceroute6` command parser'
'--tune2fs:`tune2fs -l` command parser'
'--udevadm:`udevadm info` command parser'
'--ufw:`ufw status` command parser'
'--ufw-appinfo:`ufw app info [application]` command parser'
'--uname:`uname -a` command parser'
'--update-alt-gs:`update-alternatives --get-selections` command parser'
'--update-alt-q:`update-alternatives --query` command parser'
'--upower:`upower` command parser'
'--uptime:`uptime` command parser'
'--url:URL string parser'
'--ver:Version string parser'
'--veracrypt:`veracrypt` command parser'
'--vmstat:`vmstat` command parser'
'--vmstat-s:`vmstat` command streaming parser'
'--w:`w` command parser'
'--wc:`wc` command parser'
'--who:`who` command parser'
'--x509-cert:X.509 PEM and DER certificate file parser'
'--x509-csr:X.509 PEM and DER certificate request file parser'
'--xml:XML file parser'
'--xrandr:`xrandr` command parser'
'--yaml:YAML file parser'
'--zipinfo:`zipinfo` command parser'
'--zpool-iostat:`zpool iostat` command parser'
'--zpool-status:`zpool status` command parser'
)
jc_options=(--force-color -C --debug -d --monochrome -m --meta-out -M --pretty -p --quiet -q --raw -r --slurp -s --unbuffer -u --yaml-out -y)
jc_options_describe=(
'--force-color:force color output (overrides -m)'
'-C:force color output (overrides -m)'
'--debug:debug (double for verbose debug)'
'-d:debug (double for verbose debug)'
'--monochrome:monochrome output'
'-m:monochrome output'
'--meta-out:add metadata to output including timestamp, etc.'
'-M:add metadata to output including timestamp, etc.'
'--pretty:pretty print output'
'-p:pretty print output'
'--quiet:suppress warnings (double to ignore streaming errors)'
'-q:suppress warnings (double to ignore streaming errors)'
'--raw:raw output'
'-r:raw output'
'--slurp:slurp multiple lines into an array'
'-s:slurp multiple lines into an array'
'--unbuffer:unbuffer output'
'-u:unbuffer output'
'--yaml-out:YAML output'
'-y:YAML output'
)
jc_about_options=(--about -a)
jc_about_options_describe=(
'--about:about jc'
'-a:about jc'
)
jc_about_mod_options=(--pretty -p --yaml-out -y --monochrome -m --force-color -C)
jc_about_mod_options_describe=(
'--pretty:pretty print output'
'-p:pretty print output'
'--yaml-out:YAML output'
'-y:YAML output'
'--monochrome:monochrome output'
'-m:monochrome output'
'--force-color:force color output (overrides -m)'
'-C:force color output (overrides -m)'
)
jc_help_options=(--help -h)
jc_help_options_describe=(
'--help:help (--help --parser_name for parser documentation)'
'-h:help (--help --parser_name for parser documentation)'
)
jc_special_options=(--version -v --bash-comp -B --zsh-comp -Z)
jc_special_options_describe=(
'--version:version info'
'-v:version info'
'--bash-comp:gen Bash completion: jc -B > /etc/bash_completion.d/jc'
'-B:gen Bash completion: jc -B > /etc/bash_completion.d/jc'
'--zsh-comp:gen Zsh completion: jc -Z > "${fpath[1]}/_jc"'
'-Z:gen Zsh completion: jc -Z > "${fpath[1]}/_jc"'
)
# if jc_about_options are found anywhere in the line, then only complete from jc_about_mod_options
for i in ${words:0:-1}; do
if (( $jc_about_options[(Ie)${i}] )); then
_describe 'commands' jc_about_mod_options_describe
return 0
fi
done
# if jc_help_options and a parser are found anywhere in the line, then no more completions
if
(
for i in ${words:0:-1}; do
if (( $jc_help_options[(Ie)${i}] )); then
return 0
fi
done
return 1
) && (
for i in ${words:0:-1}; do
if (( $jc_parsers[(Ie)${i}] )); then
return 0
fi
done
return 1
); then
return 0
fi
# if jc_help_options are found anywhere in the line, then only complete with parsers
for i in ${words:0:-1}; do
if (( $jc_help_options[(Ie)${i}] )); then
_describe 'commands' jc_parsers_describe
return 0
fi
done
# if special options are found anywhere in the line, then no more completions
for i in ${words:0:-1}; do
if (( $jc_special_options[(Ie)${i}] )); then
return 0
fi
done
# if magic command is found anywhere in the line, use called command's autocompletion
for i in ${words:0:-1}; do
if (( $jc_commands[(Ie)${i}] )); then
# hack to remove options between jc and the magic command
shift $(( ${#words} - 2 )) words
words[1,0]=(jc)
CURRENT=${#words}
# run the magic command's completions
_arguments '*::arguments:_normal'
return 0
fi
done
# if "/pr[oc]" (magic for Procfile parsers) is in the current word, complete with files/directories in the path
if [[ "${words[-1]}" =~ "/pr" ]]; then
# run files completion
_files
return 0
fi
# if a parser arg is found anywhere in the line, only show options and help options
for i in ${words:0:-1}; do
if (( $jc_parsers[(Ie)${i}] )); then
_describe 'commands' jc_options_describe -- jc_help_options_describe
return 0
fi
done
# default completion
_describe 'commands' jc_options_describe -- jc_about_options_describe -- jc_help_options_describe -- jc_special_options_describe -- jc_parsers_describe -- jc_commands_describe
}
_jc

86
doc2md.py Executable file
View File

@@ -0,0 +1,86 @@
#!/usr/bin/env python3
"""
Convert parser doc string to markdown
"""
import sys
import importlib
from inspect import isfunction, signature, cleandoc
import yapf # type: ignore
ignore_lib_functions = [
'cast',
'wraps',
'lru_cache',
'namedtuple'
]
mod_path = sys.argv[1]
mod_name = mod_path.split('.')[-1]
module = importlib.import_module(f'{mod_path}')
######## HEADER ########
header = f'''[Home](https://kellyjonbrazil.github.io/jc/)
<a id="{mod_path}"></a>
# {mod_path}
'''
summary = module.__doc__ or ''
functions = []
for attribute in dir(module):
if isfunction(getattr(module, attribute)) \
and not getattr(module, attribute).__name__.startswith('_'):
if 'jc.parsers.' in mod_path and not 'universal' in mod_path:
if attribute == 'parse':
functions.append(attribute)
else:
if not attribute in ignore_lib_functions:
functions.append(attribute)
######## TABLE OF CONTENTS ########
toc = f'## Table of Contents\n\n* [{mod_path}](#{mod_path})\n'
for api in functions:
toc = f'{toc} * [{api}](#{mod_path}.{api})\n'
######## API DOCS ########
api_docs = ''
for api in functions:
api_function = getattr(module, api)
this_header = f'<a id="{mod_path}.{api}"></a>\n\n### {api}\n'
this_sig = str(signature(api_function))
formatted_sig = yapf.yapf_api.FormatCode(f'def {api_function.__name__}{this_sig}:\n pass' )
formatted_sig = formatted_sig[0].split(':\n pass')[0]
this_name_and_sig = f'{this_header}\n```python\n{formatted_sig}\n```'
this_doc = cleandoc(api_function.__doc__)
api_docs = api_docs + this_name_and_sig + '\n\n' + this_doc + '\n\n'
######## FOOTER ########
footer = ''
if 'jc.parsers.' in mod_path and not 'universal' in mod_path:
footer = '### Parser Information\n'
comp = ', '.join(module.info.compatible)
ver = module.info.version
author = module.info.author
author_email = module.info.author_email
slurpable = 'slurpable' in module.info.tags
footer = footer + f'Compatibility: {comp}\n\n'
footer = footer + f'Source: [`jc/parsers/{mod_name}.py`](https://github.com/kellyjonbrazil/jc/blob/master/jc/parsers/{mod_name}.py)\n\n'
if slurpable:
footer = footer + 'This parser can be used with the `--slurp` command-line option.\n\n'
footer = footer + f'Version {ver} by {author} ({author_email})'
final_doc = ''
if 'jc.parsers.' in mod_path and not 'universal' in mod_path:
final_doc = header + '\n' + summary + '\n' + api_docs + footer
elif mod_path == 'jc':
final_doc = header + '\n' + summary
else:
final_doc = header + '\n' + toc + '\n' + summary + '\n\n' + api_docs
print(final_doc)

104
docgen.sh
View File

@@ -1,57 +1,53 @@
#!/bin/bash
# Generate docs.md
# Generate markdown document files (*.md)
# Requires the yapf python library
# use ./docgen all to generate all docs
cd jc
pydocmd simple jc+ > ../docs/readme.md
pydocmd simple utils+ > ../docs/utils.md
pydocmd simple jc.parsers.airport+ > ../docs/parsers/airport.md
pydocmd simple jc.parsers.airport_s+ > ../docs/parsers/airport_s.md
pydocmd simple jc.parsers.arp+ > ../docs/parsers/arp.md
pydocmd simple jc.parsers.blkid+ > ../docs/parsers/blkid.md
pydocmd simple jc.parsers.crontab+ > ../docs/parsers/crontab.md
pydocmd simple jc.parsers.crontab_u+ > ../docs/parsers/crontab_u.md
pydocmd simple jc.parsers.csv+ > ../docs/parsers/csv.md
pydocmd simple jc.parsers.df+ > ../docs/parsers/df.md
pydocmd simple jc.parsers.dig+ > ../docs/parsers/dig.md
pydocmd simple jc.parsers.dmidecode+ > ../docs/parsers/dmidecode.md
pydocmd simple jc.parsers.du+ > ../docs/parsers/du.md
pydocmd simple jc.parsers.env+ > ../docs/parsers/env.md
pydocmd simple jc.parsers.file+ > ../docs/parsers/file.md
pydocmd simple jc.parsers.free+ > ../docs/parsers/free.md
pydocmd simple jc.parsers.fstab+ > ../docs/parsers/fstab.md
pydocmd simple jc.parsers.group+ > ../docs/parsers/group.md
pydocmd simple jc.parsers.gshadow+ > ../docs/parsers/gshadow.md
pydocmd simple jc.parsers.history+ > ../docs/parsers/history.md
pydocmd simple jc.parsers.hosts+ > ../docs/parsers/hosts.md
pydocmd simple jc.parsers.id+ > ../docs/parsers/id.md
pydocmd simple jc.parsers.ifconfig+ > ../docs/parsers/ifconfig.md
pydocmd simple jc.parsers.ini+ > ../docs/parsers/ini.md
pydocmd simple jc.parsers.iptables+ > ../docs/parsers/iptables.md
pydocmd simple jc.parsers.jobs+ > ../docs/parsers/jobs.md
pydocmd simple jc.parsers.last+ > ../docs/parsers/last.md
pydocmd simple jc.parsers.ls+ > ../docs/parsers/ls.md
pydocmd simple jc.parsers.lsblk+ > ../docs/parsers/lsblk.md
pydocmd simple jc.parsers.lsmod+ > ../docs/parsers/lsmod.md
pydocmd simple jc.parsers.lsof+ > ../docs/parsers/lsof.md
pydocmd simple jc.parsers.mount+ > ../docs/parsers/mount.md
pydocmd simple jc.parsers.netstat+ > ../docs/parsers/netstat.md
pydocmd simple jc.parsers.ntpq+ > ../docs/parsers/ntpq.md
pydocmd simple jc.parsers.passwd+ > ../docs/parsers/passwd.md
pydocmd simple jc.parsers.pip_list+ > ../docs/parsers/pip_list.md
pydocmd simple jc.parsers.pip_show+ > ../docs/parsers/pip_show.md
pydocmd simple jc.parsers.ps+ > ../docs/parsers/ps.md
pydocmd simple jc.parsers.route+ > ../docs/parsers/route.md
pydocmd simple jc.parsers.shadow+ > ../docs/parsers/shadow.md
pydocmd simple jc.parsers.ss+ > ../docs/parsers/ss.md
pydocmd simple jc.parsers.stat+ > ../docs/parsers/stat.md
pydocmd simple jc.parsers.systemctl+ > ../docs/parsers/systemctl.md
pydocmd simple jc.parsers.systemctl_lj+ > ../docs/parsers/systemctl_lj.md
pydocmd simple jc.parsers.systemctl_ls+ > ../docs/parsers/systemctl_ls.md
pydocmd simple jc.parsers.systemctl_luf+ > ../docs/parsers/systemctl_luf.md
pydocmd simple jc.parsers.timedatectl+ > ../docs/parsers/timedatectl.md
pydocmd simple jc.parsers.uname+ > ../docs/parsers/uname.md
pydocmd simple jc.parsers.uptime+ > ../docs/parsers/uptime.md
pydocmd simple jc.parsers.w+ > ../docs/parsers/w.md
pydocmd simple jc.parsers.who+ > ../docs/parsers/who.md
pydocmd simple jc.parsers.xml+ > ../docs/parsers/xml.md
pydocmd simple jc.parsers.yaml+ > ../docs/parsers/yaml.md
(
echo Building docs for: package
../doc2md.py jc > ../docs/readme.md && echo "+++ package docs complete" || echo "*** PACKAGE DOCS FAILED ***"
) &
(
echo Building docs for: lib
../doc2md.py jc.lib > ../docs/lib.md && echo "+++ lib docs complete" || echo "*** LIB DOCS FAILED ***"
) &
(
echo Building docs for: utils
../doc2md.py jc.utils > ../docs/utils.md && echo "+++ utils docs complete" || echo "*** UTILS DOCS FAILED ***"
) &
(
echo Building docs for: streaming
../doc2md.py jc.streaming > ../docs/streaming.md && echo "+++ streaming docs complete" || echo "*** STREAMING DOCS FAILED ***"
) &
(
echo Building docs for: universal parser
../doc2md.py jc.parsers.universal > ../docs/parsers/universal.md && echo "+++ universal parser docs complete" || echo "*** UNIVERSAL PARSER DOCS FAILED ***"
) &
# a bit of inception here... jc is being used to help
# automate the generation of its own documentation. :)
# pull jc parser objects into a bash array from jq
# filter out any plugin parsers
parsers=()
while read -r value
do
parsers+=("$value")
done < <(jc -a | jq -c '.parsers[] | select(.plugin != true)')
for parser in "${parsers[@]}"; do
parser_name=$(jq -r '.name' <<< "$parser")
{
if [[ $1 == "all" ]] || ! git diff --quiet --exit-code HEAD~5 -- "parsers/${parser_name}.py"; then
echo "Building docs for: ${parser_name}"
../doc2md.py jc.parsers."${parser_name}" > ../docs/parsers/"${parser_name}".md && echo "+++ ${parser_name} docs complete" || echo "*** ${parser_name} DOCS FAILED ***"
fi
} &
done
wait
echo "Document Generation Complete"

274
docs/lib.md Normal file
View File

@@ -0,0 +1,274 @@
[Home](https://kellyjonbrazil.github.io/jc/)
<a id="jc.lib"></a>
# jc.lib
## Table of Contents
* [jc.lib](#jc.lib)
* [all_parser_info](#jc.lib.all_parser_info)
* [get_help](#jc.lib.get_help)
* [get_parser](#jc.lib.get_parser)
* [parse](#jc.lib.parse)
* [parser_info](#jc.lib.parser_info)
* [parser_mod_list](#jc.lib.parser_mod_list)
* [plugin_parser_mod_list](#jc.lib.plugin_parser_mod_list)
* [slurpable_parser_mod_list](#jc.lib.slurpable_parser_mod_list)
* [standard_parser_mod_list](#jc.lib.standard_parser_mod_list)
* [streaming_parser_mod_list](#jc.lib.streaming_parser_mod_list)
jc - JSON Convert lib module
<a id="jc.lib.all_parser_info"></a>
### all_parser_info
```python
def all_parser_info(
documentation: bool = False,
show_hidden: bool = False,
show_deprecated: bool = False) -> List[jc.jc_types.ParserInfoType]
```
Returns a list of dictionaries that includes metadata for all parser
modules. By default only non-hidden, non-deprecated parsers are
returned.
Parameters:
documentation: (boolean) include parser docstrings if True
show_hidden: (boolean) also show parsers marked as hidden
in their info metadata.
show_deprecated: (boolean) also show parsers marked as
deprecated in their info metadata.
<a id="jc.lib.get_help"></a>
### get_help
```python
def get_help(parser_mod_name: Union[str, module]) -> None
```
Show help screen for the selected parser.
This function will accept **module_name**, **cli-name**, and
**--argument-name** variants of the module name string as well as a
parser module object.
<a id="jc.lib.get_parser"></a>
### get_parser
```python
def get_parser(parser_mod_name: Union[str, module]) -> module
```
Return the parser module object and check that the module is a valid
parser module.
Parameters:
parser_mod_name: (string or Name of the parser module. This
Module) function will accept module_name,
cli-name, and --argument-name
variants of the module name.
If a Module is given and the Module
is a valid parser Module, then the
same Module is returned.
Returns:
Module: the parser Module object
Raises:
ModuleNotFoundError: If the Module is not found or is not a valid
parser Module, then a ModuleNotFoundError
exception is raised.
<a id="jc.lib.parse"></a>
### parse
```python
def parse(
parser_mod_name: Union[str, module],
data: Union[str, bytes, Iterable[str]],
quiet: bool = False,
raw: bool = False,
ignore_exceptions: Optional[bool] = None,
**kwargs
) -> Union[Dict[str, Any], List[Dict[str, Any]], Iterator[Dict[str, Any]]]
```
Parse the data (string or bytes) using the supplied parser (string or
module object).
This function provides a high-level API to simplify parser use. This
function will call built-in parsers and custom plugin parsers.
Example (standard parsers):
>>> import jc
>>> date_obj = jc.parse('date', 'Tue Jan 18 10:23:07 PST 2022')
>>> print(f'The year is: {date_obj["year"]}')
The year is: 2022
Example (streaming parsers):
>>> import jc
>>> ping_gen = jc.parse('ping_s', ping_output.splitlines())
>>> for item in ping_gen:
>>> print(f'Response time: {item["time_ms"]} ms')
Response time: 102 ms
Response time: 109 ms
...
To get a list of available parser module names, use `parser_mod_list()`.
Alternatively, a parser module object can be supplied:
>>> import jc
>>> jc_date = jc.get_parser('date')
>>> date_obj = jc.parse(jc_date, 'Tue Jan 18 10:23:07 PST 2022')
>>> print(f'The year is: {date_obj["year"]}')
The year is: 2022
You can also use the parser modules directly via `get_parser()`:
>>> import jc
>>> jc_date = jc.get_parser('date')
>>> date_obj = jc_date.parse('Tue Jan 18 10:23:07 PST 2022')
>>> print(f'The year is: {date_obj["year"]}')
The year is: 2022
Finally, you can access the low-level parser modules manually:
>>> import jc.parsers.date
>>> date_obj = jc.parsers.date.parse('Tue Jan 18 10:23:07 PST 2022')
>>> print(f'The year is: {date_obj["year"]}')
The year is: 2022
Though, accessing plugin parsers directly is a bit more cumbersome, so
this higher-level API is recommended. Here is how you can access plugin
parsers without this API:
>>> import os
>>> import sys
>>> import jc.appdirs
>>> data_dir = jc.appdirs.user_data_dir('jc', 'jc')
>>> local_parsers_dir = os.path.join(data_dir, 'jcparsers')
>>> sys.path.append(local_parsers_dir)
>>> import my_custom_parser
>>> my_custom_parser.parse('command_data')
Parameters:
parser_mod_name: (string or name of the parser module. This
Module) function will accept module_name,
cli-name, and --argument-name
variants of the module name.
A Module object can also be passed
directly or via get_parser()
data: (string or data to parse (string or bytes for
bytes or standard parsers, iterable of
iterable) strings for streaming parsers)
raw: (boolean) output preprocessed JSON if True
quiet: (boolean) suppress warning messages if True
ignore_exceptions: (boolean) ignore parsing exceptions if True
(streaming parsers only)
Returns:
Standard Parsers: Dictionary or List of Dictionaries
Streaming Parsers: Generator Object containing Dictionaries
<a id="jc.lib.parser_info"></a>
### parser_info
```python
def parser_info(parser_mod_name: Union[str, module],
documentation: bool = False) -> jc.jc_types.ParserInfoType
```
Returns a dictionary that includes the parser module metadata.
Parameters:
parser_mod_name: (string or name of the parser module. This
Module) function will accept module_name,
cli-name, and --argument-name
variants of the module name as well
as a parser module object.
documentation: (boolean) include parser docstring if True
<a id="jc.lib.parser_mod_list"></a>
### parser_mod_list
```python
def parser_mod_list(show_hidden: bool = False,
show_deprecated: bool = False) -> List[str]
```
Returns a list of all available parser module names.
<a id="jc.lib.plugin_parser_mod_list"></a>
### plugin_parser_mod_list
```python
def plugin_parser_mod_list(show_hidden: bool = False,
show_deprecated: bool = False) -> List[str]
```
Returns a list of plugin parser module names. This function is a
subset of `parser_mod_list()`.
<a id="jc.lib.slurpable_parser_mod_list"></a>
### slurpable_parser_mod_list
```python
def slurpable_parser_mod_list(show_hidden: bool = False,
show_deprecated: bool = False) -> List[str]
```
Returns a list of slurpable parser module names. This function is a
subset of `parser_mod_list()`.
<a id="jc.lib.standard_parser_mod_list"></a>
### standard_parser_mod_list
```python
def standard_parser_mod_list(show_hidden: bool = False,
show_deprecated: bool = False) -> List[str]
```
Returns a list of standard parser module names. This function is a
subset of `parser_mod_list()` and does not contain any streaming
parsers.
<a id="jc.lib.streaming_parser_mod_list"></a>
### streaming_parser_mod_list
```python
def streaming_parser_mod_list(show_hidden: bool = False,
show_deprecated: bool = False) -> List[str]
```
Returns a list of streaming parser module names. This function is a
subset of `parser_mod_list()`.

255
docs/parsers/acpi.md Normal file
View File

@@ -0,0 +1,255 @@
[Home](https://kellyjonbrazil.github.io/jc/)
<a id="jc.parsers.acpi"></a>
# jc.parsers.acpi
jc - JSON Convert `acpi` command output parser
Usage (cli):
$ acpi -V | jc --acpi
or
$ jc acpi -V
Usage (module):
import jc
result = jc.parse('acpi', acpi_command_output)
Schema:
[
{
"type": string,
"id": integer,
"state": string,
"charge_percent": integer,
"until_charged": string,
"until_charged_hours": integer,
"until_charged_minuts": integer,
"until_charged_seconds": integer,
"until_charged_total_seconds": integer,
"charge_remaining": string,
"charge_remaining_hours": integer,
"charge_remaining_minutes": integer,
"charge_remaining_seconds": integer,
"charge_remaining_total_seconds": integer,
"design_capacity_mah": integer,
"last_full_capacity": integer,
"last_full_capacity_percent": integer,
"on-line": boolean,
"mode": string,
"temperature": float,
"temperature_unit": string,
"trip_points": [
{
"id": integer,
"switches_to_mode": string,
"temperature": float,
"temperature_unit": string
}
],
"messages": [
string
]
}
]
Examples:
$ acpi -V | jc --acpi -p
[
{
"type": "Battery",
"id": 0,
"state": "Charging",
"charge_percent": 71,
"until_charged": "00:29:20",
"design_capacity_mah": 2110,
"last_full_capacity": 2271,
"last_full_capacity_percent": 100,
"until_charged_hours": 0,
"until_charged_minutes": 29,
"until_charged_seconds": 20,
"until_charged_total_seconds": 1760
},
{
"type": "Adapter",
"id": 0,
"on-line": true
},
{
"type": "Thermal",
"id": 0,
"mode": "ok",
"temperature": 46.0,
"temperature_unit": "C",
"trip_points": [
{
"id": 0,
"switches_to_mode": "critical",
"temperature": 127.0,
"temperature_unit": "C"
},
{
"id": 1,
"switches_to_mode": "hot",
"temperature": 127.0,
"temperature_unit": "C"
}
]
},
{
"type": "Cooling",
"id": 0,
"messages": [
"Processor 0 of 10"
]
},
{
"type": "Cooling",
"id": 1,
"messages": [
"Processor 0 of 10"
]
},
{
"type": "Cooling",
"id": 2,
"messages": [
"x86_pkg_temp no state information available"
]
},
{
"type": "Cooling",
"id": 3,
"messages": [
"Processor 0 of 10"
]
},
{
"type": "Cooling",
"id": 4,
"messages": [
"intel_powerclamp no state information available"
]
},
{
"type": "Cooling",
"id": 5,
"messages": [
"Processor 0 of 10"
]
}
]
$ acpi -V | jc --acpi -p -r
[
{
"type": "Battery",
"id": "0",
"state": "Charging",
"charge_percent": "71",
"until_charged": "00:29:20",
"design_capacity_mah": "2110",
"last_full_capacity": "2271",
"last_full_capacity_percent": "100"
},
{
"type": "Adapter",
"id": "0",
"on-line": true
},
{
"type": "Thermal",
"id": "0",
"mode": "ok",
"temperature": "46.0",
"temperature_unit": "C",
"trip_points": [
{
"id": "0",
"switches_to_mode": "critical",
"temperature": "127.0",
"temperature_unit": "C"
},
{
"id": "1",
"switches_to_mode": "hot",
"temperature": "127.0",
"temperature_unit": "C"
}
]
},
{
"type": "Cooling",
"id": "0",
"messages": [
"Processor 0 of 10"
]
},
{
"type": "Cooling",
"id": "1",
"messages": [
"Processor 0 of 10"
]
},
{
"type": "Cooling",
"id": "2",
"messages": [
"x86_pkg_temp no state information available"
]
},
{
"type": "Cooling",
"id": "3",
"messages": [
"Processor 0 of 10"
]
},
{
"type": "Cooling",
"id": "4",
"messages": [
"intel_powerclamp no state information available"
]
},
{
"type": "Cooling",
"id": "5",
"messages": [
"Processor 0 of 10"
]
}
]
<a id="jc.parsers.acpi.parse"></a>
### parse
```python
def parse(data, raw=False, quiet=False)
```
Main text parsing function
Parameters:
data: (string) text data to parse
raw: (boolean) unprocessed output if True
quiet: (boolean) suppress warning messages if True
Returns:
List of Dictionaries. Raw or processed structured data.
### Parser Information
Compatibility: linux
Source: [`jc/parsers/acpi.py`](https://github.com/kellyjonbrazil/jc/blob/master/jc/parsers/acpi.py)
Version 1.7 by Kelly Brazil (kellyjonbrazil@gmail.com)

View File

@@ -1,16 +1,44 @@
[Home](https://kellyjonbrazil.github.io/jc/)
<a id="jc.parsers.airport"></a>
# jc.parsers.airport
jc - JSON CLI output utility airport -I Parser
Usage:
jc - JSON Convert `airport -I` command output parser
specify --airport as the first argument if the piped input is coming from airport -I (OSX)
The `airport` program can be found at `/System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport`.
This program can be found at:
/System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport
Usage (cli):
Compatibility:
$ airport -I | jc --airport
'darwin'
or
$ jc airport -I
Usage (module):
import jc
result = jc.parse('airport', airport_command_output)
Schema:
{
"agrctlrssi": integer,
"agrextrssi": integer,
"agrctlnoise": integer,
"agrextnoise": integer,
"state": string,
"op_mode": string,
"lasttxrate": integer,
"maxrate": integer,
"lastassocstatus": integer,
"802_11_auth": string,
"link_auth": string,
"bssid": string,
"ssid": string,
"mcs": integer,
"channel": string
}
Examples:
@@ -52,47 +80,12 @@ Examples:
"channel": "48,80"
}
## info
<a id="jc.parsers.airport.parse"></a>
### parse
```python
info(self, /, *args, **kwargs)
```
## process
```python
process(proc_data)
```
Final processing to conform to the schema.
Parameters:
proc_data: (dictionary) raw structured data to process
Returns:
Dictionary. Structured data with the following schema:
{
"agrctlrssi": integer,
"agrextrssi": integer,
"agrctlnoise": integer,
"agrextnoise": integer,
"state": string,
"op_mode": string,
"lasttxrate": integer,
"maxrate": integer,
"lastassocstatus": integer,
"802_11_auth": string,
"link_auth": string,
"bssid": string,
"ssid": string,
"mcs": integer,
"channel": string
}
## parse
```python
parse(data, raw=False, quiet=False)
def parse(data, raw=False, quiet=False)
```
Main text parsing function
@@ -100,10 +93,16 @@ Main text parsing function
Parameters:
data: (string) text data to parse
raw: (boolean) output preprocessed JSON if True
raw: (boolean) unprocessed output if True
quiet: (boolean) suppress warning messages if True
Returns:
Dictionary. Raw or processed structured data.
### Parser Information
Compatibility: darwin
Source: [`jc/parsers/airport.py`](https://github.com/kellyjonbrazil/jc/blob/master/jc/parsers/airport.py)
Version 1.5 by Kelly Brazil (kellyjonbrazil@gmail.com)

View File

@@ -1,16 +1,40 @@
[Home](https://kellyjonbrazil.github.io/jc/)
<a id="jc.parsers.airport_s"></a>
# jc.parsers.airport_s
jc - JSON CLI output utility airport -s Parser
Usage:
jc - JSON Convert `airport -s` command output parser
specify --airport as the first argument if the piped input is coming from airport -s (OSX)
The `airport` program can be found at `/System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport`.
This program can be found at:
/System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport
Usage (cli):
Compatibility:
$ airport -s | jc --airport-s
'darwin'
or
$ jc airport -s
Usage (module):
import jc
result = jc.parse('airport_s', airport_s_command_output)
Schema:
[
{
"ssid": string,
"bssid": string,
"rssi": integer,
"channel": string,
"ht": boolean,
"cc": string,
"security": [
string,
]
}
]
Examples:
@@ -84,42 +108,12 @@ Examples:
...
]
## info
<a id="jc.parsers.airport_s.parse"></a>
### parse
```python
info(self, /, *args, **kwargs)
```
## process
```python
process(proc_data)
```
Final processing to conform to the schema.
Parameters:
proc_data: (dictionary) raw structured data to process
Returns:
List of dictionaries. Structured data with the following schema:
[
{
"ssid": string,
"bssid": string,
"rssi": integer,
"channel": string,
"ht": boolean,
"cc": string,
"security": [
string,
]
}
]
## parse
```python
parse(data, raw=False, quiet=False)
def parse(data, raw=False, quiet=False)
```
Main text parsing function
@@ -127,10 +121,16 @@ Main text parsing function
Parameters:
data: (string) text data to parse
raw: (boolean) output preprocessed JSON if True
raw: (boolean) unprocessed output if True
quiet: (boolean) suppress warning messages if True
Returns:
List of dictionaries. Raw or processed structured data.
List of Dictionaries. Raw or processed structured data.
### Parser Information
Compatibility: darwin
Source: [`jc/parsers/airport_s.py`](https://github.com/kellyjonbrazil/jc/blob/master/jc/parsers/airport_s.py)
Version 1.6 by Kelly Brazil (kellyjonbrazil@gmail.com)

View File

@@ -0,0 +1,180 @@
[Home](https://kellyjonbrazil.github.io/jc/)
<a id="jc.parsers.apt_cache_show"></a>
# jc.parsers.apt_cache_show
jc - JSON Convert `apt-cache show` command parser
Usage (cli):
$ apt-cache show | jc --apt-cache-show
Usage (module):
import jc
result = jc.parse('apt_cache_show', apt_cache_show_output)
Schema:
[
{
"package": string,
"version": string,
"installed_size": integer,
"maintainer": string,
"architecture": string,
"depends": [
string
],
"pre_depends": [
string
],
"recommends": [
string
],
"suggests": [
string
],
"conflicts": [
string
],
"breaks": [
string
],
"description_md5": string,
"multi_arch": string,
"homepage": string,
"section": string,
"priority": string,
"filename": string,
"size": integer,
"sha256": string,
"description": string
}
]
Examples:
$ apt-cache show | jc --apt-cache-show -p
[
{
"package": "systemd",
"version": "247.3-6~bpo10+1",
"installed_size": 16121,
"maintainer": "Debian systemd Maintainers <pkg-systemd-maintaine..",
"architecture": "amd64",
"depends": [
"libacl1 (>= 2.2.23)",
"libapparmor1 (>= 2.13)",
"libaudit1 (>= 1:2.2.1)",
"libcap2 (>= 1:2.10)",
"libcryptsetup12 (>= 2:2.0.1)",
"libgnutls30 (>= 3.6.6)",
"libgpg-error0 (>= 1.14)",
"libip4tc0 (>= 1.6.0+snapshot20161117)",
"libkmod2 (>= 5~)",
"liblz4-1 (>= 0.0~r130)",
"libmount1 (>= 2.30)",
"libpam0g (>= 0.99.7.1)",
"libseccomp2 (>= 2.3.1)",
"libsystemd0 (= 247.3-6~bpo10+1)",
"systemd-timesyncd | time-daemon",
"util-linux (>= 2.27.1)",
"mount (>= 2.26)",
"adduser"
],
"pre_depends": [
"libblkid1 (>= 2.24)",
"libc6 (>= 2.28)",
"libgcrypt20 (>= 1.8.0)",
"liblz4-1 (>= 0.0~r122)",
"liblzma5 (>= 5.1.1alpha+20120614)",
"libselinux1 (>= 2.1.9)",
"libzstd1 (>= 1.4.0)"
],
"recommends": [
"dbus"
],
"suggests": [
"systemd-container",
"policykit-1"
],
"conflicts": [
"consolekit",
"libpam-ck-connector"
],
"breaks": [
"python-dbusmock (<< 0.18)",
"python3-dbusmock (<< 0.18)",
"resolvconf (<< 1.83~)",
"systemd-shim (<< 10-4~)",
"udev (<< 247~)"
],
"description_md5": "19399579cbc0c47a303288bf15eadcd4",
"multi_arch": "foreign",
"homepage": "https://www.freedesktop.org/wiki/Software/systemd",
"section": "admin",
"priority": "important",
"filename": "pool/main/s/systemd/systemd_247.3-6~bpo10+1_amd64.deb",
"size": 4382056,
"sha256": "2035450655ad02faa0f75dc952128b503e51df5795c67273c0f6...",
"description": "system and service manager systemd is a system..."
},
...
]
$ apt-cache show | jc --apt-cache-show -p -r
[
{
"package": "systemd",
"version": "247.3-6~bpo10+1",
"installed_size": "16121",
"maintainer": "Debian systemd Maintainers <pkg-systemd-maintain...",
"architecture": "amd64",
"depends": "libacl1 (>= 2.2.23), libapparmor1 (>= 2.13), libaud...",
"pre_depends": "libblkid1 (>= 2.24), libc6 (>= 2.28), libgcrypt...",
"recommends": "dbus",
"suggests": "systemd-container, policykit-1",
"conflicts": "consolekit, libpam-ck-connector",
"breaks": "python-dbusmock (<< 0.18), python3-dbusmock (<< 0.18...",
"description_md5": "19399579cbc0c47a303288bf15eadcd4",
"multi_arch": "foreign",
"homepage": "https://www.freedesktop.org/wiki/Software/systemd",
"section": "admin",
"priority": "important",
"filename": "pool/main/s/systemd/systemd_247.3-6~bpo10+1_amd64.deb",
"size": "4382056",
"sha256": "2035450655ad02faa0f75dc952128b503e51df5795c67273c0f6...",
"description": "system and service manager systemd is a system..."
},
...
]
<a id="jc.parsers.apt_cache_show.parse"></a>
### parse
```python
def parse(data: str,
raw: bool = False,
quiet: bool = False) -> List[Dict[str, Any]]
```
Main text parsing function
Parameters:
data: (string) text data to parse
raw: (boolean) unprocessed output if True
quiet: (boolean) suppress warning messages if True
Returns:
List of Dictionaries. Raw or processed structured data.
### Parser Information
Compatibility: linux
Source: [`jc/parsers/apt_cache_show.py`](https://github.com/kellyjonbrazil/jc/blob/master/jc/parsers/apt_cache_show.py)
Version 1.0 by Kelly Brazil (kellyjonbrazil@gmail.com)

201
docs/parsers/apt_get_sqq.md Normal file
View File

@@ -0,0 +1,201 @@
[Home](https://kellyjonbrazil.github.io/jc/)
<a id="jc.parsers.apt_get_sqq"></a>
# jc.parsers.apt_get_sqq
jc - JSON Convert `apt-get -sqq` command output parser
Requires the `-sqq` options in `apt-get`.
Usage (cli):
$ apt-get -sqq | jc --apt-get-sqq
or
$ jc apt-get -sqq
Usage (module):
import jc
result = jc.parse('apt_get_sqq', apt_get_sqq_command_output)
Schema:
[
{
"operation": string, # configure, remove, or unpack
"package": string,
"broken": string/null,
"proposed_pkg_ver": string,
"existing_pkg_ver": string/null,
"architecture": string
}
]
Examples:
$ apt-get -sqq | jc --apt-get-sqq -p
[
{
"operation": "unpack",
"package": "dpkg",
"broken": "1.19.7",
"proposed_pkg_ver": "1.19.8 Debian:10.13/oldstable",
"existing_pkg_ver": "Debian-Security:10/oldstable",
"architecture": "amd64"
},
{
"operation": "unpack",
"package": "dpkg",
"broken": null,
"proposed_pkg_ver": "1.19.8 Debian:10.13/oldstable",
"existing_pkg_ver": "Debian-Security:10/oldstable",
"architecture": "amd64"
},
{
"operation": "configure",
"package": "dpkg",
"broken": "1.19.7",
"proposed_pkg_ver": "1.19.8 Debian:10.13/oldstable",
"existing_pkg_ver": "Debian-Security:10/oldstable",
"architecture": "amd64"
},
{
"operation": "remove",
"package": "dpkg",
"broken": "1.19.7",
"proposed_pkg_ver": "1.19.8 Debian:10.13/oldstable",
"existing_pkg_ver": "Debian-Security:10/oldstable",
"architecture": "amd64"
},
{
"operation": "unpack",
"package": "base-files",
"broken": "10.3+deb10u4",
"proposed_pkg_ver": "10.3+deb10u13 Debian:10.13/oldstable",
"existing_pkg_ver": null,
"architecture": "amd64"
},
{
"operation": "configure",
"package": "base-files",
"broken": null,
"proposed_pkg_ver": "10.3+deb10u13 Debian:10.13/oldstable",
"existing_pkg_ver": null,
"architecture": "amd64"
},
{
"operation": "unpack",
"package": "dpkg",
"broken": "1.19.7",
"proposed_pkg_ver": "1.19.8 Debian:10.13/oldstable",
"existing_pkg_ver": "Debian-Security:10/oldstable",
"architecture": "amd64"
},
{
"operation": "configure",
"package": "dpkg",
"broken": null,
"proposed_pkg_ver": "1.19.8 Debian:10.13/oldstable",
"existing_pkg_ver": "Debian-Security:10/oldstable",
"architecture": "amd64"
}
]
$ apt-get -sqq | jc --apt-get-sqq -p -r
[
{
"operation": "Inst",
"package": "dpkg",
"broken": "1.19.7",
"proposed_pkg_ver": "1.19.8 Debian:10.13/oldstable",
"existing_pkg_ver": "Debian-Security:10/oldstable",
"architecture": "amd64"
},
{
"operation": "Inst",
"package": "dpkg",
"broken": null,
"proposed_pkg_ver": "1.19.8 Debian:10.13/oldstable",
"existing_pkg_ver": "Debian-Security:10/oldstable",
"architecture": "amd64"
},
{
"operation": "Conf",
"package": "dpkg",
"broken": "1.19.7",
"proposed_pkg_ver": "1.19.8 Debian:10.13/oldstable",
"existing_pkg_ver": "Debian-Security:10/oldstable",
"architecture": "amd64"
},
{
"operation": "Remv",
"package": "dpkg",
"broken": "1.19.7",
"proposed_pkg_ver": "1.19.8 Debian:10.13/oldstable",
"existing_pkg_ver": "Debian-Security:10/oldstable",
"architecture": "amd64"
},
{
"operation": "Inst",
"package": "base-files",
"broken": "10.3+deb10u4",
"proposed_pkg_ver": "10.3+deb10u13 Debian:10.13/oldstable",
"existing_pkg_ver": null,
"architecture": "amd64"
},
{
"operation": "Conf",
"package": "base-files",
"broken": null,
"proposed_pkg_ver": "10.3+deb10u13 Debian:10.13/oldstable",
"existing_pkg_ver": null,
"architecture": "amd64"
},
{
"operation": "Inst",
"package": "dpkg",
"broken": "1.19.7",
"proposed_pkg_ver": "1.19.8 Debian:10.13/oldstable",
"existing_pkg_ver": "Debian-Security:10/oldstable",
"architecture": "amd64"
},
{
"operation": "Conf",
"package": "dpkg",
"broken": null,
"proposed_pkg_ver": "1.19.8 Debian:10.13/oldstable",
"existing_pkg_ver": "Debian-Security:10/oldstable",
"architecture": "amd64"
}
]
<a id="jc.parsers.apt_get_sqq.parse"></a>
### parse
```python
def parse(data: str,
raw: bool = False,
quiet: bool = False) -> List[Dict[str, Any]]
```
Main text parsing function
Parameters:
data: (string) text data to parse
raw: (boolean) unprocessed output if True
quiet: (boolean) suppress warning messages if True
Returns:
List of Dictionaries. Raw or processed structured data.
### Parser Information
Compatibility: linux
Source: [`jc/parsers/apt_get_sqq.py`](https://github.com/kellyjonbrazil/jc/blob/master/jc/parsers/apt_get_sqq.py)
Version 1.0 by Kelly Brazil (kellyjonbrazil@gmail.com)

View File

@@ -1,17 +1,39 @@
[Home](https://kellyjonbrazil.github.io/jc/)
<a id="jc.parsers.arp"></a>
# jc.parsers.arp
jc - JSON CLI output utility arp Parser
Usage:
jc - JSON Convert `arp` command output parser
specify --arp as the first argument if the piped input is coming from:
Supports `arp` and `arp -a` output.
arp
or
arp -a
Usage (cli):
Compatibility:
$ arp | jc --arp
'linux', 'aix', 'freebsd', 'darwin'
or
$ jc arp
Usage (module):
import jc
result = jc.parse('arp', arp_command_output)
Schema:
[
{
"name": string,
"address": string,
"hwtype": string,
"hwaddress": string,
"flags_mask": string,
"iface": string,
"permanent": boolean,
"expires": integer
}
]
Examples:
@@ -95,42 +117,12 @@ Examples:
}
]
## info
<a id="jc.parsers.arp.parse"></a>
### parse
```python
info(self, /, *args, **kwargs)
```
## process
```python
process(proc_data)
```
Final processing to conform to the schema.
Parameters:
proc_data: (dictionary) raw structured data to process
Returns:
List of dictionaries. Structured data with the following schema:
[
{
"name": string,
"address": string,
"hwtype": string,
"hwaddress": string,
"flags_mask": string,
"iface": string,
"permanent": boolean,
"expires": integer
}
]
## parse
```python
parse(data, raw=False, quiet=False)
def parse(data: str, raw: bool = False, quiet: bool = False) -> List[Dict]
```
Main text parsing function
@@ -138,10 +130,16 @@ Main text parsing function
Parameters:
data: (string) text data to parse
raw: (boolean) output preprocessed JSON if True
raw: (boolean) unprocessed output if True
quiet: (boolean) suppress warning messages if True
Returns:
List of dictionaries. Raw or processed structured data.
List of Dictionaries. Raw or processed structured data.
### Parser Information
Compatibility: linux, aix, freebsd, darwin
Source: [`jc/parsers/arp.py`](https://github.com/kellyjonbrazil/jc/blob/master/jc/parsers/arp.py)
Version 1.12 by Kelly Brazil (kellyjonbrazil@gmail.com)

149
docs/parsers/asciitable.md Normal file
View File

@@ -0,0 +1,149 @@
[Home](https://kellyjonbrazil.github.io/jc/)
<a id="jc.parsers.asciitable"></a>
# jc.parsers.asciitable
jc - JSON Convert `asciitable` parser
This parser converts ASCII and Unicode text tables with single-line rows.
Column headers must be at least two spaces apart from each other and must
be unique. For best results, column headers should be left-justified. If
column separators are present, then non-left-justified headers will be fixed
automatically.
Row separators are optional and are ignored. Each non-row-separator line is
considered a separate row in the table.
For example:
╒══════════╤═════════╤════════╕
│ foo │ bar │ baz │
╞══════════╪═════════╪════════╡
│ good day │ │ 12345 │
├──────────┼─────────┼────────┤
│ hi there │ abc def │ 3.14 │
╘══════════╧═════════╧════════╛
or
+-----------------------------+
| foo bar baz |
+-----------------------------+
| good day 12345 |
| hi there abc def 3.14 |
+-----------------------------+
or
| foo | bar | baz |
|----------|---------|--------|
| good day | | 12345 |
| hi there | abc def | 3.14 |
or
foo bar baz
--------- -------- ------
good day 12345
hi there abc def 3.14
or
foo bar baz
good day 12345
hi there abc def 3.14
etc...
Headers (keys) are converted to snake-case. All values are returned as
strings, except empty strings, which are converted to None/null.
> Note: To preserve the case of the keys use the `-r` cli option or
> `raw=True` argument in `parse()`.
Usage (cli):
$ cat table.txt | jc --asciitable
Usage (module):
import jc
result = jc.parse('asciitable', asciitable_string)
Schema:
[
{
"column_name1": string, # empty string is null
"column_name2": string # empty string is null
}
]
Examples:
$ echo '
> ╒══════════╤═════════╤════════╕
> │ foo │ bar │ baz │
> ╞══════════╪═════════╪════════╡
> │ good day │ │ 12345 │
> ├──────────┼─────────┼────────┤
> │ hi there │ abc def │ 3.14 │
> ╘══════════╧═════════╧════════╛' | jc --asciitable -p
[
{
"foo": "good day",
"bar": null,
"baz": "12345"
},
{
"foo": "hi there",
"bar": "abc def",
"baz": "3.14"
}
]
$ echo '
> foo bar baz
> --------- -------- ------
> good day 12345
> hi there abc def 3.14' | jc --asciitable -p
[
{
"foo": "good day",
"bar": null,
"baz": "12345"
},
{
"foo": "hi there",
"bar": "abc def",
"baz": "3.14"
}
]
<a id="jc.parsers.asciitable.parse"></a>
### parse
```python
def parse(data: str, raw: bool = False, quiet: bool = False) -> List[Dict]
```
Main text parsing function
Parameters:
data: (string) text data to parse
raw: (boolean) unprocessed output if True
quiet: (boolean) suppress warning messages if True
Returns:
List of Dictionaries. Raw or processed structured data.
### Parser Information
Compatibility: linux, darwin, cygwin, win32, aix, freebsd
Source: [`jc/parsers/asciitable.py`](https://github.com/kellyjonbrazil/jc/blob/master/jc/parsers/asciitable.py)
Version 1.2 by Kelly Brazil (kellyjonbrazil@gmail.com)

View File

@@ -0,0 +1,134 @@
[Home](https://kellyjonbrazil.github.io/jc/)
<a id="jc.parsers.asciitable_m"></a>
# jc.parsers.asciitable_m
jc - JSON Convert `asciitable-m` parser
This parser converts various styles of ASCII and Unicode text tables with
multi-line rows. Tables must have a header row and separator line between
rows.
For example:
╒══════════╤═════════╤════════╕
│ foo │ bar baz │ fiz │
│ │ │ buz │
╞══════════╪═════════╪════════╡
│ good day │ 12345 │ │
│ mate │ │ │
├──────────┼─────────┼────────┤
│ hi there │ abc def │ 3.14 │
│ │ │ │
╘══════════╧═════════╧════════╛
Cells with multiple lines within rows will be joined with a newline
character ('\\n').
Headers (keys) are converted to snake-case and newlines between multi-line
headers are joined with an underscore. All values are returned as strings,
except empty strings, which are converted to None/null.
> Note: To preserve the case of the keys use the `-r` cli option or
> `raw=True` argument in `parse()`.
> Note: table column separator characters (e.g. `|`) cannot be present
> inside the cell data. If detected, a warning message will be printed to
> `STDERR` and the line will be skipped. The warning message can be
> suppressed by using the `-q` command option or by setting `quiet=True` in
> `parse()`.
Usage (cli):
$ cat table.txt | jc --asciitable-m
Usage (module):
import jc
result = jc.parse('asciitable_m', asciitable-string)
Schema:
[
{
"column_name1": string, # empty string is null
"column_name2": string # empty string is null
}
]
Examples:
$ echo '
> +----------+---------+--------+
> | foo | bar | baz |
> | | | buz |
> +==========+=========+========+
> | good day | 12345 | |
> | mate | | |
> +----------+---------+--------+
> | hi there | abc def | 3.14 |
> | | | |
> +==========+=========+========+' | jc --asciitable-m -p
[
{
"foo": "good day\\nmate",
"bar": "12345",
"baz_buz": null
},
{
"foo": "hi there",
"bar": "abc def",
"baz_buz": "3.14"
}
]
$ echo '
> ╒══════════╤═════════╤════════╕
> │ foo │ bar │ baz │
> │ │ │ buz │
> ╞══════════╪═════════╪════════╡
> │ good day │ 12345 │ │
> │ mate │ │ │
> ├──────────┼─────────┼────────┤
> │ hi there │ abc def │ 3.14 │
> │ │ │ │
> ╘══════════╧═════════╧════════╛' | jc --asciitable-m -p
[
{
"foo": "good day\\nmate",
"bar": "12345",
"baz_buz": null
},
{
"foo": "hi there",
"bar": "abc def",
"baz_buz": "3.14"
}
]
<a id="jc.parsers.asciitable_m.parse"></a>
### parse
```python
def parse(data: str, raw: bool = False, quiet: bool = False) -> List[Dict]
```
Main text parsing function
Parameters:
data: (string) text data to parse
raw: (boolean) unprocessed output if True
quiet: (boolean) suppress warning messages if True
Returns:
List of Dictionaries. Raw or processed structured data.
### Parser Information
Compatibility: linux, darwin, cygwin, win32, aix, freebsd
Source: [`jc/parsers/asciitable_m.py`](https://github.com/kellyjonbrazil/jc/blob/master/jc/parsers/asciitable_m.py)
Version 1.2 by Kelly Brazil (kellyjonbrazil@gmail.com)

View File

@@ -1,99 +1,24 @@
[Home](https://kellyjonbrazil.github.io/jc/)
<a id="jc.parsers.blkid"></a>
# jc.parsers.blkid
jc - JSON CLI output utility blkid Parser
Usage:
jc - JSON Convert `blkid` command output parser
specify --blkid as the first argument if the piped input is coming from blkid
Usage (cli):
Compatibility:
$ blkid | jc --blkid
'linux'
or
Examples:
$ jc blkid
$ blkid | jc --blkid -p
[
{
"device": "/dev/sda1",
"uuid": "05d927ab-5875-49e4-ada1-7f46cb32c932",
"type": "xfs"
},
{
"device": "/dev/sda2",
"uuid": "3klkIj-w1kk-DkJi-0XBJ-y3i7-i2Ac-vHqWBM",
"type": "LVM2_member"
},
{
"device": "/dev/mapper/centos-root",
"uuid": "07d718ff-950c-4e5b-98f0-42a1147c77d9",
"type": "xfs"
},
{
"device": "/dev/mapper/centos-swap",
"uuid": "615eb89a-bcbf-46fd-80e3-c483ff5c931f",
"type": "swap"
}
]
Usage (module):
$ sudo blkid -o udev -ip /dev/sda2 | jc --blkid -p
[
{
"id_fs_uuid": "3klkIj-w1kk-DkJi-0XBJ-y3i7-i2Ac-vHqWBM",
"id_fs_uuid_enc": "3klkIj-w1kk-DkJi-0XBJ-y3i7-i2Ac-vHqWBM",
"id_fs_version": "LVM2\x20001",
"id_fs_type": "LVM2_member",
"id_fs_usage": "raid",
"id_iolimit_minimum_io_size": 512,
"id_iolimit_physical_sector_size": 512,
"id_iolimit_logical_sector_size": 512,
"id_part_entry_scheme": "dos",
"id_part_entry_type": "0x8e",
"id_part_entry_number": 2,
"id_part_entry_offset": 2099200,
"id_part_entry_size": 39843840,
"id_part_entry_disk": "8:0"
}
]
import jc
result = jc.parse('blkid', blkid_command_output)
$ sudo blkid -ip /dev/sda1 | jc --blkid -p -r
[
{
"devname": "/dev/sda1",
"uuid": "05d927bb-5875-49e3-ada1-7f46cb31c932",
"type": "xfs",
"usage": "filesystem",
"minimum_io_size": "512",
"physical_sector_size": "512",
"logical_sector_size": "512",
"part_entry_scheme": "dos",
"part_entry_type": "0x83",
"part_entry_flags": "0x80",
"part_entry_number": "1",
"part_entry_offset": "2048",
"part_entry_size": "2097152",
"part_entry_disk": "8:0"
}
]
## info
```python
info(self, /, *args, **kwargs)
```
## process
```python
process(proc_data)
```
Final processing to conform to the schema.
Parameters:
proc_data: (dictionary) raw structured data to process
Returns:
List of dictionaries. Structured data with the following schema:
Schema:
[
{
@@ -129,9 +54,78 @@ Returns:
}
]
## parse
Examples:
$ blkid | jc --blkid -p
[
{
"device": "/dev/sda1",
"uuid": "05d927ab-5875-49e4-ada1-7f46cb32c932",
"type": "xfs"
},
{
"device": "/dev/sda2",
"uuid": "3klkIj-w1kk-DkJi-0XBJ-y3i7-i2Ac-vHqWBM",
"type": "LVM2_member"
},
{
"device": "/dev/mapper/centos-root",
"uuid": "07d718ff-950c-4e5b-98f0-42a1147c77d9",
"type": "xfs"
},
{
"device": "/dev/mapper/centos-swap",
"uuid": "615eb89a-bcbf-46fd-80e3-c483ff5c931f",
"type": "swap"
}
]
$ sudo blkid -o udev -ip /dev/sda2 | jc --blkid -p
[
{
"id_fs_uuid": "3klkIj-w1kk-DkJi-0XBJ-y3i7-i2Ac-vHqWBM",
"id_fs_uuid_enc": "3klkIj-w1kk-DkJi-0XBJ-y3i7-i2Ac-vHqWBM",
"id_fs_version": "LVM2\\x20001",
"id_fs_type": "LVM2_member",
"id_fs_usage": "raid",
"id_iolimit_minimum_io_size": 512,
"id_iolimit_physical_sector_size": 512,
"id_iolimit_logical_sector_size": 512,
"id_part_entry_scheme": "dos",
"id_part_entry_type": "0x8e",
"id_part_entry_number": 2,
"id_part_entry_offset": 2099200,
"id_part_entry_size": 39843840,
"id_part_entry_disk": "8:0"
}
]
$ sudo blkid -ip /dev/sda1 | jc --blkid -p -r
[
{
"devname": "/dev/sda1",
"uuid": "05d927bb-5875-49e3-ada1-7f46cb31c932",
"type": "xfs",
"usage": "filesystem",
"minimum_io_size": "512",
"physical_sector_size": "512",
"logical_sector_size": "512",
"part_entry_scheme": "dos",
"part_entry_type": "0x83",
"part_entry_flags": "0x80",
"part_entry_number": "1",
"part_entry_offset": "2048",
"part_entry_size": "2097152",
"part_entry_disk": "8:0"
}
]
<a id="jc.parsers.blkid.parse"></a>
### parse
```python
parse(data, raw=False, quiet=False)
def parse(data, raw=False, quiet=False)
```
Main text parsing function
@@ -139,10 +133,16 @@ Main text parsing function
Parameters:
data: (string) text data to parse
raw: (boolean) output preprocessed JSON if True
raw: (boolean) unprocessed output if True
quiet: (boolean) suppress warning messages if True
Returns:
List of dictionaries. Raw or processed structured data.
List of Dictionaries. Raw or processed structured data.
### Parser Information
Compatibility: linux
Source: [`jc/parsers/blkid.py`](https://github.com/kellyjonbrazil/jc/blob/master/jc/parsers/blkid.py)
Version 1.6 by Kelly Brazil (kellyjonbrazil@gmail.com)

View File

@@ -0,0 +1,135 @@
[Home](https://kellyjonbrazil.github.io/jc/)
<a id="jc.parsers.bluetoothctl"></a>
# jc.parsers.bluetoothctl
jc - JSON Convert `bluetoothctl` command output parser
Supports the following `bluetoothctl` subcommands:
- `bluetoothctl list`
- `bluetoothctl show`
- `bluetoothctl show <ctrl>`
- `bluetoothctl devices`
- `bluetoothctl info <dev>`
Usage (cli):
$ bluetoothctl info <dev> | jc --bluetoothctl
or
$ jc bluetoothctl info <dev>
Usage (module):
import jc
result = jc.parse('bluetoothctl', bluetoothctl_command_output)
Schema:
Because bluetoothctl is handling two main entities, controllers and devices,
the schema is shared between them. Most of the fields are common between
a controller and a device but there might be fields corresponding to one entity.
Controller:
[
{
"name": string,
"is_default": boolean,
"is_public": boolean,
"is_random": boolean,
"address": string,
"alias": string,
"class": string,
"powered": string,
"discoverable": string,
"discoverable_timeout": string,
"pairable": string,
"modalias": string,
"discovering": string,
"uuids": array
}
]
Device:
[
{
"name": string,
"is_public": boolean,
"is_random": boolean,
"address": string,
"alias": string,
"appearance": string,
"class": string,
"icon": string,
"paired": string,
"bonded": string,
"trusted": string,
"blocked": string,
"connected": string,
"legacy_pairing": string,
"rssi": int,
"txpower": int,
"uuids": array,
"modalias": string
}
]
Examples:
$ bluetoothctl info EB:06:EF:62:B3:19 | jc --bluetoothctl -p
[
{
"address": "22:06:33:62:B3:19",
"is_public": true,
"name": "TaoTronics TT-BH336",
"alias": "TaoTronics TT-BH336",
"class": "0x00240455",
"icon": "audio-headset",
"paired": "no",
"bonded": "no",
"trusted": "no",
"blocked": "no",
"connected": "no",
"legacy_pairing": "no",
"uuids": [
"Advanced Audio Distribu.. (0000120d-0000-1000-8000-00805f9b34fb)",
"Audio Sink (0000130b-0000-1000-8000-00805f9b34fb)",
"A/V Remote Control (0000140e-0000-1000-8000-00805f9b34fb)",
"A/V Remote Control Cont.. (0000150f-0000-1000-8000-00805f9b34fb)",
"Handsfree (0000161e-0000-1000-8000-00805f9b34fb)",
"Headset (00001708-0000-1000-8000-00805f9b34fb)",
"Headset HS (00001831-0000-1000-8000-00805f9b34fb)"
],
"rssi": -52,
"txpower": 4
}
]
<a id="jc.parsers.bluetoothctl.parse"></a>
### parse
```python
def parse(data: str,
raw: bool = False,
quiet: bool = False) -> List[Dict[str, Any]]
```
Main text parsing function
Parameters:
data: (string) text data to parse
raw: (boolean) unprocessed output if True
quiet: (boolean) suppress warning messages if True
Returns:
List of Dictionaries. Raw or processed structured data.
### Parser Information
Compatibility: linux
Source: [`jc/parsers/bluetoothctl.py`](https://github.com/kellyjonbrazil/jc/blob/master/jc/parsers/bluetoothctl.py)
Version 1.1 by Jake Ob (iakopap at gmail.com)

127
docs/parsers/cbt.md Normal file
View File

@@ -0,0 +1,127 @@
[Home](https://kellyjonbrazil.github.io/jc/)
<a id="jc.parsers.cbt"></a>
# jc.parsers.cbt
jc - JSON Convert `cbt` command output parser (Google Bigtable)
Parses the human-, but not machine-, friendly output of the cbt command (for
Google's Bigtable).
No effort is made to convert the data types of the values in the cells.
The `timestamp_epoch` calculated timestamp field is naive. (i.e. based on
the local time of the system the parser is run on)
The `timestamp_epoch_utc` calculated timestamp field is timezone-aware and
is only available if the timestamp has a UTC timezone.
The `timestamp_iso` calculated timestamp field will only include UTC
timezone information if the timestamp has a UTC timezone.
Raw output contains all cells for each column (including timestamps), while
the normal output contains only the latest value for each column.
Usage (cli):
$ cbt | jc --cbt
or
$ jc cbt
Usage (module):
import jc
result = jc.parse('cbt', cbt_command_output)
Schema:
[
{
"key": string,
"cells": {
<string>: { # column family
<string>: string # column: value
}
}
}
]
Schema (raw):
[
{
"key": string,
"cells": [
{
"column_family": string,
"column": string,
"value": string,
"timestamp_iso": string,
"timestamp_epoch": integer,
"timestamp_epoch_utc": integer
}
]
}
]
Examples:
$ cbt -project=$PROJECT -instance=$INSTANCE lookup $TABLE foo | jc --cbt -p
[
{
"key": "foo",
"cells": {
"foo": {
"bar": "baz"
}
}
}
]
$ cbt -project=$PROJECT -instance=$INSTANCE lookup $TABLE foo | jc --cbt -p -r
[
{
"key": "foo",
"cells": [
{
"column_family": "foo",
"column": "bar",
"value": "baz1",
"timestamp_iso": "1970-01-01T01:00:00",
"timestamp_epoch": 32400,
"timestamp_epoch_utc": null
}
]
}
]
<a id="jc.parsers.cbt.parse"></a>
### parse
```python
def parse(data: str,
raw: bool = False,
quiet: bool = False) -> List[Dict[str, Any]]
```
Main text parsing function
Parameters:
data: (string) text data to parse
raw: (boolean) unprocessed output if True
quiet: (boolean) suppress warning messages if True
Returns:
List of Dictionaries. Raw or processed structured data.
### Parser Information
Compatibility: linux, darwin, cygwin, win32, aix, freebsd
Source: [`jc/parsers/cbt.py`](https://github.com/kellyjonbrazil/jc/blob/master/jc/parsers/cbt.py)
Version 1.0 by Andreas Weiden (andreas.weiden@gmail.com)

148
docs/parsers/cef.md Normal file
View File

@@ -0,0 +1,148 @@
[Home](https://kellyjonbrazil.github.io/jc/)
<a id="jc.parsers.cef"></a>
# jc.parsers.cef
jc - JSON Convert CEF string parser
This parser conforms to the Microfocus Arcsight CEF specification.
This parser will accept a single CEF string or multiple CEF string lines.
Any text before "CEF" will be ignored. Syslog and CEF escaped characters
(`\\`, `\\"`, `\\]`, `\\|`, `\\=`, `\\%`, `\\#`, `\\n`, and `\\r`) are
unescaped.
Extended fields, as defined in the CEF specification, are relabeled
and the values are converted to their respective types. Extra naive and
UTC epoch timestamps are added where appropriate per the CEF specification.
A warning message to `STDERR` will be printed if an unparsable line is found
unless `--quiet` or `quiet=True` is used.
To preserve escaping and original keynames and to prevent type conversions
use the `--raw` CLI option or `raw=True` param in the `parse()` function.
Usage (cli):
$ echo 'CEF:0|Vendor|Product|3.2.0|1|SYSTEM|1|... | jc --cef
Usage (module):
import jc
result = jc.parse('cef', cef_string_output)
Schema:
See: https://www.microfocus.com/documentation/arcsight/arcsight-smartconnectors-8.3/cef-implementation-standard/Content/CEF/Chapter%201%20What%20is%20CEF.htm
> Note: Special characters in key names will be converted to underscores.
[
{
"deviceVendor": string,
"deviceProduct": string,
"deviceVersion": string,
"deviceEventClassId": string,
"deviceEventClassIdNum": integer/null,
"name": string,
"agentSeverity": string/integer,
"agentSeverityString": string,
"agentSeverityNum": integer/null,
"CEFVersion": integer,
<extended fields> string/integer/float, # [0]
<extended fields>"_epoch": integer/null, # [1]
<extended fields>"_epoch_utc": integer/null, # [2]
<custom fields> string,
"unparsable": string # [3]
}
]
[0] Will attempt to convert extended fields to the type specified in the
CEF specification. If conversion fails, then the field will remain
a string.
[1] Naive calculated epoch timestamp
[2] Timezone-aware calculated epoch timestamp. (UTC only) This value
will be null if a UTC timezone cannot be extracted from the original
timestamp string value.
[3] This field exists if the CEF line is not parsable. The value
is the original syslog line.
Examples:
$ cat cef.log | jc --cef -p
[
{
"deviceVendor": "Trend Micro",
"deviceProduct": "Deep Security Agent",
"deviceVersion": "<DSA version>",
"deviceEventClassId": "4000000",
"name": "Eicar_test_file",
"agentSeverity": 6,
"CEFVersion": 0,
"dvchost": "hostname",
"string": "hello \"world\"!",
"start": "Nov 08 2020 12:30:00.111 UTC",
"start_epoch": 1604867400,
"start_epoch_utc": 1604838600,
"Host_ID": 1,
"Quarantine": 205,
"myDate": "Nov 08 2022 12:30:00.111",
"myDate_epoch": 1667939400,
"myDate_epoch_utc": null,
"myFloat": 3.14,
"deviceEventClassIdNum": 4000000,
"agentSeverityString": "Medium",
"agentSeverityNum": 6
}
]
$ cat cef.log | jc --cef -p -r
[
{
"deviceVendor": "Trend Micro",
"deviceProduct": "Deep Security Agent",
"deviceVersion": "<DSA version>",
"deviceEventClassId": "4000000",
"name": "Eicar_test_file",
"agentSeverity": "6",
"CEFVersion": "0",
"cn1": "1",
"cn1Label": "Host ID",
"dvchost": "hostname",
"cn2": "205",
"cn2Label": "Quarantine",
"string": "hello \\\"world\\\"!",
"start": "Nov 08 2020 12:30:00.111 UTC",
"deviceCustomDate1": "Nov 08 2022 12:30:00.111",
"deviceCustomDate1Label": "myDate",
"cfp1": "3.14",
"cfp1Label": "myFloat"
}
]
<a id="jc.parsers.cef.parse"></a>
### parse
```python
def parse(data: str, raw: bool = False, quiet: bool = False) -> List[Dict]
```
Main text parsing function
Parameters:
data: (string) text data to parse
raw: (boolean) unprocessed output if True
quiet: (boolean) suppress warning messages if True
Returns:
List of Dictionaries. Raw or processed structured data.
### Parser Information
Compatibility: linux, darwin, cygwin, win32, aix, freebsd
Source: [`jc/parsers/cef.py`](https://github.com/kellyjonbrazil/jc/blob/master/jc/parsers/cef.py)
Version 1.0 by Kelly Brazil (kellyjonbrazil@gmail.com)

125
docs/parsers/cef_s.md Normal file
View File

@@ -0,0 +1,125 @@
[Home](https://kellyjonbrazil.github.io/jc/)
<a id="jc.parsers.cef_s"></a>
# jc.parsers.cef_s
jc - JSON Convert CEF string output streaming parser
> This streaming parser outputs JSON Lines (cli) or returns an Iterable of
> Dictionaries (module)
This parser conforms to the Microfocus Arcsight CEF specification.
This parser will accept a single CEF string or multiple CEF string lines.
Any text before "CEF" will be ignored. Syslog and CEF escaped characters
(`\\`, `\\"`, `\\]`, `\\|`, `\\=`, `\\%`, `\\#`, `\\n`, and `\\r`) are
unescaped.
Extended fields, as defined in the CEF specification, are relabeled
and the values are converted to their respective types. Extra naive and
UTC epoch timestamps are added where appropriate per the CEF specification.
A warning message to `STDERR` will be printed if an unparsable line is found
unless `--quiet` or `quiet=True` is used.
To preserve escaping and original keynames and to prevent type conversions
use the `--raw` CLI option or `raw=True` param in the `parse()` function.
Usage (cli):
$ echo 'CEF:0|Vendor|Product|3.2.0|1|SYSTEM|1|... | jc --cef-s
Usage (module):
import jc
result = jc.parse('cef_s', cef_command_output.splitlines())
for item in result:
# do something
Schema:
See: https://www.microfocus.com/documentation/arcsight/arcsight-smartconnectors-8.3/cef-implementation-standard/Content/CEF/Chapter%201%20What%20is%20CEF.htm
> Note: Special characters in key names will be converted to underscores.
{
"deviceVendor": string,
"deviceProduct": string,
"deviceVersion": string,
"deviceEventClassId": string,
"deviceEventClassIdNum": integer/null,
"name": string,
"agentSeverity": string/integer,
"agentSeverityString": string,
"agentSeverityNum": integer/null,
"CEFVersion": integer,
<extended fields> string/integer/float, # [0]
<extended fields>"_epoch": integer/null, # [1]
<extended fields>"_epoch_utc": integer/null, # [2]
<custom fields> string,
"unparsable": string # [3]
# below object only exists if using -qq or ignore_exceptions=True
"_jc_meta": {
"success": boolean, # false if error parsing
"error": string, # exists if "success" is false
"line": string # exists if "success" is false
}
}
[0] Will attempt to convert extended fields to the type specified in the
CEF specification. If conversion fails, then the field will remain
a string.
[1] Naive calculated epoch timestamp
[2] Timezone-aware calculated epoch timestamp. (UTC only) This value
will be null if a UTC timezone cannot be extracted from the original
timestamp string value.
[3] This field exists if the CEF line is not parsable. The value
is the original syslog line.
Examples:
$ cat cef.log | jc --cef-s
{"deviceVendor":"Fortinet","deviceProduct":"FortiDeceptor","deviceV...}
{"deviceVendor":"Trend Micro","deviceProduct":"Deep Security Agent"...}
...
$ cat cef.log | jc --cef-s -r
{"deviceVendor":"Fortinet","deviceProduct":"FortiDeceptor","deviceV...}
{"deviceVendor":"Trend Micro","deviceProduct":"Deep Security Agent"...}
...
<a id="jc.parsers.cef_s.parse"></a>
### parse
```python
def parse(data: Iterable[str],
raw: bool = False,
quiet: bool = False,
ignore_exceptions: bool = False) -> Union[Iterable[Dict], tuple]
```
Main text parsing generator function. Returns an iterable object.
Parameters:
data: (iterable) line-based text data to parse
(e.g. sys.stdin or str.splitlines())
raw: (boolean) unprocessed output if True
quiet: (boolean) suppress warning messages if True
ignore_exceptions: (boolean) ignore parsing exceptions if True
Returns:
Iterable of Dictionaries
### Parser Information
Compatibility: linux, darwin, cygwin, win32, aix, freebsd
Source: [`jc/parsers/cef_s.py`](https://github.com/kellyjonbrazil/jc/blob/master/jc/parsers/cef_s.py)
Version 1.0 by Kelly Brazil (kellyjonbrazil@gmail.com)

163
docs/parsers/certbot.md Normal file
View File

@@ -0,0 +1,163 @@
[Home](https://kellyjonbrazil.github.io/jc/)
<a id="jc.parsers.certbot"></a>
# jc.parsers.certbot
jc - JSON Convert `certbot` command output parser
Supports the following `certbot` commands:
- `certbot show_account`
- `certbot certificates`
Verbose options are not supported.
Usage (cli):
$ certbot show_account | jc --certbot
$ certbot certificates | jc --certbot
or
$ jc certbot show_account
$ jc certbot certificates
Usage (module):
import jc
result = jc.parse('certbot', certbot_command_output)
Schema:
{
"certificates": [
{
"name": string,
"serial_number": string,
"key_type": string,
"domains": [
string
],
"expiration_date": string,
"expiration_date_epoch": integer,
"expiration_date_epoch_utc": integer,
"expiration_date_iso": string,
"validity": string,
"certificate_path": string,
"private_key_path": string
}
],
"account": {
"server": string,
"url": string,
"email": string
}
}
Examples:
$ certbot certificates | jc --certbot -p
{
"certificates": [
{
"name": "example.com",
"serial_number": "3f7axxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"key_type": "RSA",
"domains": [
"example.com",
"www.example.com"
],
"expiration_date": "2023-05-11 01:33:10+00:00",
"validity": "63 days",
"certificate_path": "/etc/letsencrypt/live/example.com/chain.pem",
"private_key_path": "/etc/letsencrypt/live/example.com/priv.pem",
"expiration_date_epoch": 1683793990,
"expiration_date_epoch_utc": 1683768790,
"expiration_date_iso": "2023-05-11T01:33:10+00:00"
},
{
"name": "example.org",
"serial_number": "3bcyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy",
"key_type": "RSA",
"domains": [
"example.org",
"www.example.org"
],
"expiration_date": "2023-06-12 01:35:30+00:00",
"validity": "63 days",
"certificate_path": "/etc/letsencrypt/live/example.org/chain.pem",
"private_key_path": "/etc/letsencrypt/live/example.org/key.pem",
"expiration_date_epoch": 1686558930,
"expiration_date_epoch_utc": 1686533730,
"expiration_date_iso": "2023-06-12T01:35:30+00:00"
}
]
}
$ certbot certificates | jc --certbot -p -r
{
"certificates": [
{
"name": "example.com",
"serial_number": "3f7axxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"key_type": "RSA",
"domains": [
"example.com",
"www.example.com"
],
"expiration_date": "2023-05-11 01:33:10+00:00",
"validity": "63 days",
"certificate_path": "/etc/letsencrypt/live/example.com/chain.pem",
"private_key_path": "/etc/letsencrypt/live/example.com/priv.pem"
},
{
"name": "example.org",
"serial_number": "3bcyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy",
"key_type": "RSA",
"domains": [
"example.org",
"www.example.org"
],
"expiration_date": "2023-06-12 01:35:30+00:00",
"validity": "63 days",
"certificate_path": "/etc/letsencrypt/live/example.org/chain.pem",
"private_key_path": "/etc/letsencrypt/live/example.org/key.pem"
}
]
}
$ certbot show_account | jc --certbot -p
{
"account": {
"server": "https://acme-staging-v02.api.letsencrypt.org/directory",
"url": "https://acme-staging-v02.api.letsencrypt.org/acme/acct/123",
"email": "some@example.com"
}
}
<a id="jc.parsers.certbot.parse"></a>
### parse
```python
def parse(data: str, raw: bool = False, quiet: bool = False) -> Dict[str, Any]
```
Main text parsing function
Parameters:
data: (string) text data to parse
raw: (boolean) unprocessed output if True
quiet: (boolean) suppress warning messages if True
Returns:
Dictionary. Raw or processed structured data.
### Parser Information
Compatibility: linux, darwin, cygwin, win32, aix, freebsd
Source: [`jc/parsers/certbot.py`](https://github.com/kellyjonbrazil/jc/blob/master/jc/parsers/certbot.py)
Version 1.2 by Kelly Brazil (kellyjonbrazil@gmail.com)

84
docs/parsers/chage.md Normal file
View File

@@ -0,0 +1,84 @@
[Home](https://kellyjonbrazil.github.io/jc/)
<a id="jc.parsers.chage"></a>
# jc.parsers.chage
jc - JSON Convert `chage --list` command output parser
Supports `chage -l <username>` or `chage --list <username>`
Usage (cli):
$ chage -l johndoe | jc --chage
or
$ jc chage -l johndoe
Usage (module):
import jc
result = jc.parse('chage', chage_command_output)
Schema:
{
"password_last_changed": string,
"password_expires": string,
"password_inactive": string,
"account_expires": string,
"min_days_between_password_change": integer,
"max_days_between_password_change": integer,
"warning_days_before_password_expires": integer
}
Examples:
$ chage --list joeuser | jc --chage -p
{
"password_last_changed": "never",
"password_expires": "never",
"password_inactive": "never",
"account_expires": "never",
"min_days_between_password_change": 0,
"max_days_between_password_change": 99999,
"warning_days_before_password_expires": 7
}
$ chage --list joeuser | jc --chage -p -r
{
"password_last_changed": "never",
"password_expires": "never",
"password_inactive": "never",
"account_expires": "never",
"min_days_between_password_change": "0",
"max_days_between_password_change": "99999",
"warning_days_before_password_expires": "7"
}
<a id="jc.parsers.chage.parse"></a>
### parse
```python
def parse(data: str, raw: bool = False, quiet: bool = False) -> Dict
```
Main text parsing function
Parameters:
data: (string) text data to parse
raw: (boolean) unprocessed output if True
quiet: (boolean) suppress warning messages if True
Returns:
Dictionary. Raw or processed structured data.
### Parser Information
Compatibility: linux
Source: [`jc/parsers/chage.py`](https://github.com/kellyjonbrazil/jc/blob/master/jc/parsers/chage.py)
Version 1.1 by Kelly Brazil (kellyjonbrazil@gmail.com)

82
docs/parsers/cksum.md Normal file
View File

@@ -0,0 +1,82 @@
[Home](https://kellyjonbrazil.github.io/jc/)
<a id="jc.parsers.cksum"></a>
# jc.parsers.cksum
jc - JSON Convert `cksum` command output parser
This parser works with the following checksum calculation utilities:
- `sum`
- `cksum`
Usage (cli):
$ cksum file.txt | jc --cksum
or
$ jc cksum file.txt
Usage (module):
import jc
result = jc.parse('cksum', cksum_command_output)
Schema:
[
{
"filename": string,
"checksum": integer,
"blocks": integer
}
]
Examples:
$ cksum * | jc --cksum -p
[
{
"filename": "__init__.py",
"checksum": 4294967295,
"blocks": 0
},
{
"filename": "airport.py",
"checksum": 2208551092,
"blocks": 3745
},
{
"filename": "airport_s.py",
"checksum": 1113817598,
"blocks": 4572
},
...
]
<a id="jc.parsers.cksum.parse"></a>
### parse
```python
def parse(data, raw=False, quiet=False)
```
Main text parsing function
Parameters:
data: (string) text data to parse
raw: (boolean) unprocessed output if True
quiet: (boolean) suppress warning messages if True
Returns:
List of Dictionaries. Raw or processed structured data.
### Parser Information
Compatibility: linux, darwin, cygwin, aix, freebsd
Source: [`jc/parsers/cksum.py`](https://github.com/kellyjonbrazil/jc/blob/master/jc/parsers/cksum.py)
Version 1.4 by Kelly Brazil (kellyjonbrazil@gmail.com)

201
docs/parsers/clf.md Normal file
View File

@@ -0,0 +1,201 @@
[Home](https://kellyjonbrazil.github.io/jc/)
<a id="jc.parsers.clf"></a>
# jc.parsers.clf
jc - JSON Convert Common Log Format file parser
This parser will handle the Common Log Format standard as specified at
https://www.w3.org/Daemon/User/Config/Logging.html#common-logfile-format.
Combined Log Format is also supported. (Referer and User Agent fields added)
Extra fields may be present and will be enclosed in the `extra` field as
a single string.
If a log line cannot be parsed, an object with an `unparsable` field will
be present with a value of the original line.
The `epoch` calculated timestamp field is naive. (i.e. based on the
local time of the system the parser is run on)
The `epoch_utc` calculated timestamp field is timezone-aware and is
only available if the timezone field is UTC.
Usage (cli):
$ cat file.log | jc --clf
Usage (module):
import jc
result = jc.parse('clf', common_log_file_output)
Schema:
Empty strings and `-` values are converted to `null`/`None`.
[
{
"host": string,
"ident": string,
"authuser": string,
"date": string,
"day": integer,
"month": string,
"year": integer,
"hour": integer,
"minute": integer,
"second": integer,
"tz": string,
"request": string,
"request_method": string,
"request_url": string,
"request_version": string,
"status": integer,
"bytes": integer,
"referer": string,
"user_agent": string,
"extra": string,
"epoch": integer, # [0]
"epoch_utc": integer, # [1]
"unparsable": string # [2]
}
]
[0] naive timestamp
[1] timezone-aware timestamp. Only available if timezone field is UTC
[2] exists if the line was not able to be parsed
Examples:
$ cat file.log | jc --clf -p
[
{
"host": "127.0.0.1",
"ident": "user-identifier",
"authuser": "frank",
"date": "10/Oct/2000:13:55:36 -0700",
"day": 10,
"month": "Oct",
"year": 2000,
"hour": 13,
"minute": 55,
"second": 36,
"tz": "-0700",
"request": "GET /apache_pb.gif HTTPS/1.0",
"status": 200,
"bytes": 2326,
"referer": null,
"user_agent": null,
"extra": null,
"request_method": "GET",
"request_url": "/apache_pb.gif",
"request_version": "HTTPS/1.0",
"epoch": 971211336,
"epoch_utc": null
},
{
"host": "1.1.1.2",
"ident": null,
"authuser": null,
"date": "11/Nov/2016:03:04:55 +0100",
"day": 11,
"month": "Nov",
"year": 2016,
"hour": 3,
"minute": 4,
"second": 55,
"tz": "+0100",
"request": "GET /",
"status": 200,
"bytes": 83,
"referer": null,
"user_agent": null,
"extra": "- 9221 1.1.1.1",
"request_method": "GET",
"request_url": "/",
"request_version": null,
"epoch": 1478862295,
"epoch_utc": null
},
...
]
$ cat file.log | jc --clf -p -r
[
{
"host": "127.0.0.1",
"ident": "user-identifier",
"authuser": "frank",
"date": "10/Oct/2000:13:55:36 -0700",
"day": "10",
"month": "Oct",
"year": "2000",
"hour": "13",
"minute": "55",
"second": "36",
"tz": "-0700",
"request": "GET /apache_pb.gif HTTPS/1.0",
"status": "200",
"bytes": "2326",
"referer": null,
"user_agent": null,
"extra": "",
"request_method": "GET",
"request_url": "/apache_pb.gif",
"request_version": "HTTPS/1.0"
},
{
"host": "1.1.1.2",
"ident": "-",
"authuser": "-",
"date": "11/Nov/2016:03:04:55 +0100",
"day": "11",
"month": "Nov",
"year": "2016",
"hour": "03",
"minute": "04",
"second": "55",
"tz": "+0100",
"request": "GET /",
"status": "200",
"bytes": "83",
"referer": "-",
"user_agent": "-",
"extra": "- 9221 1.1.1.1",
"request_method": "GET",
"request_url": "/",
"request_version": null
},
...
]
<a id="jc.parsers.clf.parse"></a>
### parse
```python
def parse(data: str,
raw: bool = False,
quiet: bool = False) -> List[Dict[str, Any]]
```
Main text parsing function
Parameters:
data: (string) text data to parse
raw: (boolean) unprocessed output if True
quiet: (boolean) suppress warning messages if True
Returns:
List of Dictionaries. Raw or processed structured data.
### Parser Information
Compatibility: linux, darwin, cygwin, win32, aix, freebsd
Source: [`jc/parsers/clf.py`](https://github.com/kellyjonbrazil/jc/blob/master/jc/parsers/clf.py)
Version 1.0 by Kelly Brazil (kellyjonbrazil@gmail.com)

120
docs/parsers/clf_s.md Normal file
View File

@@ -0,0 +1,120 @@
[Home](https://kellyjonbrazil.github.io/jc/)
<a id="jc.parsers.clf_s"></a>
# jc.parsers.clf_s
jc - JSON Convert Common Log Format file streaming parser
> This streaming parser outputs JSON Lines (cli) or returns an Iterable of
> Dictionaries (module)
This parser will handle the Common Log Format standard as specified at
https://www.w3.org/Daemon/User/Config/Logging.html#common-logfile-format.
Combined Log Format is also supported. (Referer and User Agent fields added)
Extra fields may be present and will be enclosed in the `extra` field as
a single string.
If a log line cannot be parsed, an object with an `unparsable` field will
be present with a value of the original line.
The `epoch` calculated timestamp field is naive. (i.e. based on the
local time of the system the parser is run on)
The `epoch_utc` calculated timestamp field is timezone-aware and is
only available if the timezone field is UTC.
Usage (cli):
$ cat file.log | jc --clf-s
Usage (module):
import jc
result = jc.parse('clf_s', common_log_file_output.splitlines())
for item in result:
# do something
Schema:
Empty strings and `-` values are converted to `null`/`None`.
{
"host": string,
"ident": string,
"authuser": string,
"date": string,
"day": integer,
"month": string,
"year": integer,
"hour": integer,
"minute": integer,
"second": integer,
"tz": string,
"request": string,
"request_method": string,
"request_url": string,
"request_version": string,
"status": integer,
"bytes": integer,
"referer": string,
"user_agent": string,
"extra": string,
"epoch": integer, # [0]
"epoch_utc": integer, # [1]
"unparsable": string # [2]
}
[0] naive timestamp
[1] timezone-aware timestamp. Only available if timezone field is UTC
[2] exists if the line was not able to be parsed
Examples:
$ cat file.log | jc --clf-s
{"host":"127.0.0.1","ident":"user-identifier","authuser":"frank","...}
{"host":"1.1.1.2","ident":null,"authuser":null,"date":"11/Nov/2016...}
...
$ cat file.log | jc --clf-s -r
{"host":"127.0.0.1","ident":"user-identifier","authuser":"frank","...}
{"host":"1.1.1.2","ident":"-","authuser":"-","date":"11/Nov/2016:0...}
...
<a id="jc.parsers.clf_s.parse"></a>
### parse
```python
def parse(
data: Iterable[str],
raw: bool = False,
quiet: bool = False,
ignore_exceptions: bool = False
) -> Iterator[Union[Dict[str, Any], Tuple[BaseException, str]]]
```
Main text parsing generator function. Returns an iterable object.
Parameters:
data: (iterable) line-based text data to parse
(e.g. sys.stdin or str.splitlines())
raw: (boolean) unprocessed output if True
quiet: (boolean) suppress warning messages if True
ignore_exceptions: (boolean) ignore parsing exceptions if True
Returns:
Iterable of Dictionaries
### Parser Information
Compatibility: linux, darwin, cygwin, win32, aix, freebsd
Source: [`jc/parsers/clf_s.py`](https://github.com/kellyjonbrazil/jc/blob/master/jc/parsers/clf_s.py)
Version 1.0 by Kelly Brazil (kellyjonbrazil@gmail.com)

View File

@@ -1,13 +1,57 @@
[Home](https://kellyjonbrazil.github.io/jc/)
<a id="jc.parsers.crontab"></a>
# jc.parsers.crontab
jc - JSON CLI output utility crontab command and file Parser
Usage:
jc - JSON Convert `crontab -l` command output and crontab
file parser
specify --crontab as the first argument if the piped input is coming from crontab -l or a crontab file
Supports `crontab -l` command output and crontab files.
Compatibility:
Usage (cli):
'linux', 'darwin', 'aix', 'freebsd'
$ crontab -l | jc --crontab
or
$ jc crontab -l
Usage (module):
import jc
result = jc.parse('crontab', crontab_output)
Schema:
{
"variables": [
{
"name": string,
"value": string
}
],
"schedule": [
{
"minute": [
string
],
"hour": [
string
],
"day_of_month": [
string
],
"month": [
string
],
"day_of_week": [
string
],
"occurrence": string,
"command": string
}
]
}
Examples:
@@ -128,59 +172,12 @@ Examples:
]
}
## info
<a id="jc.parsers.crontab.parse"></a>
### parse
```python
info(self, /, *args, **kwargs)
```
## process
```python
process(proc_data)
```
Final processing to conform to the schema.
Parameters:
proc_data: (dictionary) raw structured data to process
Returns:
Dictionary. Structured data with the following schema:
{
"variables": [
"name": string,
"value": string
],
"schedule": [
{
"occurrence" string,
"minute": [
string
],
"hour": [
string
],
"day_of_month": [
string
],
"month": [
string
],
"day_of_week": [
string
],
"occurrence": string,
"command": string
}
]
}
## parse
```python
parse(data, raw=False, quiet=False)
def parse(data, raw=False, quiet=False)
```
Main text parsing function
@@ -188,10 +185,16 @@ Main text parsing function
Parameters:
data: (string) text data to parse
raw: (boolean) output preprocessed JSON if True
raw: (boolean) unprocessed output if True
quiet: (boolean) suppress warning messages if True
Returns:
Dictionary. Raw or processed structured data.
### Parser Information
Compatibility: linux, darwin, aix, freebsd
Source: [`jc/parsers/crontab.py`](https://github.com/kellyjonbrazil/jc/blob/master/jc/parsers/crontab.py)
Version 1.9 by Kelly Brazil (kellyjonbrazil@gmail.com)

View File

@@ -1,13 +1,55 @@
[Home](https://kellyjonbrazil.github.io/jc/)
<a id="jc.parsers.crontab_u"></a>
# jc.parsers.crontab_u
jc - JSON CLI output utility crontab file Parser
Usage:
jc - JSON Convert `crontab -l` command output and crontab
file parser
specify --crontab-u as the first argument if the piped input is coming from a crontab file with User specified
This version of the `crontab -l` parser supports output that contains user
information for processes.
Compatibility:
Usage (cli):
'linux', 'darwin', 'aix', 'freebsd'
$ crontab -l | jc --crontab-u
Usage (module):
import jc
result = jc.parse('crontab_u', crontab_u_output)
Schema:
{
"variables": [
{
"name": string,
"value": string
}
],
"schedule": [
{
"minute": [
string
],
"hour": [
string
],
"day_of_month": [
string
],
"month": [
string
],
"day_of_week": [
string
],
"occurrence": string,
"user": string,
"command": string
}
]
}
Examples:
@@ -16,7 +58,7 @@ Examples:
"variables": [
{
"name": "PATH",
"value": "/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin"
"value": "/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sb..."
},
{
"name": "SHELL",
@@ -41,7 +83,7 @@ Examples:
"*"
],
"user": "root",
"command": "test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )"
"command": "test -x /usr/sbin/anacron || ( cd / && run-parts ..."
},
{
"minute": [
@@ -60,7 +102,7 @@ Examples:
"7"
],
"user": "root",
"command": "test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )"
"command": "test -x /usr/sbin/anacron || ( cd / && run-parts ..."
},
{
"minute": [
@@ -79,7 +121,7 @@ Examples:
"*"
],
"user": "root",
"command": "test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )"
"command": "test -x /usr/sbin/anacron || ( cd / && run-parts ..."
}
]
}
@@ -89,7 +131,7 @@ Examples:
"variables": [
{
"name": "PATH",
"value": "/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin"
"value": "/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/..."
},
{
"name": "SHELL",
@@ -104,7 +146,7 @@ Examples:
"month": "*",
"day_of_week": "*",
"user": "root",
"command": "test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )"
"command": "test -x /usr/sbin/anacron || ( cd / && run-parts ..."
},
{
"minute": "47",
@@ -113,7 +155,7 @@ Examples:
"month": "*",
"day_of_week": "7",
"user": "root",
"command": "test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )"
"command": "test -x /usr/sbin/anacron || ( cd / && run-parts ..."
},
{
"minute": "52",
@@ -122,67 +164,17 @@ Examples:
"month": "*",
"day_of_week": "*",
"user": "root",
"command": "test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )"
"command": "test -x /usr/sbin/anacron || ( cd / && run-parts ..."
}
]
}
<a id="jc.parsers.crontab_u.parse"></a>
### parse
## info
```python
info(self, /, *args, **kwargs)
```
## process
```python
process(proc_data)
```
Final processing to conform to the schema.
Parameters:
proc_data: (dictionary) raw structured data to process
Returns:
Dictionary. Structured data with the following schema:
{
"variables": [
"name": string,
"value": string
],
"schedule": [
{
"occurrence" string,
"minute": [
string
],
"hour": [
string
],
"day_of_month": [
string
],
"month": [
string
],
"day_of_week": [
string
],
"occurrence": string,
"user": string,
"command": string
}
]
}
## parse
```python
parse(data, raw=False, quiet=False)
def parse(data, raw=False, quiet=False)
```
Main text parsing function
@@ -190,10 +182,16 @@ Main text parsing function
Parameters:
data: (string) text data to parse
raw: (boolean) output preprocessed JSON if True
raw: (boolean) unprocessed output if True
quiet: (boolean) suppress warning messages if True
Returns:
Dictionary. Raw or processed structured data.
### Parser Information
Compatibility: linux, darwin, aix, freebsd
Source: [`jc/parsers/crontab_u.py`](https://github.com/kellyjonbrazil/jc/blob/master/jc/parsers/crontab_u.py)
Version 1.10 by Kelly Brazil (kellyjonbrazil@gmail.com)

View File

@@ -1,21 +1,39 @@
[Home](https://kellyjonbrazil.github.io/jc/)
<a id="jc.parsers.csv"></a>
# jc.parsers.csv
jc - JSON CLI output utility csv Parser
Usage:
jc - JSON Convert `csv` file parser
specify --csv as the first argument if the piped input is coming from a csv file.
the csv parser will attempt to automatically detect the delimiter character.
if the delimiter cannot be detected it will default to comma.
the first row of the file must be a header row.
The `csv` parser will attempt to automatically detect the delimiter
character. If the delimiter cannot be detected it will default to comma.
The first row of the file must be a header row.
Compatibility:
Usage (cli):
'linux', 'darwin', 'cygwin', 'win32', 'aix', 'freebsd'
$ cat file.csv | jc --csv
Usage (module):
import jc
result = jc.parse('csv', csv_output)
Schema:
CSV file converted to a Dictionary:
https://docs.python.org/3/library/csv.html
[
{
"column_name1": string,
"column_name2": string
}
]
Examples:
$ cat homes.csv
"Sell", "List", "Living", "Rooms", "Beds", "Baths", "Age", "Acres", "Taxes"
"Sell", "List", "Living", "Rooms", "Beds", "Baths", "Age", "Acres"...
142, 160, 28, 10, 5, 3, 60, 0.28, 3167
175, 180, 18, 8, 4, 1, 12, 0.43, 4033
129, 132, 13, 6, 3, 1, 41, 0.33, 1471
@@ -59,36 +77,14 @@ Examples:
...
]
## info
<a id="jc.parsers.csv.parse"></a>
### parse
```python
info(self, /, *args, **kwargs)
```
## process
```python
process(proc_data)
```
Final processing to conform to the schema.
Parameters:
proc_data: (dictionary) raw structured data to process
Returns:
List of dictionaries. Each dictionary represents a row in the csv file:
[
{
csv file converted to a Dictionary
https://docs.python.org/3/library/csv.html
}
]
## parse
```python
parse(data, raw=False, quiet=False)
def parse(data: Union[str, bytes],
raw: bool = False,
quiet: bool = False) -> List[Dict[str, Any]]
```
Main text parsing function
@@ -96,10 +92,16 @@ Main text parsing function
Parameters:
data: (string) text data to parse
raw: (boolean) output preprocessed JSON if True
raw: (boolean) unprocessed output if True
quiet: (boolean) suppress warning messages if True
Returns:
List of dictionaries. Raw or processed structured data.
List of Dictionaries. Raw or processed structured data.
### Parser Information
Compatibility: linux, darwin, cygwin, win32, aix, freebsd
Source: [`jc/parsers/csv.py`](https://github.com/kellyjonbrazil/jc/blob/master/jc/parsers/csv.py)
Version 1.5 by Kelly Brazil (kellyjonbrazil@gmail.com)

90
docs/parsers/csv_s.md Normal file
View File

@@ -0,0 +1,90 @@
[Home](https://kellyjonbrazil.github.io/jc/)
<a id="jc.parsers.csv_s"></a>
# jc.parsers.csv_s
jc - JSON Convert `csv` file streaming parser
> This streaming parser outputs JSON Lines (cli) or returns an Iterable of
> Dictionaries (module)
The `csv` streaming parser will attempt to automatically detect the
delimiter character. If the delimiter cannot be detected it will default
to comma. The first row of the file must be a header row.
> Note: The first 100 rows are read into memory to enable delimiter
> detection, then the rest of the rows are loaded lazily.
Usage (cli):
$ cat file.csv | jc --csv-s
Usage (module):
import jc
result = jc.parse('csv_s', csv_output.splitlines())
for item in result:
# do something
Schema:
CSV file converted to a Dictionary:
https://docs.python.org/3/library/csv.html
{
"column_name1": string,
"column_name2": string,
# below object only exists if using -qq or ignore_exceptions=True
"_jc_meta": {
"success": boolean, # false if error parsing
"error": string, # exists if "success" is false
"line": string # exists if "success" is false
}
}
Examples:
$ cat homes.csv
"Sell", "List", "Living", "Rooms", "Beds", "Baths", "Age", "Acres"...
142, 160, 28, 10, 5, 3, 60, 0.28, 3167
175, 180, 18, 8, 4, 1, 12, 0.43, 4033
129, 132, 13, 6, 3, 1, 41, 0.33, 1471
...
$ cat homes.csv | jc --csv-s
{"Sell":"142","List":"160","Living":"28","Rooms":"10","Beds":"5"...}
{"Sell":"175","List":"180","Living":"18","Rooms":"8","Beds":"4"...}
{"Sell":"129","List":"132","Living":"13","Rooms":"6","Beds":"3"...}
...
<a id="jc.parsers.csv_s.parse"></a>
### parse
```python
def parse(data, raw=False, quiet=False, ignore_exceptions=False)
```
Main text parsing generator function. Returns an iterable object.
Parameters:
data: (iterable) line-based text data to parse
(e.g. sys.stdin or str.splitlines())
raw: (boolean) unprocessed output if True
quiet: (boolean) suppress warning messages if True
ignore_exceptions: (boolean) ignore parsing exceptions if True
Returns:
Iterable of Dictionaries
### Parser Information
Compatibility: linux, darwin, cygwin, win32, aix, freebsd
Source: [`jc/parsers/csv_s.py`](https://github.com/kellyjonbrazil/jc/blob/master/jc/parsers/csv_s.py)
Version 1.4 by Kelly Brazil (kellyjonbrazil@gmail.com)

309
docs/parsers/curl_head.md Normal file
View File

@@ -0,0 +1,309 @@
[Home](https://kellyjonbrazil.github.io/jc/)
<a id="jc.parsers.curl_head"></a>
# jc.parsers.curl_head
jc - JSON Convert `curl --head` command output parser
This parser converts standard and verbose `curl --head` output.
When converting verbose output from `curl` (to gather request headers, for
example) you will need to redirect STDERR to STDOUT with `2>&1`. The magic
syntax will not work in this case.
Usage (cli):
$ curl --head www.example.com | jc --curl-head
$ curl -Ivs www.example.com 2>&1 | jc --curl-head
or
$ jc curl --head www.example.com
Usage (module):
import jc
result = jc.parse('curl_head', curl_head_command_output)
Schema:
[
{
"_type": string, # request or response
"_request_method": string,
"_request_uri": string,
"_request_version": string,
"_response_version": string,
"_response_status": integer,
"_response_reason": string or null,
"<header>": string,
# well-known headers:
"accept": [
string
],
"accept-ch": [
string
],
"accept-ch-lifetime": integer,
"accept-encoding": [
string
],
"accept-language": [
string
],
"accept-patch": [
string
],
"accept-post": [
string
],
"accept-ranges": [
string
],
"access-control-allow-headers": [
string
],
"access-control-allow-methods": [
string
],
"access-control-expose-headers": [
string
],
"access-control-max-age": integer,
"access-control-request-headers": [
string
],
"age": integer,
"allow": [
string
],
"alt-svc": [
string
],
"cache-control": [
string
],
"clear-site-data": [
string
],
"connection": [
string
],
"content-encoding": [
string
],
"content-dpr": integer,
"content-language": [
string
],
"content-length": integer,
"content-security-policy": [
string
],
"content-security-policy-report-only": [
string
],
"cookie": [
string
],
"critical-ch": [
string
],
"date": string,
"date_epoch_utc": integer,
"expect-ct": [
string
],
"expires": string,
"expires_epoch_utc": integer,
"device-memory": integer,
"downlink": integer,
"dpr": integer,
"forwarded": [
string
],
"if-match": [
string
],
"if-modified-since": string,
"if-modified-since_epoch_utc": integer,
"if-none-match": [
string
],
"if-range": string,
"if-range_epoch_utc": integer,
"if-unmodified-since": string,
"if-unmodified-since_epoch_utc": integer,
"im": [
string
],
"keep-alive": [
string
],
"large-allocation": integer,
"last-modified": string,
"last-modified_epoch_utc": integer,
"link": [
string
],
"max-forwards": integer,
"memento-datetime": string,
"memento-datetime_epoch_utc": integer,
"permissions-policy": [
string
],
"permissions-policy-report-only": [
string
],
"pragma": [
string
],
"proxy-authenticate": [
string
],
"reporting-endpoints": [
string
],
"retry-after": string,
"retry-after_epoch_utc": integer,
"rtt": integer,
"sec-ch-ua": [
string
],
"sec-ch-ua-full-version-list": [
string
],
"server": [
string
],
"server-timing": [
string
],
"set-cookie": [
string
],
"timing-allow-origin": [
string
],
"trailer": [
string
],
"transfer-encoding": [
string
],
"upgrade": [
string
],
"upgrade-insecure-requests": integer,
"vary": [
string
],
"via": [
string
],
"warning": [
string
],
"www-authenticate": [
string
],
"x-cache-hits": [
integer
],
"x-content-duration": float
}
]
Examples:
$ curl --head www.example.com | jc --curl-head -p
[
{
"_type": "response",
"_response_version": "HTTP/1.1",
"_response_status": 200,
"_response_reason": [
"OK"
],
"accept-ranges": [
"bytes"
],
"age": 241144,
"cache-control": [
"max-age=604800"
],
"content-type": "text/html; charset=UTF-8",
"date": "Sun, 04 Feb 2024 23:26:29 GMT",
"etag": "\"3147526947\"",
"expires": "Sun, 11 Feb 2024 23:26:29 GMT",
"last-modified": "Thu, 17 Oct 2019 07:18:26 GMT",
"server": [
"ECS (sac/2508)"
],
"x-cache": "HIT",
"content-length": 1256,
"date_epoch_utc": 1707089189,
"expires_epoch_utc": 1707693989,
"last-modified_epoch_utc": 1571296706
}
]
$ curl --head www.example.com | jc --curl-head -p -r
[
{
"_type": "response",
"_response_version": "HTTP/1.1",
"_response_status": 200,
"_response_reason": [
"OK"
],
"accept-ranges": [
"bytes"
],
"age": "225102",
"cache-control": [
"max-age=604800"
],
"content-type": "text/html; charset=UTF-8",
"date": "Sun, 04 Feb 2024 23:28:17 GMT",
"etag": "\"3147526947\"",
"expires": "Sun, 11 Feb 2024 23:28:17 GMT",
"last-modified": "Thu, 17 Oct 2019 07:18:26 GMT",
"server": [
"ECS (sac/2575)"
],
"x-cache": "HIT",
"content-length": "1256"
}
]
<a id="jc.parsers.curl_head.parse"></a>
### parse
```python
def parse(data: str,
raw: bool = False,
quiet: bool = False) -> List[Dict[str, Any]]
```
Main text parsing function
Parameters:
data: (string) text data to parse
raw: (boolean) unprocessed output if True
quiet: (boolean) suppress warning messages if True
Returns:
List of Dictionaries. Raw or processed structured data.
### Parser Information
Compatibility: linux, darwin, cygwin, win32, aix, freebsd
Source: [`jc/parsers/curl_head.py`](https://github.com/kellyjonbrazil/jc/blob/master/jc/parsers/curl_head.py)
Version 1.0 by Kelly Brazil (kellyjonbrazil@gmail.com)

107
docs/parsers/date.md Normal file
View File

@@ -0,0 +1,107 @@
[Home](https://kellyjonbrazil.github.io/jc/)
<a id="jc.parsers.date"></a>
# jc.parsers.date
jc - JSON Convert `date` command output parser
The `epoch` calculated timestamp field is naive. (i.e. based on the local
time of the system the parser is run on)
The `epoch_utc` calculated timestamp field is timezone-aware and is only
available if the timezone field is UTC.
Usage (cli):
$ date | jc --date
or
$ jc date
Usage (module):
import jc
result = jc.parse('date', date_command_output)
Schema:
{
"year": integer,
"month": string,
"month_num": integer,
"day": integer,
"weekday": string,
"weekday_num": integer,
"hour": integer,
"hour_24": integer,
"minute": integer,
"second": integer,
"period": string,
"timezone": string,
"utc_offset": string, # null if timezone field is not UTC
"day_of_year": integer,
"week_of_year": integer,
"iso": string,
"epoch": integer, # [0]
"epoch_utc": integer, # [1]
"timezone_aware": boolean # [2]
}
[0] naive timestamp
[1] timezone-aware timestamp. Only available if timezone field is UTC
[2] if true, all fields are correctly based on UTC
Examples:
$ date | jc --date -p
{
"year": 2021,
"month": "Mar",
"month_num": 3,
"day": 25,
"weekday": "Thu",
"weekday_num": 4,
"hour": 2,
"hour_24": 2,
"minute": 2,
"second": 26,
"period": "AM",
"timezone": "UTC",
"utc_offset": "+0000",
"day_of_year": 84,
"week_of_year": 12,
"iso": "2021-03-25T02:02:26+00:00",
"epoch": 1616662946,
"epoch_utc": 1616637746,
"timezone_aware": true
}
<a id="jc.parsers.date.parse"></a>
### parse
```python
def parse(data, raw=False, quiet=False)
```
Main text parsing function
Parameters:
data: (string) text data to parse
raw: (boolean) unprocessed output if True
quiet: (boolean) suppress warning messages if True
Returns:
Dictionary. Raw or processed structured data.
### Parser Information
Compatibility: linux, darwin, freebsd
Source: [`jc/parsers/date.py`](https://github.com/kellyjonbrazil/jc/blob/master/jc/parsers/date.py)
This parser can be used with the `--slurp` command-line option.
Version 2.6 by Kelly Brazil (kellyjonbrazil@gmail.com)

View File

@@ -0,0 +1,95 @@
[Home](https://kellyjonbrazil.github.io/jc/)
<a id="jc.parsers.datetime_iso"></a>
# jc.parsers.datetime_iso
jc - JSON Convert ISO 8601 Datetime string parser
This parser supports standard ISO 8601 strings that include both date and
time. If no timezone or offset information is available in the string, then
UTC timezone is used.
Usage (cli):
$ echo "2022-07-20T14:52:45Z" | jc --iso-datetime
Usage (module):
import jc
result = jc.parse('iso_datetime', iso_8601_string)
Schema:
{
"year": integer,
"month": string,
"month_num": integer,
"day": integer,
"weekday": string,
"weekday_num": integer,
"hour": integer,
"hour_24": integer,
"minute": integer,
"second": integer,
"microsecond": integer,
"period": string,
"utc_offset": string,
"day_of_year": integer,
"week_of_year": integer,
"iso": string,
"timestamp": integer # [0]
}
[0] timezone aware UNIX timestamp expressed in UTC
Examples:
$ echo "2022-07-20T14:52:45Z" | jc --iso-datetime -p
{
"year": 2022,
"month": "Jul",
"month_num": 7,
"day": 20,
"weekday": "Wed",
"weekday_num": 3,
"hour": 2,
"hour_24": 14,
"minute": 52,
"second": 45,
"microsecond": 0,
"period": "PM",
"utc_offset": "+0000",
"day_of_year": 201,
"week_of_year": 29,
"iso": "2022-07-20T14:52:45+00:00",
"timestamp": 1658328765
}
<a id="jc.parsers.datetime_iso.parse"></a>
### parse
```python
def parse(data, raw=False, quiet=False)
```
Main text parsing function
Parameters:
data: (string) text data to parse
raw: (boolean) unprocessed output if True
quiet: (boolean) suppress warning messages if True
Returns:
Dictionary. Raw or processed structured data.
### Parser Information
Compatibility: linux, aix, freebsd, darwin, win32, cygwin
Source: [`jc/parsers/datetime_iso.py`](https://github.com/kellyjonbrazil/jc/blob/master/jc/parsers/datetime_iso.py)
This parser can be used with the `--slurp` command-line option.
Version 1.1 by Kelly Brazil (kellyjonbrazil@gmail.com)

View File

@@ -0,0 +1,107 @@
[Home](https://kellyjonbrazil.github.io/jc/)
<a id="jc.parsers.debconf_show"></a>
# jc.parsers.debconf_show
jc - JSON Convert `debconf-show` command output parser
Usage (cli):
$ debconf-show onlyoffice-documentserver | jc --debconf-show
or
$ jc debconf-show onlyoffice-documentserver
Usage (module):
import jc
result = jc.parse('debconf_show', debconf_show_command_output)
Schema:
[
{
"asked": boolean,
"packagename": string,
"name": string,
"value": string
}
]
Examples:
$ debconf-show onlyoffice-documentserver | jc --debconf-show -p
[
{
"asked": true,
"packagename": "onlyoffice",
"name": "jwt_secret",
"value": "aL8ei2iereuzee7cuJ6Cahjah1ixee2ah"
},
{
"asked": false,
"packagename": "onlyoffice",
"name": "db_pwd",
"value": "(password omitted)"
},
{
"asked": true,
"packagename": "onlyoffice",
"name": "rabbitmq_pwd",
"value": "(password omitted)"
},
{
"asked": true,
"packagename": "onlyoffice",
"name": "db_port",
"value": "5432"
},
{
"asked": true,
"packagename": "onlyoffice",
"name": "db_user",
"value": "onlyoffice"
},
{
"asked": true,
"packagename": "onlyoffice",
"name": "rabbitmq_proto",
"value": "amqp"
},
{
"asked": true,
"packagename": "onlyoffice",
"name": "cluster_mode",
"value": "false"
}
]
<a id="jc.parsers.debconf_show.parse"></a>
### parse
```python
def parse(data: str,
raw: bool = False,
quiet: bool = False) -> List[Dict[str, Any]]
```
Main text parsing function
Parameters:
data: (string) text data to parse
raw: (boolean) unprocessed output if True
quiet: (boolean) suppress warning messages if True
Returns:
List of Dictionaries. Raw or processed structured data.
### Parser Information
Compatibility: linux
Source: [`jc/parsers/debconf_show.py`](https://github.com/kellyjonbrazil/jc/blob/master/jc/parsers/debconf_show.py)
Version 1.0 by Kelly Brazil (kellyjonbrazil@gmail.com)

View File

@@ -1,13 +1,43 @@
[Home](https://kellyjonbrazil.github.io/jc/)
<a id="jc.parsers.df"></a>
# jc.parsers.df
jc - JSON CLI output utility df Parser
Usage:
jc - JSON Convert `df` command output parser
specify --df as the first argument if the piped input is coming from df
Values are normalized to bytes when using `df -h`.
Compatibility:
Usage (cli):
'linux', 'darwin', 'freebsd'
$ df | jc --df
or
$ jc df
Usage (module):
import jc
result = jc.parse('df', df_command_output)
Schema:
[
{
"filesystem": string,
"size": integer,
"1k_blocks": integer,
"512_blocks": integer,
"used": integer,
"available": integer,
"capacity_percent": integer,
"ifree": integer,
"iused": integer,
"use_percent": integer,
"iused_percent": integer,
"mounted_on": string
}
]
Examples:
@@ -69,46 +99,12 @@ Examples:
...
]
## info
<a id="jc.parsers.df.parse"></a>
### parse
```python
info(self, /, *args, **kwargs)
```
## process
```python
process(proc_data)
```
Final processing to conform to the schema.
Parameters:
proc_data: (dictionary) raw structured data to process
Returns:
List of dictionaries. Structured data with the following schema:
[
{
"filesystem": string,
"size": string,
"1k_blocks": integer,
"512_blocks": integer,
"used": integer,
"available": integer,
"capacity_percent": integer,
"ifree": integer,
"iused": integer,
"use_percent": integer,
"iused_percent": integer,
"mounted_on": string
}
]
## parse
```python
parse(data, raw=False, quiet=False)
def parse(data, raw=False, quiet=False)
```
Main text parsing function
@@ -116,10 +112,16 @@ Main text parsing function
Parameters:
data: (string) text data to parse
raw: (boolean) output preprocessed JSON if True
raw: (boolean) unprocessed output if True
quiet: (boolean) suppress warning messages if True
Returns:
List of dictionaries. Raw or processed structured data.
List of Dictionaries. Raw or processed structured data.
### Parser Information
Compatibility: linux, darwin, freebsd
Source: [`jc/parsers/df.py`](https://github.com/kellyjonbrazil/jc/blob/master/jc/parsers/df.py)
Version 2.0 by Kelly Brazil (kellyjonbrazil@gmail.com)

View File

@@ -1,20 +1,120 @@
[Home](https://kellyjonbrazil.github.io/jc/)
<a id="jc.parsers.dig"></a>
# jc.parsers.dig
jc - JSON CLI output utility dig Parser
Usage:
jc - JSON Convert `dig` command output parser
Specify --dig as the first argument if the piped input is coming from dig
Options supported:
- `+noall +answer` options are supported in cases where only the answer
information is desired.
- `+axfr` option is supported on its own
- `+nsid` option is supported
Compatibility:
The `when_epoch` calculated timestamp field is naive. (i.e. based on the
local time of the system the parser is run on)
'linux', 'darwin', 'cygwin', 'win32', 'aix', 'freebsd'
The `when_epoch_utc` calculated timestamp field is timezone-aware and is
only available if the timezone field is UTC.
Usage (cli):
$ dig example.com | jc --dig
or
$ jc dig example.com
Usage (module):
import jc
result = jc.parse('dig', dig_command_output)
Schema:
[
{
"id": integer,
"opcode": string,
"status": string,
"flags": [
string
],
"query_num": integer,
"answer_num": integer,
"authority_num": integer,
"additional_num": integer,
"axfr": [
{
"name": string,
"class": string,
"type": string,
"ttl": integer,
"data": string
}
],
"opt_pseudosection": {
"edns": {
"version": integer,
"flags": [
string
],
"udp": integer
},
"cookie": string
},
"question": {
"name": string,
"class": string,
"type": string
},
"answer": [
{
"name": string,
"class": string,
"type": string,
"ttl": integer,
"data": string
}
],
"additional": [
{
"name": string,
"class": string,
"type": string,
"ttl": integer,
"data": string
}
],
"authority": [
{
"name": string,
"class": string,
"type": string,
"ttl": integer,
"data": string
}
],
"query_size": integer,
"query_time": integer, # in msec
"server": string,
"when": string,
"when_epoch": integer, # [0]
"when_epoch_utc": integer, # [1]
"rcvd": integer
"size": string
}
]
[0] naive timestamp if "when" field is parsable, else null
[1] timezone aware timestamp available for UTC, else null
Examples:
$ dig cnn.com www.cnn.com @205.251.194.64 | jc --dig -p
$ dig example.com | jc --dig -p
[
{
"id": 34128,
"id": 2951,
"opcode": "QUERY",
"status": "NOERROR",
"flags": [
@@ -23,117 +123,43 @@ Examples:
"ra"
],
"query_num": 1,
"answer_num": 4,
"answer_num": 1,
"authority_num": 0,
"additional_num": 1,
"opt_pseudosection": {
"edns": {
"version": 0,
"flags": [],
"udp": 4096
}
},
"question": {
"name": "cnn.com.",
"name": "example.com.",
"class": "IN",
"type": "A"
},
"answer": [
{
"name": "cnn.com.",
"name": "example.com.",
"class": "IN",
"type": "A",
"ttl": 60,
"data": "151.101.65.67"
},
{
"name": "cnn.com.",
"class": "IN",
"type": "A",
"ttl": 60,
"data": "151.101.193.67"
},
{
"name": "cnn.com.",
"class": "IN",
"type": "A",
"ttl": 60,
"data": "151.101.1.67"
},
{
"name": "cnn.com.",
"class": "IN",
"type": "A",
"ttl": 60,
"data": "151.101.129.67"
"ttl": 39302,
"data": "93.184.216.34"
}
],
"query_time": 37,
"server": "2600",
"when": "Tue Nov 12 07:14:42 PST 2019",
"rcvd": 100
},
{
"id": 15273,
"opcode": "QUERY",
"status": "NOERROR",
"flags": [
"qr",
"aa",
"rd"
],
"query_num": 1,
"answer_num": 1,
"authority_num": 4,
"additional_num": 1,
"question": {
"name": "www.cnn.com.",
"class": "IN",
"type": "A"
},
"answer": [
{
"name": "www.cnn.com.",
"class": "IN",
"type": "CNAME",
"ttl": 300,
"data": "turner-tls.map.fastly.net."
}
],
"authority": [
{
"name": "cnn.com.",
"class": "IN",
"type": "NS",
"ttl": 3600,
"data": "ns-1086.awsdns-07.org."
},
{
"name": "cnn.com.",
"class": "IN",
"type": "NS",
"ttl": 3600,
"data": "ns-1630.awsdns-11.co.uk."
},
{
"name": "cnn.com.",
"class": "IN",
"type": "NS",
"ttl": 3600,
"data": "ns-47.awsdns-05.com."
},
{
"name": "cnn.com.",
"class": "IN",
"type": "NS",
"ttl": 3600,
"data": "ns-576.awsdns-08.net."
}
],
"query_time": 23,
"server": "205.251.194.64#53(205.251.194.64)",
"when": "Tue Nov 12 07:14:42 PST 2019",
"rcvd": 212
"query_time": 49,
"server": "2600:1700:bab0:d40::1#53(2600:1700:bab0:d40::1)",
"when": "Fri Apr 16 16:05:10 PDT 2021",
"rcvd": 56,
"when_epoch": 1618614310,
"when_epoch_utc": null
}
]
$ dig cnn.com www.cnn.com @205.251.194.64 | jc --dig -p -r
[
{
"id": "23843",
"id": "46052",
"opcode": "QUERY",
"status": "NOERROR",
"flags": [
@@ -142,117 +168,41 @@ Examples:
"ra"
],
"query_num": "1",
"answer_num": "4",
"answer_num": "1",
"authority_num": "0",
"additional_num": "1",
"opt_pseudosection": {
"edns": {
"version": "0",
"flags": [],
"udp": "4096"
}
},
"question": {
"name": "cnn.com.",
"name": "example.com.",
"class": "IN",
"type": "A"
},
"answer": [
{
"name": "cnn.com.",
"name": "example.com.",
"class": "IN",
"type": "A",
"ttl": "30",
"data": "151.101.193.67"
},
{
"name": "cnn.com.",
"class": "IN",
"type": "A",
"ttl": "30",
"data": "151.101.1.67"
},
{
"name": "cnn.com.",
"class": "IN",
"type": "A",
"ttl": "30",
"data": "151.101.65.67"
},
{
"name": "cnn.com.",
"class": "IN",
"type": "A",
"ttl": "30",
"data": "151.101.129.67"
"ttl": "40426",
"data": "93.184.216.34"
}
],
"query_time": "24 msec",
"server": "192.168.1.254#53(192.168.1.254)",
"when": "Tue Nov 12 07:16:19 PST 2019",
"rcvd": "100"
},
{
"id": "8266",
"opcode": "QUERY",
"status": "NOERROR",
"flags": [
"qr",
"aa",
"rd"
],
"query_num": "1",
"answer_num": "1",
"authority_num": "4",
"additional_num": "1",
"question": {
"name": "www.cnn.com.",
"class": "IN",
"type": "A"
},
"answer": [
{
"name": "www.cnn.com.",
"class": "IN",
"type": "CNAME",
"ttl": "300",
"data": "turner-tls.map.fastly.net."
}
],
"authority": [
{
"name": "cnn.com.",
"class": "IN",
"type": "NS",
"ttl": "3600",
"data": "ns-1086.awsdns-07.org."
},
{
"name": "cnn.com.",
"class": "IN",
"type": "NS",
"ttl": "3600",
"data": "ns-1630.awsdns-11.co.uk."
},
{
"name": "cnn.com.",
"class": "IN",
"type": "NS",
"ttl": "3600",
"data": "ns-47.awsdns-05.com."
},
{
"name": "cnn.com.",
"class": "IN",
"type": "NS",
"ttl": "3600",
"data": "ns-576.awsdns-08.net."
}
],
"query_time": "26 msec",
"server": "205.251.194.64#53(205.251.194.64)",
"when": "Tue Nov 12 07:16:19 PST 2019",
"rcvd": "212"
"query_time": "48 msec",
"server": "2600:1700:bab0:d40::1#53(2600:1700:bab0:d40::1)",
"when": "Fri Apr 16 16:06:12 PDT 2021",
"rcvd": "56"
}
]
$ dig -x 1.1.1.1 | jc --dig -p
[
{
"id": 34898,
"id": 20785,
"opcode": "QUERY",
"status": "NOERROR",
"flags": [
@@ -264,6 +214,13 @@ Examples:
"answer_num": 1,
"authority_num": 0,
"additional_num": 1,
"opt_pseudosection": {
"edns": {
"version": 0,
"flags": [],
"udp": 4096
}
},
"question": {
"name": "1.1.1.1.in-addr.arpa.",
"class": "IN",
@@ -274,21 +231,23 @@ Examples:
"name": "1.1.1.1.in-addr.arpa.",
"class": "IN",
"type": "PTR",
"ttl": 952,
"ttl": 1800,
"data": "one.one.one.one."
}
],
"query_time": 103,
"server": "2600",
"when": "Tue Nov 12 07:15:33 PST 2019",
"rcvd": 78
"query_time": 40,
"server": "2600:1700:bab0:d40::1#53(2600:1700:bab0:d40::1)",
"when": "Sat Apr 17 14:50:50 PDT 2021",
"rcvd": 78,
"when_epoch": 1618696250,
"when_epoch_utc": null
}
]
$ dig -x 1.1.1.1 | jc --dig -p -r
[
{
"id": "50986",
"id": "32644",
"opcode": "QUERY",
"status": "NOERROR",
"flags": [
@@ -300,6 +259,13 @@ Examples:
"answer_num": "1",
"authority_num": "0",
"additional_num": "1",
"opt_pseudosection": {
"edns": {
"version": "0",
"flags": [],
"udp": "4096"
}
},
"question": {
"name": "1.1.1.1.in-addr.arpa.",
"class": "IN",
@@ -314,88 +280,55 @@ Examples:
"data": "one.one.one.one."
}
],
"query_time": "38 msec",
"server": "2600",
"when": "Tue Nov 12 07:17:19 PST 2019",
"query_time": "52 msec",
"server": "2600:1700:bab0:d40::1#53(2600:1700:bab0:d40::1)",
"when": "Sat Apr 17 14:51:46 PDT 2021",
"rcvd": "78"
}
]
## info
```python
info(self, /, *args, **kwargs)
```
## process
```python
process(proc_data)
```
Final processing to conform to the schema.
Parameters:
proc_data: (dictionary) raw structured data to process
Returns:
List of dictionaries. Structured data with the following schema:
$ dig +noall +answer cnn.com | jc --dig -p
[
{
"id": integer,
"opcode": string,
"status": string,
"flags": [
string
],
"query_num": integer,
"answer_num": integer,
"authority_num": integer,
"additional_num": integer,
"axfr": [
{
"name": string,
"class": string,
"type": string,
"ttl": integer,
"data": string
}
],
"question": {
"name": string,
"class": string,
"type": string
},
"answer": [
{
"name": string,
"class": string,
"type": string,
"ttl": integer,
"data": string
}
],
"authority": [
"name": "cnn.com.",
"class": "IN",
"type": "A",
"ttl": 60,
"data": "151.101.193.67"
},
{
"name": string,
"class": string,
"type": string,
"ttl": integer,
"data": string
"name": "cnn.com.",
"class": "IN",
"type": "A",
"ttl": 60,
"data": "151.101.65.67"
},
{
"name": "cnn.com.",
"class": "IN",
"type": "A",
"ttl": 60,
"data": "151.101.1.67"
},
{
"name": "cnn.com.",
"class": "IN",
"type": "A",
"ttl": 60,
"data": "151.101.129.67"
}
],
"query_time": integer, # in msec
"server": string,
"when": string,
"rcvd": integer
"size": string
]
}
]
## parse
<a id="jc.parsers.dig.parse"></a>
### parse
```python
parse(data, raw=False, quiet=False)
def parse(data, raw=False, quiet=False)
```
Main text parsing function
@@ -403,10 +336,16 @@ Main text parsing function
Parameters:
data: (string) text data to parse
raw: (boolean) output preprocessed JSON if True
raw: (boolean) unprocessed output if True
quiet: (boolean) suppress warning messages if True
Returns:
List of dictionaries. Raw or processed structured data.
List of Dictionaries. Raw or processed structured data.
### Parser Information
Compatibility: linux, aix, freebsd, darwin, win32, cygwin
Source: [`jc/parsers/dig.py`](https://github.com/kellyjonbrazil/jc/blob/master/jc/parsers/dig.py)
Version 2.5 by Kelly Brazil (kellyjonbrazil@gmail.com)

148
docs/parsers/dir.md Normal file
View File

@@ -0,0 +1,148 @@
[Home](https://kellyjonbrazil.github.io/jc/)
<a id="jc.parsers.dir"></a>
# jc.parsers.dir
jc - JSON Convert `dir` command output parser
Options supported:
- `/T timefield`
- `/O sortorder`
- `/C, /-C`
- `/S`
The "Magic" syntax is not supported since the `dir` command is a shell
builtin.
The `epoch` calculated timestamp field is naive. (i.e. based on the local
time of the system the parser is run on)
Usage (cli):
C:\> dir | jc --dir
Usage (module):
import jc
result = jc.parse('dir', dir_command_output)
Schema:
[
{
"date": string,
"time": string,
"epoch": integer, # naive timestamp
"dir": boolean,
"size": integer,
"filename: string,
"parent": string
}
]
Examples:
C:\> dir | jc --dir -p
[
{
"date": "03/24/2021",
"time": "03:15 PM",
"dir": true,
"size": null,
"filename": ".",
"parent": "C:\\Program Files\\Internet Explorer",
"epoch": 1616624100
},
{
"date": "03/24/2021",
"time": "03:15 PM",
"dir": true,
"size": null,
"filename": "..",
"parent": "C:\\Program Files\\Internet Explorer",
"epoch": 1616624100
},
{
"date": "12/07/2019",
"time": "02:49 AM",
"dir": true,
"size": null,
"filename": "en-US",
"parent": "C:\\Program Files\\Internet Explorer",
"epoch": 1575715740
},
{
"date": "12/07/2019",
"time": "02:09 AM",
"dir": false,
"size": 54784,
"filename": "ExtExport.exe",
"parent": "C:\\Program Files\\Internet Explorer",
"epoch": 1575713340
},
...
]
C:\> dir | jc --dir -p -r
[
{
"date": "03/24/2021",
"time": "03:15 PM",
"dir": true,
"size": null,
"filename": ".",
"parent": "C:\\Program Files\\Internet Explorer"
},
{
"date": "03/24/2021",
"time": "03:15 PM",
"dir": true,
"size": null,
"filename": "..",
"parent": "C:\\Program Files\\Internet Explorer"
},
{
"date": "12/07/2019",
"time": "02:49 AM",
"dir": true,
"size": null,
"filename": "en-US",
"parent": "C:\\Program Files\\Internet Explorer"
},
{
"date": "12/07/2019",
"time": "02:09 AM",
"dir": false,
"size": "54,784",
"filename": "ExtExport.exe",
"parent": "C:\\Program Files\\Internet Explorer"
},
...
]
<a id="jc.parsers.dir.parse"></a>
### parse
```python
def parse(data, raw=False, quiet=False)
```
Main text parsing function
Parameters:
data: (string) text data to parse
raw: (boolean) unprocessed output if True
quiet: (boolean) suppress warning messages if True
Returns:
List of Dictionaries. Raw or processed structured data.
### Parser Information
Compatibility: win32
Source: [`jc/parsers/dir.py`](https://github.com/kellyjonbrazil/jc/blob/master/jc/parsers/dir.py)
Version 1.6 by Rasheed Elsaleh (rasheed@rebelliondefense.com)

View File

@@ -1,13 +1,39 @@
[Home](https://kellyjonbrazil.github.io/jc/)
<a id="jc.parsers.dmidecode"></a>
# jc.parsers.dmidecode
jc - JSON CLI output utility dmidecode Parser
Usage:
jc - JSON Convert `dmidecode` command output parser
specify --dmidecode as the first argument if the piped input is coming from dmidecode
Usage (cli):
Compatibility:
$ dmidecode | jc --dmidecode
'linux'
or
$ jc dmidecode
Usage (module):
import jc
result = jc.parse('dmidecode', dmidecode_command_output)
Schema:
[
{
"handle": string,
"type": integer,
"bytes": integer,
"description": string,
"values": { # null if empty
"lowercase_no_spaces_keys": string,
"multiline_key_values": [
string,
]
}
}
]
Examples:
@@ -99,44 +125,12 @@ Examples:
...
]
## info
<a id="jc.parsers.dmidecode.parse"></a>
### parse
```python
info(self, /, *args, **kwargs)
```
## process
```python
process(proc_data)
```
Final processing to conform to the schema.
Parameters:
proc_data: (dictionary) raw structured data to process
Returns:
List of dictionaries. Structured data with the following schema:
[
{
"handle": string,
"type": integer,
"bytes": integer,
"description": string,
"values": { (null if empty)
"lowercase_no_spaces_keys": string,
"multiline_key_values": [
string,
]
}
}
]
## parse
```python
parse(data, raw=False, quiet=False)
def parse(data, raw=False, quiet=False)
```
Main text parsing function
@@ -144,10 +138,16 @@ Main text parsing function
Parameters:
data: (string) text data to parse
raw: (boolean) output preprocessed JSON if True
raw: (boolean) unprocessed output if True
quiet: (boolean) suppress warning messages if True
Returns:
List of dictionaries. Raw or processed structured data.
List of Dictionaries. Raw or processed structured data.
### Parser Information
Compatibility: linux
Source: [`jc/parsers/dmidecode.py`](https://github.com/kellyjonbrazil/jc/blob/master/jc/parsers/dmidecode.py)
Version 1.5 by Kelly Brazil (kellyjonbrazil@gmail.com)

159
docs/parsers/dpkg_l.md Normal file
View File

@@ -0,0 +1,159 @@
[Home](https://kellyjonbrazil.github.io/jc/)
<a id="jc.parsers.dpkg_l"></a>
# jc.parsers.dpkg_l
jc - JSON Convert `dpkg -l` command output parser
Set the `COLUMNS` environment variable to a large value to avoid field
truncation. For example:
$ COLUMNS=500 dpkg -l | jc --dpkg-l
Usage (cli):
$ dpkg -l | jc --dpkg-l
or
$ jc dpkg -l
Usage (module):
import jc
result = jc.parse('dpkg_l', dpkg_command_output)
Schema:
[
{
"codes": string,
"name": string,
"version": string,
"architecture": string,
"description": string,
"desired": string,
"status": string,
"error": string
}
]
Examples:
$ dpkg -l | jc --dpkg-l -p
[
{
"codes": "ii",
"name": "accountsservice",
"version": "0.6.45-1ubuntu1.3",
"architecture": "amd64",
"description": "query and manipulate user account information",
"desired": "install",
"status": "installed"
},
{
"codes": "rc",
"name": "acl",
"version": "2.2.52-3build1",
"architecture": "amd64",
"description": "Access control list utilities",
"desired": "remove",
"status": "config-files"
},
{
"codes": "uWR",
"name": "acpi",
"version": "1.7-1.1",
"architecture": "amd64",
"description": "displays information on ACPI devices",
"desired": "unknown",
"status": "trigger await",
"error": "reinstall required"
},
{
"codes": "rh",
"name": "acpid",
"version": "1:2.0.28-1ubuntu1",
"architecture": "amd64",
"description": "Advanced Configuration and Power Interface...",
"desired": "remove",
"status": "half installed"
},
{
"codes": "pn",
"name": "adduser",
"version": "3.116ubuntu1",
"architecture": "all",
"description": "add and remove users and groups",
"desired": "purge",
"status": "not installed"
},
...
]
$ dpkg -l | jc --dpkg-l -p -r
[
{
"codes": "ii",
"name": "accountsservice",
"version": "0.6.45-1ubuntu1.3",
"architecture": "amd64",
"description": "query and manipulate user account information"
},
{
"codes": "rc",
"name": "acl",
"version": "2.2.52-3build1",
"architecture": "amd64",
"description": "Access control list utilities"
},
{
"codes": "uWR",
"name": "acpi",
"version": "1.7-1.1",
"architecture": "amd64",
"description": "displays information on ACPI devices"
},
{
"codes": "rh",
"name": "acpid",
"version": "1:2.0.28-1ubuntu1",
"architecture": "amd64",
"description": "Advanced Configuration and Power Interface..."
},
{
"codes": "pn",
"name": "adduser",
"version": "3.116ubuntu1",
"architecture": "all",
"description": "add and remove users and groups"
},
...
]
<a id="jc.parsers.dpkg_l.parse"></a>
### parse
```python
def parse(data, raw=False, quiet=False)
```
Main text parsing function
Parameters:
data: (string) text data to parse
raw: (boolean) unprocessed output if True
quiet: (boolean) suppress warning messages if True
Returns:
List of Dictionaries. Raw or processed structured data.
### Parser Information
Compatibility: linux
Source: [`jc/parsers/dpkg_l.py`](https://github.com/kellyjonbrazil/jc/blob/master/jc/parsers/dpkg_l.py)
Version 1.3 by Kelly Brazil (kellyjonbrazil@gmail.com)

View File

@@ -1,13 +1,35 @@
[Home](https://kellyjonbrazil.github.io/jc/)
<a id="jc.parsers.du"></a>
# jc.parsers.du
jc - JSON CLI output utility du Parser
Usage:
jc - JSON Convert `du` command output parser
specify --du as the first argument if the piped input is coming from du
The `du -h` option is not supported with the default output. If you
would like to use `du -h` or other options that change the output, be sure
to use `jc --raw` (cli) or `raw=True` (module).
Compatibility:
Usage (cli):
'linux', 'darwin', 'aix', 'freebsd'
$ du | jc --du
or
$ jc du
Usage (module):
import jc
result = jc.parse('du', du_command_output)
Schema:
[
{
"size": integer,
"name": string
}
]
Examples:
@@ -19,23 +41,23 @@ Examples:
},
{
"size": 56,
"name": "/usr/standalone/firmware/iBridge1_1Customer.bundle/Contents/_CodeSignature"
"name": "/usr/standalone/firmware/iBridge1_1Customer.bundle/..."
},
{
"size": 0,
"name": "/usr/standalone/firmware/iBridge1_1Customer.bundle/Contents/Resources/Firmware/usr/local/standalone"
"name": "/usr/standalone/firmware/iBridge1_1Customer.bundle/..."
},
{
"size": 0,
"name": "/usr/standalone/firmware/iBridge1_1Customer.bundle/Contents/Resources/Firmware/usr/local"
"name": "/usr/standalone/firmware/iBridge1_1Customer.bundle/..."
},
{
"size": 0,
"name": "/usr/standalone/firmware/iBridge1_1Customer.bundle/Contents/Resources/Firmware/usr"
"name": "/usr/standalone/firmware/iBridge1_1Customer.bundle/..."
},
{
"size": 1008,
"name": "/usr/standalone/firmware/iBridge1_1Customer.bundle/Contents/Resources/Firmware/dfu"
"name": "/usr/standalone/firmware/iBridge1_1Customer.bundle/..."
},
...
]
@@ -48,57 +70,33 @@ Examples:
},
{
"size": "56",
"name": "/usr/standalone/firmware/iBridge1_1Customer.bundle/Contents/_CodeSignature"
"name": "/usr/standalone/firmware/iBridge1_1Customer.bundle/..."
},
{
"size": "0",
"name": "/usr/standalone/firmware/iBridge1_1Customer.bundle/Contents/Resources/Firmware/usr/local/standalone"
"name": "/usr/standalone/firmware/iBridge1_1Customer.bundle/..."
},
{
"size": "0",
"name": "/usr/standalone/firmware/iBridge1_1Customer.bundle/Contents/Resources/Firmware/usr/local"
"name": "/usr/standalone/firmware/iBridge1_1Customer.bundle/..."
},
{
"size": "0",
"name": "/usr/standalone/firmware/iBridge1_1Customer.bundle/Contents/Resources/Firmware/usr"
"name": "/usr/standalone/firmware/iBridge1_1Customer.bundle/..."
},
{
"size": "1008",
"name": "/usr/standalone/firmware/iBridge1_1Customer.bundle/Contents/Resources/Firmware/dfu"
"name": "/usr/standalone/firmware/iBridge1_1Customer.bundle/..."
},
...
]
## info
<a id="jc.parsers.du.parse"></a>
### parse
```python
info(self, /, *args, **kwargs)
```
## process
```python
process(proc_data)
```
Final processing to conform to the schema.
Parameters:
proc_data: (dictionary) raw structured data to process
Returns:
List of dictionaries. Structured data with the following schema:
[
{
"size": integer,
"name": string
}
]
## parse
```python
parse(data, raw=False, quiet=False)
def parse(data, raw=False, quiet=False)
```
Main text parsing function
@@ -106,10 +104,16 @@ Main text parsing function
Parameters:
data: (string) text data to parse
raw: (boolean) output preprocessed JSON if True
raw: (boolean) unprocessed output if True
quiet: (boolean) suppress warning messages if True
Returns:
List of dictionaries. Raw or processed structured data.
List of Dictionaries. Raw or processed structured data.
### Parser Information
Compatibility: linux, darwin, aix, freebsd
Source: [`jc/parsers/du.py`](https://github.com/kellyjonbrazil/jc/blob/master/jc/parsers/du.py)
Version 1.6 by Kelly Brazil (kellyjonbrazil@gmail.com)

104
docs/parsers/efibootmgr.md Normal file
View File

@@ -0,0 +1,104 @@
[Home](https://kellyjonbrazil.github.io/jc/)
<a id="jc.parsers.efibootmgr"></a>
# jc.parsers.efibootmgr
jc - JSON Convert `efibootmgr` command output parser
The `-v` option is also supported.
Usage (cli):
$ sudo efibootmgr | jc --efibootmgr
$ sudo efibootmgr -v | jc --efibootmgr
or
$ sudo jc efibootmgr
Usage (module):
import jc
result = jc.parse('efibootmgr', efibootmgr_command_output)
Schema:
{
"boot_current": string,
"timeout_seconds": integer,
"boot_order": [
string
],
mirrored_percentage_above_4g: float,
mirror_memory_below_4gb: boolean,
"boot_options": [
{
"boot_option_reference": string,
"display_name": string,
"uefi_device_path": string,
"boot_option_enabled": boolean
}
]
}
Examples:
$ sudo efibootmgr -v | jc --efibootmgr --p
{
"boot_current": "0002",
"timeout_seconds": 0,
"boot_order": [
"0002",
"0000",
"0001"
],
"mirrored_percentage_above_4g": 0.0,
"mirror_memory_below_4gb": false,
"boot_options": [
{
"boot_option_reference": "Boot0000",
"display_name": "WARNADO",
"uefi_device_path": "HD(1,GPT,05b9944c-1c60-492b-a510-7bbedccdc...",
"boot_option_enabled": true
},
{
"boot_option_reference": "Boot0001",
"display_name": "Embedded NIC 1 Port 1 Partition 1",
"uefi_device_path": "VenHw(3a191845-5f86-4e78-8fce-c4cff59f9daa)",
"boot_option_enabled": true
},
{
"boot_option_reference": "Boot0002",
"display_name": "opensuse-secureboot",
"uefi_device_path": "HD(1,GPT,c5d4f69d-6fc2-48c7-acee-af3f30336...",
"boot_option_enabled": true
}
]
}
<a id="jc.parsers.efibootmgr.parse"></a>
### parse
```python
def parse(data: str, raw: bool = False, quiet: bool = False) -> Dict[str, Any]
```
Main text parsing function
Parameters:
data: (string) text data to parse
raw: (boolean) unprocessed output if True
quiet: (boolean) suppress warning messages if True
Returns:
Dictionary. Raw or processed structured data.
### Parser Information
Compatibility: linux
Source: [`jc/parsers/efibootmgr.py`](https://github.com/kellyjonbrazil/jc/blob/master/jc/parsers/efibootmgr.py)
Version 1.0 by Yaofei Zheng (zyf26256@gmail.com, Yaofei.Zheng@dell.com)

View File

@@ -0,0 +1,71 @@
[Home](https://kellyjonbrazil.github.io/jc/)
<a id="jc.parsers.email_address"></a>
# jc.parsers.email_address
jc - JSON Convert Email Address string parser
Usage (cli):
$ echo "username@example.com" | jc --email-address
Usage (module):
import jc
result = jc.parse('email_address', email_address_string)
Schema:
{
"username": string,
"domain": string,
"local": string,
"local_plus_suffix": string or null
}
Examples:
$ echo 'joe.user@gmail.com' | jc --email-address -p
{
"username": "joe.user",
"domain": "gmail.com",
"local": "joe.user",
"local_plus_suffix": null
}
$ echo 'joe.user+spam@gmail.com' | jc --email-address -p
{
"username": "joe.user",
"domain": "gmail.com",
"local": "joe.user+spam",
"local_plus_suffix": "spam"
}
<a id="jc.parsers.email_address.parse"></a>
### parse
```python
def parse(data: str, raw: bool = False, quiet: bool = False) -> Dict
```
Main text parsing function
Parameters:
data: (string) text data to parse
raw: (boolean) unprocessed output if True
quiet: (boolean) suppress warning messages if True
Returns:
Dictionary. Raw or processed structured data.
### Parser Information
Compatibility: linux, darwin, cygwin, win32, aix, freebsd
Source: [`jc/parsers/email_address.py`](https://github.com/kellyjonbrazil/jc/blob/master/jc/parsers/email_address.py)
This parser can be used with the `--slurp` command-line option.
Version 1.1 by Kelly Brazil (kellyjonbrazil@gmail.com)

View File

@@ -1,13 +1,36 @@
[Home](https://kellyjonbrazil.github.io/jc/)
<a id="jc.parsers.env"></a>
# jc.parsers.env
jc - JSON CLI output utility env Parser
Usage:
jc - JSON Convert `env` and `printenv` command output parser
specify --env as the first argument if the piped input is coming from env
This parser will output a list of dictionaries each containing `name` and
`value` keys. If you would like a simple dictionary output, then use the
`-r` command-line option or the `raw=True` argument in the `parse()`
function.
Compatibility:
Usage (cli):
'linux', 'darwin', 'cygwin', 'win32', 'aix', 'freebsd'
$ env | jc --env
or
$ jc env
Usage (module):
import jc
result = jc.parse('env', env_command_output)
Schema:
[
{
"name": string,
"value": string
}
]
Examples:
@@ -49,36 +72,12 @@ Examples:
"_": "/usr/bin/env"
}
## info
<a id="jc.parsers.env.parse"></a>
### parse
```python
info(self, /, *args, **kwargs)
```
## process
```python
process(proc_data)
```
Final processing to conform to the schema.
Parameters:
proc_data: (dictionary) raw structured data to process
Returns:
List of dictionaries. Structured data with the following schema:
[
{
"name": string,
"value": string
}
]
## parse
```python
parse(data, raw=False, quiet=False)
def parse(data, raw=False, quiet=False)
```
Main text parsing function
@@ -86,11 +85,17 @@ Main text parsing function
Parameters:
data: (string) text data to parse
raw: (boolean) output preprocessed JSON if True
raw: (boolean) unprocessed output if True
quiet: (boolean) suppress warning messages if True
Returns:
Dictionary of raw structured data or
list of dictionaries of processed structured data
Dictionary of raw structured data or (default)
List of Dictionaries of processed structured data (raw)
### Parser Information
Compatibility: linux, darwin, cygwin, win32, aix, freebsd
Source: [`jc/parsers/env.py`](https://github.com/kellyjonbrazil/jc/blob/master/jc/parsers/env.py)
Version 1.5 by Kelly Brazil (kellyjonbrazil@gmail.com)

197
docs/parsers/ethtool.md Normal file
View File

@@ -0,0 +1,197 @@
[Home](https://kellyjonbrazil.github.io/jc/)
<a id="jc.parsers.ethtool"></a>
# jc.parsers.ethtool
jc - JSON Convert `ethtool` command output parser
Supports standard `ethtool` output and the `--module-info` option.
Usage (cli):
$ ethtool <interface> | jc --ethtool
$ ethtool --module-info <interface> | jc --ethtool
or
$ jc ethtool <interface>
$ jc ethtool --module-info <interface>
Usage (module):
import jc
result = jc.parse('ethtool', ethtool_command_output)
Schema:
Note: many units fields are converted to integers and floats
when detected. Use raw output for the original string values.
{
"name": string,
"supported_ports": [
string
],
"supported_link_modes": [
string
],
"supported_pause_frame_use": string,
"supports_auto_negotiation": boolean,
"supported_fec_modes": [
string
],
"advertised_link_modes": [
string
],
"advertised_pause_frame_use": boolean,
"advertised_auto_negotiation": boolean,
"advertised_fec_modes": [
string
],
"speed": string,
"speed_bps": integer,
"duplex": string,
"auto_negotiation": boolean,
"port": string,
"phyad": string,
"mdi_x": string,
"transceiver": string,
"supports_wake_on": string,
"wake_on": string,
"current_message_level": [
string
],
"link_detected": boolean,
"identifier": string,
"extended_identifier": string,
"connector": string,
"transceiver_codes": string,
"transceiver_type": [
string
],
"encoding": string,
"br_nominal": string,
"rate_identifier": string,
"length_smf_km": string,
"length_smf": string,
"length_50um": string,
"length_62_5um": string,
"length_copper": string,
"length_om3": string,
"passive_cu_cmplnce": string,
"vendor_name": string,
"vendor_oui": string,
"vendor_pn": string,
"vendor_rev": string,
"option_values": string,
"br_margin_max": string,
"br_margin_min": string
}
Examples:
$ ethtool enp0s3 | jc --ethtool -p
{
"name": "enp0s3",
"supported_pause_frame_use": "No",
"supports_auto_negotiation": true,
"supported_fec_modes": "Not reported",
"advertised_pause_frame_use": false,
"advertised_auto_negotiation": true,
"advertised_fec_modes": "Not reported",
"speed": "1000Mb/s",
"duplex": "Full",
"port": "Twisted Pair",
"phyad": "0",
"transceiver": "internal",
"auto_negotiation": false,
"mdi_x": "off (auto)",
"supports_wake_on": "umbg",
"wake_on": "d",
"link_detected": true,
"supported_ports": [
"TP"
],
"supported_link_modes": [
"10baseT/Half",
"10baseT/Full",
"100baseT/Half",
"100baseT/Full",
"1000baseT/Full"
],
"advertised_link_modes": [
"10baseT/Half",
"10baseT/Full",
"100baseT/Half",
"100baseT/Full",
"1000baseT/Full"
],
"current_message_level": [
"0x00000007 (7)",
"drv probe link"
],
"speed_bps": 1000000000
}
$ ethtool --module-info enp0s3 | jc --ethtool -p
{
"identifier": "0x03 (SFP)",
"extended_identifier": "0x04 (GBIC/SFP defined by 2-wire interface ID)",
"connector": "0x21 (Copper pigtail)",
"transceiver_codes": "0x01 0x00 0x00 0x04 0x00 0x04 0x80 0xd5 0x00",
"transceiver_type": [
"Infiniband: 1X Copper Passive",
"Ethernet: 1000BASE-CX",
"Passive Cable",
"FC: Twin Axial Pair (TW)",
"FC: 1200 MBytes/sec",
"FC: 800 MBytes/sec",
"FC: 400 MBytes/sec",
"FC: 200 MBytes/sec",
"FC: 100 MBytes/sec"
],
"encoding": "0x00 (unspecified)",
"br_nominal": "10300MBd",
"rate_identifier": "0x00 (unspecified)",
"length_smf_km": "0km",
"length_smf": "0m",
"length_50um": "0m",
"length_62_5um": "0m",
"length_copper": "2m",
"length_om3": "0m",
"passive_cu_cmplnce": "0x01 (SFF-8431 appendix E) [SFF-8472 rev10.4 only]",
"vendor_name": "UbiquitiNetworks",
"vendor_oui": "00:40:20",
"vendor_pn": "UDC-2",
"vendor_rev": "",
"option_values": "0x00 0x00",
"br_margin_max": "0%",
"br_margin_min": "0%"
}
<a id="jc.parsers.ethtool.parse"></a>
### parse
```python
def parse(data: str, raw: bool = False, quiet: bool = False) -> Dict[str, Any]
```
Main text parsing function
Parameters:
data: (string) text data to parse
raw: (boolean) unprocessed output if True
quiet: (boolean) suppress warning messages if True
Returns:
List of Dictionaries. Raw or processed structured data.
### Parser Information
Compatibility: linux
Source: [`jc/parsers/ethtool.py`](https://github.com/kellyjonbrazil/jc/blob/master/jc/parsers/ethtool.py)
Version 1.0 by Kelly Brazil (kellyjonbrazil@gmail.com)

View File

@@ -1,13 +1,31 @@
[Home](https://kellyjonbrazil.github.io/jc/)
<a id="jc.parsers.file"></a>
# jc.parsers.file
jc - JSON CLI output utility file command Parser
Usage:
jc - JSON Convert `file` command output parser
specify --file as the first argument if the piped input is coming from file.
Usage (cli):
Compatibility:
$ file * | jc --file
'linux', 'aix', 'freebsd', 'darwin'
or
$ jc file *
Usage (module):
import jc
result = jc.parse('file', file_command_output)
Schema:
[
{
"filename": string,
"type": string
}
]
Examples:
@@ -35,45 +53,21 @@ Examples:
},
{
"filename": "cd_catalog.xml",
"type": "XML 1.0 document text, ASCII text, with CRLF line terminators"
"type": "XML 1.0 document text, ASCII text, with CRLF line ..."
},
{
"filename": "centosserial.sh",
"type": "Bourne-Again shell script text executable, UTF-8 Unicode text"
"type": "Bourne-Again shell script text executable, UTF-8 ..."
},
...
]
## info
<a id="jc.parsers.file.parse"></a>
### parse
```python
info(self, /, *args, **kwargs)
```
## process
```python
process(proc_data)
```
Final processing to conform to the schema.
Parameters:
proc_data: (dictionary) raw structured data to process
Returns:
List of dictionaries. Structured data with the following schema:
[
{
"filename": string,
"type ": string
}
]
## parse
```python
parse(data, raw=False, quiet=False)
def parse(data, raw=False, quiet=False)
```
Main text parsing function
@@ -81,10 +75,16 @@ Main text parsing function
Parameters:
data: (string) text data to parse
raw: (boolean) output preprocessed JSON if True
raw: (boolean) unprocessed output if True
quiet: (boolean) suppress warning messages if True
Returns:
List of dictionaries. Raw or processed structured data.
List of Dictionaries. Raw or processed structured data.
### Parser Information
Compatibility: linux, aix, freebsd, darwin
Source: [`jc/parsers/file.py`](https://github.com/kellyjonbrazil/jc/blob/master/jc/parsers/file.py)
Version 1.5 by Kelly Brazil (kellyjonbrazil@gmail.com)

84
docs/parsers/find.md Normal file
View File

@@ -0,0 +1,84 @@
[Home](https://kellyjonbrazil.github.io/jc/)
<a id="jc.parsers.find"></a>
# jc.parsers.find
jc - JSON Convert `find` command output parser
This parser returns a list of objects by default and a list of strings if
the `--raw` option is used.
Usage (cli):
$ find | jc --find
Usage (module):
import jc
result = jc.parse('find', find_command_output)
Schema:
[
{
"path": string,
"node": string,
"error": string
}
]
Examples:
$ find | jc --find -p
[
{
"path": "./directory"
"node": "filename"
},
{
"path": "./anotherdirectory"
"node": "anotherfile"
},
{
"path": null
"node": null
"error": "find: './inaccessible': Permission denied"
}
...
]
$ find | jc --find -p -r
[
"./templates/readme_template",
"./templates/manpage_template",
"./.github/workflows/pythonapp.yml",
...
]
<a id="jc.parsers.find.parse"></a>
### parse
```python
def parse(data, raw=False, quiet=False)
```
Main text parsing function
Parameters:
data: (string) text data to parse
raw: (boolean) unprocessed output if True
quiet: (boolean) suppress warning messages if True
Returns:
List of raw strings or
List of Dictionaries of processed structured data
### Parser Information
Compatibility: linux
Source: [`jc/parsers/find.py`](https://github.com/kellyjonbrazil/jc/blob/master/jc/parsers/find.py)
Version 1.0 by Solomon Leang (solomonleang@gmail.com)

119
docs/parsers/findmnt.md Normal file
View File

@@ -0,0 +1,119 @@
[Home](https://kellyjonbrazil.github.io/jc/)
<a id="jc.parsers.findmnt"></a>
# jc.parsers.findmnt
jc - JSON Convert `findmnt` command output parser
Supports `-a`, `-l`, or no `findmnt` options.
> Note: Newer versions of `findmnt` have a JSON output option.
Usage (cli):
$ findmnt | jc --findmnt
or
$ jc findmnt
Usage (module):
import jc
result = jc.parse('findmnt', findmnt_command_output)
Schema:
[
{
"target": string,
"source": string,
"fstype": string,
"options": [
string
],
"kv_options": {
"<key_name>": string
}
]
Examples:
$ findmnt | jc --findmnt -p
[
{
"target": "/",
"source": "/dev/mapper/centos-root",
"fstype": "xfs",
"options": [
"rw",
"relatime",
"seclabel",
"attr2",
"inode64",
"noquota"
]
},
{
"target": "/sys/fs/cgroup",
"source": "tmpfs",
"fstype": "tmpfs",
"options": [
"ro",
"nosuid",
"nodev",
"noexec",
"seclabel"
],
"kv_options": {
"mode": "755"
}
},
...
]
$ findmnt | jc --findmnt -p -r
[
{
"target": "/",
"source": "/dev/mapper/centos-root",
"fstype": "xfs",
"options": "rw,relatime,seclabel,attr2,inode64,noquota"
},
{
"target": "/sys/fs/cgroup",
"source": "tmpfs",
"fstype": "tmpfs",
"options": "ro,nosuid,nodev,noexec,seclabel,mode=755"
},
...
]
<a id="jc.parsers.findmnt.parse"></a>
### parse
```python
def parse(data: str,
raw: bool = False,
quiet: bool = False) -> List[Dict[str, Any]]
```
Main text parsing function
Parameters:
data: (string) text data to parse
raw: (boolean) unprocessed output if True
quiet: (boolean) suppress warning messages if True
Returns:
List of Dictionaries. Raw or processed structured data.
### Parser Information
Compatibility: linux
Source: [`jc/parsers/findmnt.py`](https://github.com/kellyjonbrazil/jc/blob/master/jc/parsers/findmnt.py)
Version 1.1 by Kelly Brazil (kellyjonbrazil@gmail.com)

118
docs/parsers/finger.md Normal file
View File

@@ -0,0 +1,118 @@
[Home](https://kellyjonbrazil.github.io/jc/)
<a id="jc.parsers.finger"></a>
# jc.parsers.finger
jc - JSON Convert `finger` command output parser
Supports `-s` output option. Does not support the `-l` detail option.
Usage (cli):
$ finger | jc --finger
or
$ jc finger
Usage (module):
import jc
result = jc.parse('finger', finger_command_output)
Schema:
[
{
"login": string,
"name": string,
"tty": string,
"idle": string, # null if empty
"login_time": string,
"details": string,
"tty_writeable": boolean,
"idle_minutes": integer,
"idle_hours": integer,
"idle_days": integer,
"total_idle_minutes": integer
}
]
Examples:
$ finger | jc --finger -p
[
{
"login": "jdoe",
"name": "John Doe",
"tty": "tty1",
"idle": "14d",
"login_time": "Mar 22 21:14",
"tty_writeable": false,
"idle_minutes": 0,
"idle_hours": 0,
"idle_days": 14,
"total_idle_minutes": 20160
},
{
"login": "jdoe",
"name": "John Doe",
"tty": "pts/0",
"idle": null,
"login_time": "Apr 5 15:33",
"details": "(192.168.1.22)",
"tty_writeable": true,
"idle_minutes": 0,
"idle_hours": 0,
"idle_days": 0,
"total_idle_minutes": 0
},
...
]
$ finger | jc --finger -p -r
[
{
"login": "jdoe",
"name": "John Doe",
"tty": "*tty1",
"idle": "14d",
"login_time": "Mar 22 21:14"
},
{
"login": "jdoe",
"name": "John Doe",
"tty": "pts/0",
"idle": null,
"login_time": "Apr 5 15:33",
"details": "(192.168.1.22)"
},
...
]
<a id="jc.parsers.finger.parse"></a>
### parse
```python
def parse(data, raw=False, quiet=False)
```
Main text parsing function
Parameters:
data: (string) text data to parse
raw: (boolean) unprocessed output if True
quiet: (boolean) suppress warning messages if True
Returns:
List of Dictionaries. Raw or processed structured data.
### Parser Information
Compatibility: linux, darwin, cygwin, freebsd
Source: [`jc/parsers/finger.py`](https://github.com/kellyjonbrazil/jc/blob/master/jc/parsers/finger.py)
Version 1.2 by Kelly Brazil (kellyjonbrazil@gmail.com)

View File

@@ -1,13 +1,38 @@
[Home](https://kellyjonbrazil.github.io/jc/)
<a id="jc.parsers.free"></a>
# jc.parsers.free
jc - JSON CLI output utility free Parser
Usage:
jc - JSON Convert `free` command output parser
specify --free as the first argument if the piped input is coming from free
Values are normalized to bytes when using `free -h`.
Compatibility:
Usage (cli):
'linux'
$ free | jc --free
or
$ jc free
Usage (module):
import jc
result = jc.parse('free', free_command_output)
Schema:
[
{
"type": string,
"total": integer,
"used": integer,
"free": integer,
"shared": integer,
"buff_cache": integer,
"available": integer
}
]
Examples:
@@ -49,41 +74,12 @@ Examples:
}
]
## info
<a id="jc.parsers.free.parse"></a>
### parse
```python
info(self, /, *args, **kwargs)
```
## process
```python
process(proc_data)
```
Final processing to conform to the schema.
Parameters:
proc_data: (dictionary) raw structured data to process
Returns:
List of dictionaries. Structured data with the following schema:
[
{
"type": string,
"total": integer,
"used": integer,
"free": integer,
"shared": integer,
"buff_cache": integer,
"available": integer
}
]
## parse
```python
parse(data, raw=False, quiet=False)
def parse(data, raw=False, quiet=False)
```
Main text parsing function
@@ -91,10 +87,16 @@ Main text parsing function
Parameters:
data: (string) text data to parse
raw: (boolean) output preprocessed JSON if True
raw: (boolean) unprocessed output if True
quiet: (boolean) suppress warning messages if True
Returns:
List of dictionaries. Raw or processed structured data.
List of Dictionaries. Raw or processed structured data.
### Parser Information
Compatibility: linux
Source: [`jc/parsers/free.py`](https://github.com/kellyjonbrazil/jc/blob/master/jc/parsers/free.py)
Version 1.8 by Kelly Brazil (kellyjonbrazil@gmail.com)

View File

@@ -1,13 +1,31 @@
[Home](https://kellyjonbrazil.github.io/jc/)
<a id="jc.parsers.fstab"></a>
# jc.parsers.fstab
jc - JSON CLI output utility fstab Parser
Usage:
jc - JSON Convert `fstab` file parser
specify --fstab as the first argument if the piped input is coming from a fstab file
Usage (cli):
Compatibility:
$ cat /etc/fstab | jc --fstab
'linux', 'freebsd'
Usage (module):
import jc
result = jc.parse('fstab', fstab_command_output)
Schema:
[
{
"fs_spec": string,
"fs_file": string,
"fs_vfstype": string,
"fs_mntops": string,
"fs_freq": integer,
"fs_passno": integer
}
]
Examples:
@@ -67,40 +85,12 @@ Examples:
}
]
## info
<a id="jc.parsers.fstab.parse"></a>
### parse
```python
info(self, /, *args, **kwargs)
```
## process
```python
process(proc_data)
```
Final processing to conform to the schema.
Parameters:
proc_data: (dictionary) raw structured data to process
Returns:
List of dictionaries. Structured data with the following schema:
[
{
"fs_spec": string,
"fs_file": string,
"fs_vfstype": string,
"fs_mntops": string,
"fs_freq": integer,
"fs_passno": integer
}
]
## parse
```python
parse(data, raw=False, quiet=False)
def parse(data, raw=False, quiet=False)
```
Main text parsing function
@@ -108,10 +98,16 @@ Main text parsing function
Parameters:
data: (string) text data to parse
raw: (boolean) output preprocessed JSON if True
raw: (boolean) unprocessed output if True
quiet: (boolean) suppress warning messages if True
Returns:
List of dictionaries. Raw or processed structured data.
List of Dictionaries. Raw or processed structured data.
### Parser Information
Compatibility: linux, freebsd
Source: [`jc/parsers/fstab.py`](https://github.com/kellyjonbrazil/jc/blob/master/jc/parsers/fstab.py)
Version 1.7 by Kelly Brazil (kellyjonbrazil@gmail.com)

177
docs/parsers/git_log.md Normal file
View File

@@ -0,0 +1,177 @@
[Home](https://kellyjonbrazil.github.io/jc/)
<a id="jc.parsers.git_log"></a>
# jc.parsers.git_log
jc - JSON Convert `git log` command output parser
Can be used with the following format options:
- `oneline`
- `short`
- `medium`
- `full`
- `fuller`
Additional options supported:
- `--stat`
- `--shortstat`
The `epoch` calculated timestamp field is naive. (i.e. based on the
local time of the system the parser is run on)
The `epoch_utc` calculated timestamp field is timezone-aware and is
only available if the timezone field is UTC.
Usage (cli):
$ git log | jc --git-log
or
$ jc git log
Usage (module):
import jc
result = jc.parse('git_log', git_log_command_output)
Schema:
[
{
"commit": string,
"author": string/null,
"author_email": string/null,
"date": string,
"epoch": integer, # [0]
"epoch_utc": integer, # [1]
"commit_by": string/null,
"commit_by_email": string/null,
"commit_by_date": string,
"message": string,
"stats" : {
"files_changed": integer,
"insertions": integer,
"deletions": integer,
"files": [
string
]
}
}
]
[0] naive timestamp if "date" field is parsable, else null
[1] timezone aware timestamp available for UTC, else null
Examples:
$ git log --stat | jc --git-log -p
[
{
"commit": "728d882ed007b3c8b785018874a0eb06e1143b66",
"author": "Kelly Brazil",
"author_email": "kellyjonbrazil@gmail.com",
"date": "Wed Apr 20 09:50:19 2022 -0400",
"stats": {
"files_changed": 2,
"insertions": 90,
"deletions": 12,
"files": [
"docs/parsers/git_log.md",
"jc/parsers/git_log.py"
]
},
"message": "add timestamp docs and examples",
"epoch": 1650462619,
"epoch_utc": null
},
{
"commit": "b53e42aca623181aa9bc72194e6eeef1e9a3a237",
"author": "Kelly Brazil",
"author_email": "kellyjonbrazil@gmail.com",
"date": "Wed Apr 20 09:44:42 2022 -0400",
"stats": {
"files_changed": 5,
"insertions": 29,
"deletions": 6,
"files": [
"docs/parsers/git_log.md",
"docs/utils.md",
"jc/parsers/git_log.py",
"jc/utils.py",
"man/jc.1"
]
},
"message": "add calculated timestamp",
"epoch": 1650462282,
"epoch_utc": null
},
...
]
$ git log --stat | jc --git-log -p -r
[
{
"commit": "728d882ed007b3c8b785018874a0eb06e1143b66",
"author": "Kelly Brazil",
"author_email": "kellyjonbrazil@gmail.com",
"date": "Wed Apr 20 09:50:19 2022 -0400",
"stats": {
"files_changed": "2",
"insertions": "90",
"deletions": "12",
"files": [
"docs/parsers/git_log.md",
"jc/parsers/git_log.py"
]
},
"message": "add timestamp docs and examples"
},
{
"commit": "b53e42aca623181aa9bc72194e6eeef1e9a3a237",
"author": "Kelly Brazil",
"author_email": "kellyjonbrazil@gmail.com",
"date": "Wed Apr 20 09:44:42 2022 -0400",
"stats": {
"files_changed": "5",
"insertions": "29",
"deletions": "6",
"files": [
"docs/parsers/git_log.md",
"docs/utils.md",
"jc/parsers/git_log.py",
"jc/utils.py",
"man/jc.1"
]
},
"message": "add calculated timestamp"
},
...
]
<a id="jc.parsers.git_log.parse"></a>
### parse
```python
def parse(data: str, raw: bool = False, quiet: bool = False) -> List[Dict]
```
Main text parsing function
Parameters:
data: (string) text data to parse
raw: (boolean) unprocessed output if True
quiet: (boolean) suppress warning messages if True
Returns:
List of Dictionaries. Raw or processed structured data.
### Parser Information
Compatibility: linux, darwin, cygwin, win32, aix, freebsd
Source: [`jc/parsers/git_log.py`](https://github.com/kellyjonbrazil/jc/blob/master/jc/parsers/git_log.py)
Version 1.4 by Kelly Brazil (kellyjonbrazil@gmail.com)

112
docs/parsers/git_log_s.md Normal file
View File

@@ -0,0 +1,112 @@
[Home](https://kellyjonbrazil.github.io/jc/)
<a id="jc.parsers.git_log_s"></a>
# jc.parsers.git_log_s
jc - JSON Convert `git log` command output streaming parser
> This streaming parser outputs JSON Lines (cli) or returns an Iterable of
> Dictionaries (module)
Can be used with the following format options:
- `oneline`
- `short`
- `medium`
- `full`
- `fuller`
Additional options supported:
- `--stat`
- `--shortstat`
The `epoch` calculated timestamp field is naive. (i.e. based on the
local time of the system the parser is run on)
The `epoch_utc` calculated timestamp field is timezone-aware and is
only available if the timezone field is UTC.
Usage (cli):
$ git log | jc --git-log-s
Usage (module):
import jc
result = jc.parse('git_log_s', git_log_command_output.splitlines())
for item in result:
# do something
Schema:
{
"commit": string,
"author": string/null,
"author_email": string/null,
"date": string,
"epoch": integer, # [0]
"epoch_utc": integer, # [1]
"commit_by": string/null,
"commit_by_email": string/null,
"commit_by_date": string,
"message": string,
"stats" : {
"files_changed": integer,
"insertions": integer,
"deletions": integer,
"files": [
string
]
}
# below object only exists if using -qq or ignore_exceptions=True
"_jc_meta": {
"success": boolean, # false if error parsing
"error": string, # exists if "success" is false
"line": string # exists if "success" is false
}
}
[0] naive timestamp if "date" field is parsable, else null
[1] timezone aware timestamp available for UTC, else null
Examples:
$ git log | jc --git-log-s
{"commit":"a730ae18c8e81c5261db132df73cd74f272a0a26","author":"Kelly...}
{"commit":"930bf439c06c48a952baec05a9896c8d92b7693e","author":"Kelly...}
...
<a id="jc.parsers.git_log_s.parse"></a>
### parse
```python
def parse(data: Iterable[str],
raw: bool = False,
quiet: bool = False,
ignore_exceptions: bool = False) -> Union[Iterable[Dict], tuple]
```
Main text parsing generator function. Returns an iterable object.
Parameters:
data: (iterable) line-based text data to parse
(e.g. sys.stdin or str.splitlines())
raw: (boolean) unprocessed output if True
quiet: (boolean) suppress warning messages if True
ignore_exceptions: (boolean) ignore parsing exceptions if True
Returns:
Iterable of Dictionaries
### Parser Information
Compatibility: linux, darwin, cygwin, win32, aix, freebsd
Source: [`jc/parsers/git_log_s.py`](https://github.com/kellyjonbrazil/jc/blob/master/jc/parsers/git_log_s.py)
Version 1.4 by Kelly Brazil (kellyjonbrazil@gmail.com)

View File

@@ -0,0 +1,94 @@
[Home](https://kellyjonbrazil.github.io/jc/)
<a id="jc.parsers.git_ls_remote"></a>
# jc.parsers.git_ls_remote
jc - JSON Convert `git ls-remote` command output parser
This parser outputs two schemas:
- Default: A single object with key/value pairs
- Raw: An array of objects (`--raw` (cli) or `raw=True (module))
See the Schema section for more details
Usage (cli):
$ git ls-remote | jc --git-ls-remote
or
$ jc git ls-remote
Usage (module):
import jc
result = jc.parse('git_ls_remote', git_ls_remote_command_output)
Schema:
Default:
{
<reference>: string
}
Raw:
[
{
"reference": string,
"commit": string
}
]
Examples:
$ git ls-remote | jc --git-ls-remote -p
{
"HEAD": "214cd6b9e09603b3c4fa02203b24fb2bc3d4e338",
"refs/heads/dev": "b884f6aacca39e05994596d8fdfa7e7c4f1e0389",
"refs/heads/master": "214cd6b9e09603b3c4fa02203b24fb2bc3d4e338",
"refs/pull/1/head": "e416c77bed1267254da972b0f95b7ff1d43fccef",
...
}
$ git ls-remote | jc --git-ls-remote -p -r
[
{
"reference": "HEAD",
"commit": "214cd6b9e09603b3c4fa02203b24fb2bc3d4e338"
},
{
"reference": "refs/heads/dev",
"commit": "b884f6aacca39e05994596d8fdfa7e7c4f1e0389"
},
...
]
<a id="jc.parsers.git_ls_remote.parse"></a>
### parse
```python
def parse(data: str,
raw: bool = False,
quiet: bool = False) -> Union[Dict[str, Any], List[Dict[str, Any]]]
```
Main text parsing function
Parameters:
data: (string) text data to parse
raw: (boolean) unprocessed output if True
quiet: (boolean) suppress warning messages if True
Returns:
Dictionary (default) or List of Dictionaries (raw)
### Parser Information
Compatibility: linux, darwin, cygwin, win32, aix, freebsd
Source: [`jc/parsers/git_ls_remote.py`](https://github.com/kellyjonbrazil/jc/blob/master/jc/parsers/git_ls_remote.py)
Version 1.0 by Kelly Brazil (kellyjonbrazil@gmail.com)

147
docs/parsers/gpg.md Normal file
View File

@@ -0,0 +1,147 @@
[Home](https://kellyjonbrazil.github.io/jc/)
<a id="jc.parsers.gpg"></a>
# jc.parsers.gpg
jc - JSON Convert `gpg --with-colons` command output parser
Usage (cli):
$ gpg --with-colons --show-keys file.gpg | jc --gpg
or
$ jc gpg --with-colons --show-keys file.gpg
Usage (module):
import jc
result = jc.parse('gpg', gpg_command_output)
Schema:
Field definitions from https://git.gnupg.org/cgi-bin/gitweb.cgi?p=gnupg.git;a=blob_plain;f=doc/DETAILS
> Note: Number values are not converted to integers because many field
> specifications are overloaded and future augmentations are implied in the
> documentation.
[
{
"type": string,
"validity": string,
"key_length": string,
"pub_key_alg": string,
"key_id": string,
"creation_date": string,
"expiration_date": string,
"certsn_uidhash_trustinfo": string,
"owner_trust": string,
"user_id": string,
"signature_class": string,
"key_capabilities": string,
"cert_fingerprint_other": string,
"flag": string,
"token_sn": string,
"hash_alg": string,
"curve_name": string,
"compliance_flags": string,
"last_update_date": string,
"origin": string,
"comment": string,
"index": string, # [0]
"bits": string, # [0]
"value": string, # [0]
"version": string, # [1], [4]
"signature_count": string, # [1]
"encryption_count": string, # [1]
"policy": string, # [1]
"signature_first_seen": string, # [1]
"signature_most_recent_seen": string, # [1]
"encryption_first_done": string, # [1]
"encryption_most_recent_done": string, # [1]
"staleness_reason": string, # [2]
"trust_model": string, # [2]
"trust_db_created": string, # [2]
"trust_db_expires": string, # [2]
"marginally_trusted_users": string, # [2]
"completely_trusted_users": string, # [2]
"cert_chain_max_depth": string, # [2]
"subpacket_number": string, # [3]
"hex_flags": string, # [3]
"subpacket_length": string, # [3]
"subpacket_data": string, # [3]
"pubkey": string, # [4]
"cipher": string, # [4]
"digest": string, # [4]
"compress": string, # [4]
"group": string, # [4]
"members": string, # [4]
"curve_names": string, # [4]
}
]
All blank values are converted to null/None.
[0] for 'pkd' type
[1] for 'tfs' type
[2] for 'tru' type
[3] for 'skp' type
[4] for 'cfg' type
Examples:
$ gpg --with-colons --show-keys file.gpg | jc --gpg -p
[
{
"type": "pub",
"validity": "f",
"key_length": "1024",
"pub_key_alg": "17",
"key_id": "6C7EE1B8621CC013",
"creation_date": "899817715",
"expiration_date": "1055898235",
"certsn_uidhash_trustinfo": null,
"owner_trust": "m",
"user_id": null,
"signature_class": null,
"key_capabilities": "scESC",
"cert_fingerprint_other": null,
"flag": null,
"token_sn": null,
"hash_alg": null,
"curve_name": null,
"compliance_flags": null,
"last_update_date": null,
"origin": null,
"comment": null
},
...
]
<a id="jc.parsers.gpg.parse"></a>
### parse
```python
def parse(data: str, raw: bool = False, quiet: bool = False) -> List[Dict]
```
Main text parsing function
Parameters:
data: (string) text data to parse
raw: (boolean) unprocessed output if True
quiet: (boolean) suppress warning messages if True
Returns:
List of Dictionaries. Raw or processed structured data.
### Parser Information
Compatibility: linux
Source: [`jc/parsers/gpg.py`](https://github.com/kellyjonbrazil/jc/blob/master/jc/parsers/gpg.py)
Version 1.0 by Kelly Brazil (kellyjonbrazil@gmail.com)

View File

@@ -1,13 +1,31 @@
[Home](https://kellyjonbrazil.github.io/jc/)
<a id="jc.parsers.group"></a>
# jc.parsers.group
jc - JSON CLI output utility /etc/group file Parser
Usage:
jc - JSON Convert `/etc/group` file parser
specify --group as the first argument if the piped input is coming from /etc/group
Usage (cli):
Compatibility:
$ cat /etc/group | jc --group
'linux', 'darwin', 'aix', 'freebsd'
Usage (module):
import jc
result = jc.parse('group', group_file_output)
Schema:
[
{
"group_name": string,
"password": string,
"gid": integer,
"members": [
string
]
}
]
Examples:
@@ -91,40 +109,12 @@ Examples:
...
]
## info
<a id="jc.parsers.group.parse"></a>
### parse
```python
info(self, /, *args, **kwargs)
```
## process
```python
process(proc_data)
```
Final processing to conform to the schema.
Parameters:
proc_data: (dictionary) raw structured data to process
Returns:
List of dictionaries. Structured data with the following schema:
[
{
"group_name": string,
"password": string,
"gid": integer,
"members": [
string
]
}
]
## parse
```python
parse(data, raw=False, quiet=False)
def parse(data, raw=False, quiet=False)
```
Main text parsing function
@@ -132,10 +122,16 @@ Main text parsing function
Parameters:
data: (string) text data to parse
raw: (boolean) output preprocessed JSON if True
raw: (boolean) unprocessed output if True
quiet: (boolean) suppress warning messages if True
Returns:
List of dictionaries. Raw or processed structured data.
List of Dictionaries. Raw or processed structured data.
### Parser Information
Compatibility: linux, darwin, aix, freebsd
Source: [`jc/parsers/group.py`](https://github.com/kellyjonbrazil/jc/blob/master/jc/parsers/group.py)
Version 1.5 by Kelly Brazil (kellyjonbrazil@gmail.com)

View File

@@ -1,13 +1,33 @@
[Home](https://kellyjonbrazil.github.io/jc/)
<a id="jc.parsers.gshadow"></a>
# jc.parsers.gshadow
jc - JSON CLI output utility /etc/gshadow file Parser
Usage:
jc - JSON Convert `/etc/gshadow` file parser
specify --gshadow as the first argument if the piped input is coming from /etc/gshadow
Usage (cli):
Compatibility:
$ cat /etc/gshadow | jc --gshadow
'linux', 'aix', 'freebsd'
Usage (module):
import jc
result = jc.parse('gshadow', gshadow_file_output)
Schema:
[
{
"group_name": string,
"password": string,
"administrators": [
string
],
"members": [
string
]
}
]
Examples:
@@ -57,42 +77,12 @@ Examples:
...
]
## info
<a id="jc.parsers.gshadow.parse"></a>
### parse
```python
info(self, /, *args, **kwargs)
```
## process
```python
process(proc_data)
```
Final processing to conform to the schema.
Parameters:
proc_data: (dictionary) raw structured data to process
Returns:
List of dictionaries. Structured data with the following schema:
[
{
"group_name": string,
"password": string,
"administrators": [
string
],
"members": [
string
]
}
]
## parse
```python
parse(data, raw=False, quiet=False)
def parse(data, raw=False, quiet=False)
```
Main text parsing function
@@ -100,10 +90,16 @@ Main text parsing function
Parameters:
data: (string) text data to parse
raw: (boolean) output preprocessed JSON if True
raw: (boolean) unprocessed output if True
quiet: (boolean) suppress warning messages if True
Returns:
List of dictionaries. Raw or processed structured data.
List of Dictionaries. Raw or processed structured data.
### Parser Information
Compatibility: linux, aix, freebsd
Source: [`jc/parsers/gshadow.py`](https://github.com/kellyjonbrazil/jc/blob/master/jc/parsers/gshadow.py)
Version 1.3 by Kelly Brazil (kellyjonbrazil@gmail.com)

65
docs/parsers/hash.md Normal file
View File

@@ -0,0 +1,65 @@
[Home](https://kellyjonbrazil.github.io/jc/)
<a id="jc.parsers.hash"></a>
# jc.parsers.hash
jc - JSON Convert `hash` command output parser
Usage (cli):
$ hash | jc --hash
Usage (module):
import jc
result = jc.parse('hash', hash_command_output)
Schema:
[
{
"command": string,
"hits": integer
}
]
Examples:
$ hash | jc --hash -p
[
{
"hits": 2,
"command": "/bin/cat"
},
{
"hits": 1,
"command": "/bin/ls"
}
]
<a id="jc.parsers.hash.parse"></a>
### parse
```python
def parse(data, raw=False, quiet=False)
```
Main text parsing function
Parameters:
data: (string) text data to parse
raw: (boolean) unprocessed output if True
quiet: (boolean) suppress warning messages if True
Returns:
List of Dictionaries. Raw or processed structured data.
### Parser Information
Compatibility: linux, darwin, cygwin, aix, freebsd
Source: [`jc/parsers/hash.py`](https://github.com/kellyjonbrazil/jc/blob/master/jc/parsers/hash.py)
Version 1.4 by Kelly Brazil (kellyjonbrazil@gmail.com)

96
docs/parsers/hashsum.md Normal file
View File

@@ -0,0 +1,96 @@
[Home](https://kellyjonbrazil.github.io/jc/)
<a id="jc.parsers.hashsum"></a>
# jc.parsers.hashsum
jc - JSON Convert `hash sum` command output parser
This parser works with the following hash calculation utilities:
- `md5`
- `md5sum`
- `shasum`
- `sha1sum`
- `sha224sum`
- `sha256sum`
- `sha384sum`
- `sha512sum`
Usage (cli):
$ md5sum file.txt | jc --hashsum
or
$ jc md5sum file.txt
Usage (module):
import jc
result = jc.parse('hashsum', md5sum_command_output)
Schema:
[
{
"filename": string,
"hash": string,
}
]
Examples:
$ md5sum * | jc --hashsum -p
[
{
"filename": "devtoolset-3-gcc-4.9.2-6.el7.x86_64.rpm",
"hash": "65fc958c1add637ec23c4b137aecf3d3"
},
{
"filename": "digout",
"hash": "5b9312ee5aff080927753c63a347707d"
},
{
"filename": "dmidecode.out",
"hash": "716fd11c2ac00db109281f7110b8fb9d"
},
{
"filename": "file with spaces in the name",
"hash": "d41d8cd98f00b204e9800998ecf8427e"
},
{
"filename": "id-centos.out",
"hash": "4295be239a14ad77ef3253103de976d2"
},
{
"filename": "ifcfg.json",
"hash": "01fda0d9ba9a75618b072e64ff512b43"
},
...
]
<a id="jc.parsers.hashsum.parse"></a>
### parse
```python
def parse(data, raw=False, quiet=False)
```
Main text parsing function
Parameters:
data: (string) text data to parse
raw: (boolean) unprocessed output if True
quiet: (boolean) suppress warning messages if True
Returns:
List of Dictionaries. Raw or processed structured data.
### Parser Information
Compatibility: linux, darwin, cygwin, aix, freebsd
Source: [`jc/parsers/hashsum.py`](https://github.com/kellyjonbrazil/jc/blob/master/jc/parsers/hashsum.py)
Version 1.2 by Kelly Brazil (kellyjonbrazil@gmail.com)

345
docs/parsers/hciconfig.md Normal file
View File

@@ -0,0 +1,345 @@
[Home](https://kellyjonbrazil.github.io/jc/)
<a id="jc.parsers.hciconfig"></a>
# jc.parsers.hciconfig
jc - JSON Convert `hciconfig` command output parser
Usage (cli):
$ hciconfig | jc --hciconfig
or
$ jc hciconfig
Usage (module):
import jc
result = jc.parse('hciconfig', hciconfig_command_output)
Schema:
[
{
"device": string,
"type": string,
"bus": string,
"bd_address": string,
"acl_mtu": integer,
"acl_mtu_packets": integer,
"sco_mtu": integer,
"sco_mtu_packets": integer,
"state": [
string
],
"rx_bytes": integer,
"rx_acl": integer,
"rx_sco": integer,
"rx_events": integer,
"rx_errors": integer,
"tx_bytes": integer,
"tx_acl": integer,
"tx_sco": integer,
"tx_commands": integer,
"tx_errors": integer,
"features": [
string
],
"packet_type": [
string
],
"link_policy": [
string
],
"link_mode": [
string
],
"name": string,
"class": string,
"service_classes": [
string # 'Unspecified' is null
],
"device_class": string,
"hci_version": string,
"hci_revision": string,
"lmp_version": string,
"lmp_subversion": string,
"manufacturer": string
}
]
Examples:
$ hciconfig -a | jc --hciconfig -p
[
{
"device": "hci0",
"type": "Primary",
"bus": "USB",
"bd_address": "00:1A:7D:DA:71:13",
"acl_mtu": 310,
"acl_mtu_packets": 10,
"sco_mtu": 64,
"sco_mtu_packets": 8,
"state": [
"UP",
"RUNNING"
],
"rx_bytes": 13905869,
"rx_acl": 0,
"rx_sco": 0,
"rx_events": 393300,
"rx_errors": 0,
"tx_bytes": 62629,
"tx_acl": 0,
"tx_sco": 0,
"tx_commands": 3893,
"tx_errors": 0,
"features": [
"0xff",
"0xff",
"0x8f",
"0xfe",
"0xdb",
"0xff",
"0x5b",
"0x87"
],
"packet_type": [
"DM1",
"DM3",
"DM5",
"DH1",
"DH3",
"DH5",
"HV1",
"HV2",
"HV3"
],
"link_policy": [
"RSWITCH",
"HOLD",
"SNIFF",
"PARK"
],
"link_mode": [
"SLAVE",
"ACCEPT"
],
"name": "CSR8510 A10",
"class": "0x000000",
"service_classes": null,
"device_class": "Miscellaneous",
"hci_version": "4.0 (0x6)",
"hci_revision": "0x22bb",
"lmp_version": "4.0 (0x6)",
"lmp_subversion": "0x22bb",
"manufacturer": "Cambridge Silicon Radio (10)"
},
{
"device": "hci1",
"type": "Primary",
"bus": "USB",
"bd_address": "00:1A:7D:DA:71:13",
"acl_mtu": 310,
"acl_mtu_packets": 10,
"sco_mtu": 64,
"sco_mtu_packets": 8,
"state": [
"DOWN"
],
"rx_bytes": 4388363,
"rx_acl": 0,
"rx_sco": 0,
"rx_events": 122021,
"rx_errors": 0,
"tx_bytes": 52350,
"tx_acl": 0,
"tx_sco": 0,
"tx_commands": 3480,
"tx_errors": 2,
"features": [
"0xff",
"0xff",
"0x8f",
"0xfe",
"0xdb",
"0xff",
"0x5b",
"0x87"
],
"packet_type": [
"DM1",
"DM3",
"DM5",
"DH1",
"DH3",
"DH5",
"HV1",
"HV2",
"HV3"
],
"link_policy": [
"RSWITCH",
"HOLD",
"SNIFF",
"PARK"
],
"link_mode": [
"SLAVE",
"ACCEPT"
]
}
]
$ hciconfig -a | jc --hciconfig -p -r
[
{
"device": "hci0",
"type": "Primary",
"bus": "USB",
"bd_address": "00:1A:7D:DA:71:13",
"acl_mtu": "310",
"acl_mtu_packets": "10",
"sco_mtu": "64",
"sco_mtu_packets": "8",
"state": [
"UP",
"RUNNING"
],
"rx_bytes": "13905869",
"rx_acl": "0",
"rx_sco": "0",
"rx_events": "393300",
"rx_errors": "0",
"tx_bytes": "62629",
"tx_acl": "0",
"tx_sco": "0",
"tx_commands": "3893",
"tx_errors": "0",
"features": [
"0xff",
"0xff",
"0x8f",
"0xfe",
"0xdb",
"0xff",
"0x5b",
"0x87"
],
"packet_type": [
"DM1",
"DM3",
"DM5",
"DH1",
"DH3",
"DH5",
"HV1",
"HV2",
"HV3"
],
"link_policy": [
"RSWITCH",
"HOLD",
"SNIFF",
"PARK"
],
"link_mode": [
"SLAVE",
"ACCEPT"
],
"name": "CSR8510 A10",
"class": "0x000000",
"service_classes": [
"Unspecified"
],
"device_class": "Miscellaneous",
"hci_version": "4.0 (0x6)",
"hci_revision": "0x22bb",
"lmp_version": "4.0 (0x6)",
"lmp_subversion": "0x22bb",
"manufacturer": "Cambridge Silicon Radio (10)"
},
{
"device": "hci1",
"type": "Primary",
"bus": "USB",
"bd_address": "00:1A:7D:DA:71:13",
"acl_mtu": "310",
"acl_mtu_packets": "10",
"sco_mtu": "64",
"sco_mtu_packets": "8",
"state": [
"DOWN"
],
"rx_bytes": "4388363",
"rx_acl": "0",
"rx_sco": "0",
"rx_events": "122021",
"rx_errors": "0",
"tx_bytes": "52350",
"tx_acl": "0",
"tx_sco": "0",
"tx_commands": "3480",
"tx_errors": "2",
"features": [
"0xff",
"0xff",
"0x8f",
"0xfe",
"0xdb",
"0xff",
"0x5b",
"0x87"
],
"packet_type": [
"DM1",
"DM3",
"DM5",
"DH1",
"DH3",
"DH5",
"HV1",
"HV2",
"HV3"
],
"link_policy": [
"RSWITCH",
"HOLD",
"SNIFF",
"PARK"
],
"link_mode": [
"SLAVE",
"ACCEPT"
]
}
]
<a id="jc.parsers.hciconfig.parse"></a>
### parse
```python
def parse(data, raw=False, quiet=False)
```
Main text parsing function
Parameters:
data: (string) text data to parse
raw: (boolean) unprocessed output if True
quiet: (boolean) suppress warning messages if True
Returns:
List of Dictionaries. Raw or processed structured data.
### Parser Information
Compatibility: linux
Source: [`jc/parsers/hciconfig.py`](https://github.com/kellyjonbrazil/jc/blob/master/jc/parsers/hciconfig.py)
Version 1.4 by Kelly Brazil (kellyjonbrazil@gmail.com)

View File

@@ -1,13 +1,35 @@
[Home](https://kellyjonbrazil.github.io/jc/)
<a id="jc.parsers.history"></a>
# jc.parsers.history
jc - JSON CLI output utility history Parser
Usage:
jc - JSON Convert `history` command output parser
specify --history as the first argument if the piped input is coming from history
This parser will output a list of dictionaries each containing `line` and
`command` keys. If you would like a simple dictionary output, then use the
`-r` command-line option or the `raw=True` argument in the `parse()`
function.
Compatibility:
The "Magic" syntax is not supported since the `history` command is a shell
builtin.
'linux', 'darwin', 'cygwin', 'aix', 'freebsd'
Usage (cli):
$ history | jc --history
Usage (module):
import jc
result = jc.parse('history', history_command_output)
Schema:
[
{
"line": integer,
"command": string
}
]
Examples:
@@ -23,7 +45,7 @@ Examples:
},
{
"line": 120,
"command": "echo "hello""
"command": "echo \"hello\""
},
{
"line": 121,
@@ -36,41 +58,17 @@ Examples:
{
"118": "sleep 100",
"119": "ls /bin",
"120": "echo "hello"",
"120": "echo \"hello\"",
"121": "docker images",
...
}
## info
<a id="jc.parsers.history.parse"></a>
### parse
```python
info(self, /, *args, **kwargs)
```
## process
```python
process(proc_data)
```
Final processing to conform to the schema.
Parameters:
proc_data: (dictionary) raw structured data to process
Returns:
List of dictionaries. Structured data with the following schema:
[
{
"line": integer,
"command": string
}
]
## parse
```python
parse(data, raw=False, quiet=False)
def parse(data, raw=False, quiet=False)
```
Main text parsing function
@@ -78,11 +76,17 @@ Main text parsing function
Parameters:
data: (string) text data to parse
raw: (boolean) output preprocessed JSON if True
raw: (boolean) unprocessed output if True
quiet: (boolean) suppress warning messages if True
Returns:
Dictionary of raw structured data or
list of dictionaries of processed structured data
List of Dictionaries of processed structured data
### Parser Information
Compatibility: linux, darwin, cygwin, aix, freebsd
Source: [`jc/parsers/history.py`](https://github.com/kellyjonbrazil/jc/blob/master/jc/parsers/history.py)
Version 1.7 by Kelly Brazil (kellyjonbrazil@gmail.com)

115
docs/parsers/host.md Normal file
View File

@@ -0,0 +1,115 @@
[Home](https://kellyjonbrazil.github.io/jc/)
<a id="jc.parsers.host"></a>
# jc.parsers.host
jc - JSON Convert `host` command output parser
Supports parsing of the most commonly used RR types (A, AAAA, MX, TXT)
Usage (cli):
$ host google.com | jc --host
or
$ jc host google.com
Usage (module):
import jc
result = jc.parse('host', host_command_output)
Schema:
[
{
"hostname": string,
"address": [
string
],
"v6-address": [
string
],
"mail": [
string
]
}
]
[
{
"nameserver": string,
"zone": string,
"mname": string,
"rname": string,
"serial": integer,
"refresh": integer,
"retry": integer,
"expire": integer,
"minimum": integer
}
]
Examples:
$ host google.com | jc --host
[
{
"hostname": "google.com",
"address": [
"142.251.39.110"
],
"v6-address": [
"2a00:1450:400e:811::200e"
],
"mail": [
"smtp.google.com."
]
}
]
$ jc host -C sunet.se
[
{
"nameserver": "2001:6b0:7::2",
"zone": "sunet.se",
"mname": "sunic.sunet.se.",
"rname": "hostmaster.sunet.se.",
"serial": "2023090401",
"refresh": "28800",
"retry": "7200",
"expire": "604800",
"minimum": "300"
},
{
...
}
]
<a id="jc.parsers.host.parse"></a>
### parse
```python
def parse(data: str, raw: bool = False, quiet: bool = False)
```
Main text parsing function
Parameters:
data: (string) text data to parse
raw: (boolean) unprocessed output if True
quiet: (boolean) suppress warning messages if True
Returns:
List of Dictionaries. Raw or processed structured data.
### Parser Information
Compatibility: linux, darwin, cygwin, win32, aix, freebsd
Source: [`jc/parsers/host.py`](https://github.com/kellyjonbrazil/jc/blob/master/jc/parsers/host.py)
Version 1.0 by Pettai (pettai@sunet.se)

View File

@@ -1,13 +1,29 @@
[Home](https://kellyjonbrazil.github.io/jc/)
<a id="jc.parsers.hosts"></a>
# jc.parsers.hosts
jc - JSON CLI output utility hosts Parser
Usage:
jc - JSON Convert `/etc/hosts` file parser
specify --hosts as the first argument if the piped input is coming from a hosts file
Usage (cli):
Compatibility:
$ cat /etc/hosts | jc --hosts
'linux', 'darwin', 'cygwin', 'win32', 'aix', 'freebsd'
Usage (module):
import jc
result = jc.parse('hosts', hosts_file_output)
Schema:
[
{
"ip": string,
"hostname": [
string
]
}
]
Examples:
@@ -58,38 +74,12 @@ Examples:
}
]
## info
<a id="jc.parsers.hosts.parse"></a>
### parse
```python
info(self, /, *args, **kwargs)
```
## process
```python
process(proc_data)
```
Final processing to conform to the schema.
Parameters:
proc_data: (dictionary) raw structured data to process
Returns:
List of dictionaries. Structured data with the following schema:
[
{
"ip": string,
"hostname": [
string
]
}
]
## parse
```python
parse(data, raw=False, quiet=False)
def parse(data, raw=False, quiet=False)
```
Main text parsing function
@@ -97,10 +87,16 @@ Main text parsing function
Parameters:
data: (string) text data to parse
raw: (boolean) output preprocessed JSON if True
raw: (boolean) unprocessed output if True
quiet: (boolean) suppress warning messages if True
Returns:
List of dictionaries. Raw or processed structured data.
List of Dictionaries. Raw or processed structured data.
### Parser Information
Compatibility: linux, darwin, cygwin, win32, aix, freebsd
Source: [`jc/parsers/hosts.py`](https://github.com/kellyjonbrazil/jc/blob/master/jc/parsers/hosts.py)
Version 1.4 by Kelly Brazil (kellyjonbrazil@gmail.com)

View File

@@ -0,0 +1,336 @@
[Home](https://kellyjonbrazil.github.io/jc/)
<a id="jc.parsers.http_headers"></a>
# jc.parsers.http_headers
jc - JSON Convert HTTP headers parser
Converts HTTP request and response headers into a list of dictionaries.
Well-known headers are processed to allow multiple instances which are
aggregated into an array along with any comma-separated values. Integer,
float, and datetimes are converted where defined in the specifications.
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers
https://datatracker.ietf.org/doc/html/rfc2616
https://datatracker.ietf.org/doc/html/rfc3229
https://datatracker.ietf.org/doc/html/rfc7089
https://datatracker.ietf.org/doc/html/rfc7231
https://datatracker.ietf.org/doc/html/rfc5789
If you are converting HTTP headers from `curl` verbose output, use the
`curl-head` parser which will strip the `>` and `<` characters and remove
non-header lines that begin with `*`.
Usage (cli):
$ cat headers.txt | jc --http-headers
Usage (module):
import jc
result = jc.parse('http_headers', http_headers_output)
Schema:
[
{
"_type": string, # request or response
"_request_method": string,
"_request_uri": string,
"_request_version": string,
"_response_version": string,
"_response_status": integer,
"_response_reason": string or null,
"<header>": string,
# well-known headers:
"accept": [
string
],
"accept-ch": [
string
],
"accept-ch-lifetime": integer,
"accept-encoding": [
string
],
"accept-language": [
string
],
"accept-patch": [
string
],
"accept-post": [
string
],
"accept-ranges": [
string
],
"access-control-allow-headers": [
string
],
"access-control-allow-methods": [
string
],
"access-control-expose-headers": [
string
],
"access-control-max-age": integer,
"access-control-request-headers": [
string
],
"age": integer,
"allow": [
string
],
"alt-svc": [
string
],
"cache-control": [
string
],
"clear-site-data": [
string
],
"connection": [
string
],
"content-encoding": [
string
],
"content-dpr": integer,
"content-language": [
string
],
"content-length": integer,
"content-security-policy": [
string
],
"content-security-policy-report-only": [
string
],
"cookie": [
string
],
"critical-ch": [
string
],
"date": string,
"date_epoch_utc": integer,
"expect-ct": [
string
],
"expires": string,
"expires_epoch_utc": integer,
"device-memory": integer,
"downlink": integer,
"dpr": integer,
"forwarded": [
string
],
"if-match": [
string
],
"if-modified-since": string,
"if-modified-since_epoch_utc": integer,
"if-none-match": [
string
],
"if-range": string,
"if-range_epoch_utc": integer,
"if-unmodified-since": string,
"if-unmodified-since_epoch_utc": integer,
"im": [
string
],
"keep-alive": [
string
],
"large-allocation": integer,
"last-modified": string,
"last-modified_epoch_utc": integer,
"link": [
string
],
"max-forwards": integer,
"memento-datetime": string,
"memento-datetime_epoch_utc": integer,
"permissions-policy": [
string
],
"permissions-policy-report-only": [
string
],
"pragma": [
string
],
"proxy-authenticate": [
string
],
"reporting-endpoints": [
string
],
"retry-after": string,
"retry-after_epoch_utc": integer,
"rtt": integer,
"sec-ch-ua": [
string
],
"sec-ch-ua-full-version-list": [
string
],
"server": [
string
],
"server-timing": [
string
],
"set-cookie": [
string
],
"timing-allow-origin": [
string
],
"trailer": [
string
],
"transfer-encoding": [
string
],
"upgrade": [
string
],
"upgrade-insecure-requests": integer,
"vary": [
string
],
"via": [
string
],
"warning": [
string
],
"www-authenticate": [
string
],
"x-cache-hits": [
integer
],
"x-content-duration": float
}
]
Examples:
$ cat headers.txt | jc --http-headers -p
[
{
"_type": "request",
"_request_method": "HEAD",
"_request_uri": "/",
"_request_version": "HTTP/1.1",
"host": "example.com",
"user-agent": "curl/8.1.2",
"accept": [
"*/*"
]
},
{
"_type": "response",
"_response_version": "HTTP/1.1",
"_response_status": 200,
"_response_reason": [
"OK"
],
"accept-ranges": [
"bytes"
],
"age": 140203,
"cache-control": [
"max-age=604800"
],
"content-type": "text/html; charset=UTF-8",
"date": "Sun, 04 Feb 2024 02:25:07 GMT",
"etag": "\"3147526947\"",
"expires": "Sun, 11 Feb 2024 02:25:07 GMT",
"last-modified": "Thu, 17 Oct 2019 07:18:26 GMT",
"server": [
"ECS (sac/252F)"
],
"x-cache": "HIT",
"content-length": 1256,
"date_epoch_utc": 1707013507,
"expires_epoch_utc": 1707618307,
"last-modified_epoch_utc": 1571296706
}
]
$ cat headers.txt | jc --http-headers -p -r
[
{
"_type": "request",
"_request_method": "HEAD",
"_request_uri": "/",
"_request_version": "HTTP/1.1",
"host": "example.com",
"user-agent": "curl/8.1.2",
"accept": [
"*/*"
]
},
{
"_type": "response",
"_response_version": "HTTP/1.1",
"_response_status": 200,
"_response_reason": [
"OK"
],
"accept-ranges": [
"bytes"
],
"age": "140203",
"cache-control": [
"max-age=604800"
],
"content-type": "text/html; charset=UTF-8",
"date": "Sun, 04 Feb 2024 02:25:07 GMT",
"etag": "\"3147526947\"",
"expires": "Sun, 11 Feb 2024 02:25:07 GMT",
"last-modified": "Thu, 17 Oct 2019 07:18:26 GMT",
"server": [
"ECS (sac/252F)"
],
"x-cache": "HIT",
"content-length": "1256"
}
]
<a id="jc.parsers.http_headers.parse"></a>
### parse
```python
def parse(data: str,
raw: bool = False,
quiet: bool = False) -> List[Dict[str, Any]]
```
Main text parsing function
Parameters:
data: (string) text data to parse
raw: (boolean) unprocessed output if True
quiet: (boolean) suppress warning messages if True
Returns:
List of Dictionaries. Raw or processed structured data.
### Parser Information
Compatibility: linux, darwin, cygwin, win32, aix, freebsd
Source: [`jc/parsers/http_headers.py`](https://github.com/kellyjonbrazil/jc/blob/master/jc/parsers/http_headers.py)
Version 1.0 by Kelly Brazil (kellyjonbrazil@gmail.com)

View File

@@ -1,13 +1,51 @@
[Home](https://kellyjonbrazil.github.io/jc/)
<a id="jc.parsers.id"></a>
# jc.parsers.id
jc - JSON CLI output utility id Parser
Usage:
jc - JSON Convert `id` command output parser
specify --id as the first argument if the piped input is coming from id
Usage (cli):
Compatibility:
$ id | jc --id
'linux', 'darwin', 'aix', 'freebsd'
or
$ jc id
Usage (module):
import jc
result = jc.parse('id', id_command_output)
Schema:
{
"uid": {
"id": integer,
"name": string
},
"gid": {
"id": integer,
"name": string
},
"groups": [
{
"id": integer,
"name": string
},
{
"id": integer,
"name": string
}
],
"context": {
"user": string,
"role": string,
"type": string,
"level": string
}
}
Examples:
@@ -67,56 +105,12 @@ Examples:
}
}
## info
<a id="jc.parsers.id.parse"></a>
### parse
```python
info(self, /, *args, **kwargs)
```
## process
```python
process(proc_data)
```
Final processing to conform to the schema.
Parameters:
proc_data: (dictionary) raw structured data to process
Returns:
Dictionary. Structured data with the following schema:
{
"uid": {
"id": integer,
"name": string
},
"gid": {
"id": integer,
"name": string
},
"groups": [
{
"id": integer,
"name": string
},
{
"id": integer,
"name": string
}
],
"context": {
"user": string,
"role": string,
"type": string,
"level": string
}
}
## parse
```python
parse(data, raw=False, quiet=False)
def parse(data, raw=False, quiet=False)
```
Main text parsing function
@@ -124,10 +118,18 @@ Main text parsing function
Parameters:
data: (string) text data to parse
raw: (boolean) output preprocessed JSON if True
raw: (boolean) unprocessed output if True
quiet: (boolean) suppress warning messages if True
Returns:
List of dictionaries. Raw or processed structured data.
Dictionary. Raw or processed structured data.
### Parser Information
Compatibility: linux, darwin, aix, freebsd
Source: [`jc/parsers/id.py`](https://github.com/kellyjonbrazil/jc/blob/master/jc/parsers/id.py)
This parser can be used with the `--slurp` command-line option.
Version 1.7 by Kelly Brazil (kellyjonbrazil@gmail.com)

View File

@@ -1,19 +1,118 @@
[Home](https://kellyjonbrazil.github.io/jc/)
<a id="jc.parsers.ifconfig"></a>
# jc.parsers.ifconfig
jc - JSON CLI output utility ifconfig Parser
Usage:
jc - JSON Convert `ifconfig` command output parser
specify --ifconfig as the first argument if the piped input is coming from ifconfig
No `ifconfig` options are supported.
no ifconfig options are supported.
Consider using the `ip` command instead of `ifconfig` as it supports native
JSON output.
Compatibility:
Usage (cli):
'linux', 'aix', 'freebsd', 'darwin'
$ ifconfig | jc --ifconfig
or
$ jc ifconfig
Usage (module):
import jc
result = jc.parse('ifconfig', ifconfig_command_output)
Schema:
[
{
"name": string,
"type": string,
"metric": integer
"flags": integer,
"state": [
string
],
"mtu": integer,
"mac_addr": string,
"ipv4_addr": string, # [0]
"ipv4_mask": string, # [0]
"ipv4_bcast": string, # [0]
"ipv6_addr": string, # [0]
"ipv6_mask": integer, # [0]
"ipv6_scope": string, # [0]
"ipv6_scope_id": string, # [0]
"ipv6_type": string, # [0]
"rx_packets": integer,
"rx_bytes": integer,
"rx_errors": integer,
"rx_dropped": integer,
"rx_overruns": integer,
"rx_frame": integer,
"tx_packets": integer,
"tx_bytes": integer,
"tx_errors": integer,
"tx_dropped": integer,
"tx_overruns": integer,
"tx_carrier": integer,
"tx_collisions": integer,
"options": string,
"options_flags": [
string
],
"status": string,
"hw_address": string,
"media": string,
"media_flags": [
string
],
"nd6_options": integer,
"nd6_flags": [
string
],
"plugged": string,
"vendor": string,
"vendor_pn": string,
"vendor_sn": string,
"vendor_date": string,
"module_temperature": string,
"module_voltage": string
"ipv4": [
{
"address": string,
"mask": string,
"broadcast": string
}
],
"ipv6: [
{
"address": string,
"scope_id": string,
"mask": integer,
"scope": string,
"type": string
}
],
"lanes": [
{
"lane": integer,
"rx_power_mw": float,
"rx_power_dbm": float,
"tx_bias_ma": float
}
]
}
]
[0] these fields only pick up the last IP address in the interface
output and are here for backwards compatibility. For information on
all IP addresses, use the `ipv4` and `ipv6` objects which contain an
array of IP address objects.
Examples:
$ ifconfig | jc --ifconfig -p
$ ifconfig ens33 | jc --ifconfig -p
[
{
"name": "ens33",
@@ -25,190 +124,105 @@ Examples:
"MULTICAST"
],
"mtu": 1500,
"type": "Ethernet",
"mac_addr": "00:0c:29:3b:58:0e",
"ipv4_addr": "192.168.71.137",
"ipv4_mask": "255.255.255.0",
"ipv4_bcast": "192.168.71.255",
"ipv6_addr": "fe80::c1cb:715d:bc3e:b8a0",
"ipv6_mask": 64,
"ipv6_scope": "0x20",
"mac_addr": "00:0c:29:3b:58:0e",
"type": "Ethernet",
"ipv6_type": "link",
"metric": null,
"rx_packets": 8061,
"rx_bytes": 1514413,
"rx_errors": 0,
"rx_dropped": 0,
"rx_overruns": 0,
"rx_frame": 0,
"tx_packets": 4502,
"tx_errors": 0,
"tx_dropped": 0,
"tx_overruns": 0,
"tx_carrier": 0,
"tx_collisions": 0,
"rx_bytes": 1514413,
"tx_bytes": 866622,
"tx_errors": 0,
"tx_dropped": 0,
"tx_overruns": 0,
"tx_carrier": 0,
"tx_collisions": 0,
"metric": null
},
{
"name": "lo",
"flags": 73,
"state": [
"UP",
"LOOPBACK",
"RUNNING"
"ipv4": [
{
"address": "192.168.71.137",
"mask": "255.255.255.0",
"broadcast": "192.168.71.255"
}
],
"mtu": 65536,
"ipv4_addr": "127.0.0.1",
"ipv4_mask": "255.0.0.0",
"ipv4_bcast": null,
"ipv6_addr": "::1",
"ipv6_mask": 128,
"ipv6_scope": "0x10",
"mac_addr": null,
"type": "Local Loopback",
"rx_packets": 73,
"rx_bytes": 6009,
"rx_errors": 0,
"rx_dropped": 0,
"rx_overruns": 0,
"rx_frame": 0,
"tx_packets": 73,
"tx_bytes": 6009,
"tx_errors": 0,
"tx_dropped": 0,
"tx_overruns": 0,
"tx_carrier": 0,
"tx_collisions": 0,
"metric": null
"ipv6": [
{
"address": "fe80::c1cb:715d:bc3e:b8a0",
"scope_id": null,
"mask": 64,
"scope": "0x20",
"type": "link"
}
]
}
]
$ ifconfig | jc --ifconfig -p -r
$ ifconfig ens33 | jc --ifconfig -p -r
[
{
"name": "ens33",
"flags": "4163",
"state": "UP,BROADCAST,RUNNING,MULTICAST",
"mtu": "1500",
"type": "Ethernet",
"mac_addr": "00:0c:29:3b:58:0e",
"ipv4_addr": "192.168.71.137",
"ipv4_mask": "255.255.255.0",
"ipv4_bcast": "192.168.71.255",
"ipv6_addr": "fe80::c1cb:715d:bc3e:b8a0",
"ipv6_mask": "64",
"ipv6_scope": "0x20",
"mac_addr": "00:0c:29:3b:58:0e",
"type": "Ethernet",
"ipv6_type": "link",
"metric": null,
"rx_packets": "8061",
"rx_bytes": "1514413",
"rx_errors": "0",
"rx_dropped": "0",
"rx_overruns": "0",
"rx_frame": "0",
"tx_packets": "4502",
"tx_errors": "0",
"tx_dropped": "0",
"tx_overruns": "0",
"tx_carrier": "0",
"tx_collisions": "0",
"rx_bytes": "1514413",
"tx_bytes": "866622",
"tx_errors": "0",
"tx_dropped": "0",
"tx_overruns": "0",
"tx_carrier": "0",
"tx_collisions": "0",
"metric": null
},
{
"name": "lo",
"flags": "73",
"state": "UP,LOOPBACK,RUNNING",
"mtu": "65536",
"ipv4_addr": "127.0.0.1",
"ipv4_mask": "255.0.0.0",
"ipv4_bcast": null,
"ipv6_addr": "::1",
"ipv6_mask": "128",
"ipv6_scope": "0x10",
"mac_addr": null,
"type": "Local Loopback",
"rx_packets": "73",
"rx_bytes": "6009",
"rx_errors": "0",
"rx_dropped": "0",
"rx_overruns": "0",
"rx_frame": "0",
"tx_packets": "73",
"tx_bytes": "6009",
"tx_errors": "0",
"tx_dropped": "0",
"tx_overruns": "0",
"tx_carrier": "0",
"tx_collisions": "0",
"metric": null
}
]
## info
```python
info(self, /, *args, **kwargs)
```
## IfconfigParser
```python
IfconfigParser(self, console_output)
```
## InterfaceNotFound
```python
InterfaceNotFound(self, /, *args, **kwargs)
```
## process
```python
process(proc_data)
```
Final processing to conform to the schema.
Parameters:
proc_data: (dictionary) raw structured data to process
Returns:
List of dictionaries. Structured data with the following schema:
[
{
"name": string,
"flags": integer,
"state": [
string
"ipv4": [
{
"address": "192.168.71.137",
"mask": "255.255.255.0",
"broadcast": "192.168.71.255"
}
],
"mtu": integer,
"ipv4_addr": string,
"ipv4_mask": string,
"ipv4_bcast": string,
"ipv6_addr": string,
"ipv6_mask": integer,
"ipv6_scope": string,
"mac_addr": string,
"type": string,
"rx_packets": integer,
"rx_bytes": integer,
"rx_errors": integer,
"rx_dropped": integer,
"rx_overruns": integer,
"rx_frame": integer,
"tx_packets": integer,
"tx_bytes": integer,
"tx_errors": integer,
"tx_dropped": integer,
"tx_overruns": integer,
"tx_carrier": integer,
"tx_collisions": integer,
"metric": integer
"ipv6": [
{
"address": "fe80::c1cb:715d:bc3e:b8a0",
"scope_id": null,
"mask": "64",
"scope": "0x20",
"type": "link"
}
]
}
]
## parse
<a id="jc.parsers.ifconfig.parse"></a>
### parse
```python
parse(data, raw=False, quiet=False)
def parse(data: str,
raw: bool = False,
quiet: bool = False) -> List[Dict[str, Any]]
```
Main text parsing function
@@ -216,10 +230,16 @@ Main text parsing function
Parameters:
data: (string) text data to parse
raw: (boolean) output preprocessed JSON if True
raw: (boolean) unprocessed output if True
quiet: (boolean) suppress warning messages if True
Returns:
List of dictionaries. Raw or processed structured data.
List of Dictionaries. Raw or processed structured data.
### Parser Information
Compatibility: linux, aix, freebsd, darwin
Source: [`jc/parsers/ifconfig.py`](https://github.com/kellyjonbrazil/jc/blob/master/jc/parsers/ifconfig.py)
Version 2.3 by Kelly Brazil (kellyjonbrazil@gmail.com)

View File

@@ -1,76 +1,84 @@
[Home](https://kellyjonbrazil.github.io/jc/)
<a id="jc.parsers.ini"></a>
# jc.parsers.ini
jc - JSON CLI output utility INI Parser
Usage:
jc - JSON Convert INI file parser
specify --ini as the first argument if the piped input is coming from an INI file
Parses standard INI files.
Compatibility:
- Delimiter can be `=` or `:`. Missing values are supported.
- Comment prefix can be `#` or `;`. Comments must be on their own line.
- If duplicate keys are found, only the last value will be used.
- If any section names have the same name as a top-level key, the top-level
key will be overwritten by the section data.
'linux', 'darwin', 'cygwin', 'win32', 'aix', 'freebsd'
> Note: Values starting and ending with double or single quotation marks
> will have the marks removed. If you would like to keep the quotation
> marks, use the `-r` command-line argument or the `raw=True` argument in
> `parse()`.
Usage (cli):
$ cat foo.ini | jc --ini
Usage (module):
import jc
result = jc.parse('ini', ini_file_output)
Schema:
INI document converted to a dictionary - see the python configparser
standard library documentation for more details.
{
"<key1>": string,
"<key2>": string,
"<section1>": {
"<key1>": string,
"<key2>": string
},
"<section2>": {
"<key1>": string,
"<key2>": string
}
}
Examples:
$ cat example.ini
[DEFAULT]
ServerAliveInterval = 45
Compression = yes
CompressionLevel = 9
ForwardX11 = yes
foo = fiz
bar = buz
[bitbucket.org]
User = hg
[section1]
fruit = apple
color = blue
[topsecret.server.com]
Port = 50022
ForwardX11 = no
[section2]
fruit = pear
color = green
$ cat example.ini | jc --ini -p
{
"bitbucket.org": {
"serveraliveinterval": "45",
"compression": "yes",
"compressionlevel": "9",
"forwardx11": "yes",
"user": "hg"
"foo": "fiz",
"bar": "buz",
"section1": {
"fruit": "apple",
"color": "blue"
},
"topsecret.server.com": {
"serveraliveinterval": "45",
"compression": "yes",
"compressionlevel": "9",
"forwardx11": "no",
"port": "50022"
"section2": {
"fruit": "pear",
"color": "green"
}
}
## info
<a id="jc.parsers.ini.parse"></a>
### parse
```python
info(self, /, *args, **kwargs)
```
## process
```python
process(proc_data)
```
Final processing to conform to the schema.
Parameters:
proc_data: (dictionary) raw structured data to process
Returns:
Dictionary representing an ini document:
{
ini document converted to a dictionary
see configparser standard library documentation for more details
}
## parse
```python
parse(data, raw=False, quiet=False)
def parse(data, raw=False, quiet=False)
```
Main text parsing function
@@ -78,10 +86,16 @@ Main text parsing function
Parameters:
data: (string) text data to parse
raw: (boolean) output preprocessed JSON if True
raw: (boolean) unprocessed output if True
quiet: (boolean) suppress warning messages if True
Returns:
Dictionary representing the ini file
Dictionary representing the INI file.
### Parser Information
Compatibility: linux, darwin, cygwin, win32, aix, freebsd
Source: [`jc/parsers/ini.py`](https://github.com/kellyjonbrazil/jc/blob/master/jc/parsers/ini.py)
Version 2.2 by Kelly Brazil (kellyjonbrazil@gmail.com)

123
docs/parsers/ini_dup.md Normal file
View File

@@ -0,0 +1,123 @@
[Home](https://kellyjonbrazil.github.io/jc/)
<a id="jc.parsers.ini_dup"></a>
# jc.parsers.ini_dup
jc - JSON Convert INI with duplicate key file parser
Parses standard INI files and preserves duplicate values. All values are
contained in lists/arrays.
- Delimiter can be `=` or `:`. Missing values are supported.
- Comment prefix can be `#` or `;`. Comments must be on their own line.
- If any section names have the same name as a top-level key, the top-level
key will be overwritten by the section data.
- If multi-line values are used, each line will be a separate item in the
value list. Blank lines in multi-line values are not supported.
> Note: Values starting and ending with double or single quotation marks
> will have the marks removed. If you would like to keep the quotation
> marks, use the `-r` command-line argument or the `raw=True` argument in
> `parse()`.
Usage (cli):
$ cat foo.ini | jc --ini-dup
Usage (module):
import jc
result = jc.parse('ini_dup', ini_file_output)
Schema:
INI document converted to a dictionary - see the python configparser
standard library documentation for more details.
{
"<key1>": [
string
],
"<key2>": [
string
],
"<section1>": {
"<key1>": [
string
],
"<key2>": [
string
]
}
}
Examples:
$ cat example.ini
foo = fiz
bar = buz
[section1]
fruit = apple
color = blue
color = red
[section2]
fruit = pear
fruit = peach
color = green
$ cat example.ini | jc --ini-dup -p
{
"foo": [
"fiz"
],
"bar": [
"buz"
],
"section1": {
"fruit": [
"apple"
],
"color": [
"blue",
"red"
]
},
"section2": {
"fruit": [
"pear",
"peach"
],
"color": [
"green"
]
}
}
<a id="jc.parsers.ini_dup.parse"></a>
### parse
```python
def parse(data, raw=False, quiet=False)
```
Main text parsing function
Parameters:
data: (string) text data to parse
raw: (boolean) unprocessed output if True
quiet: (boolean) suppress warning messages if True
Returns:
Dictionary representing the INI file.
### Parser Information
Compatibility: linux, darwin, cygwin, win32, aix, freebsd
Source: [`jc/parsers/ini_dup.py`](https://github.com/kellyjonbrazil/jc/blob/master/jc/parsers/ini_dup.py)
Version 1.2 by Kelly Brazil (kellyjonbrazil@gmail.com)

187
docs/parsers/iostat.md Normal file
View File

@@ -0,0 +1,187 @@
[Home](https://kellyjonbrazil.github.io/jc/)
<a id="jc.parsers.iostat"></a>
# jc.parsers.iostat
jc - JSON Convert `iostat` command output parser
> Note: `iostat` version 11 and higher include a JSON output option
Usage (cli):
$ iostat | jc --iostat
or
$ jc iostat
Usage (module):
import jc
result = jc.parse('iostat', iostat_command_output)
Schema:
[
{
"type": string,
"percent_user": float,
"percent_nice": float,
"percent_system": float,
"percent_iowait": float,
"percent_steal": float,
"percent_idle": float,
"device": string,
"tps": float,
"kb_read_s": float,
"mb_read_s": float,
"kb_wrtn_s": float,
"mb_wrtn_s": float,
"kb_read": integer,
"mb_read": integer,
"kb_wrtn": integer,
"mb_wrtn": integer,
'kb_dscd': integer,
'mb_dscd': integer,
"rrqm_s": float,
"wrqm_s": float,
"r_s": float,
"w_s": float,
"rmb_s": float,
"rkb_s": float,
"wmb_s": float,
"wkb_s": float,
"avgrq_sz": float,
"avgqu_sz": float,
"await": float,
"r_await": float,
"w_await": float,
"svctm": float,
"aqu_sz": float,
"rareq_sz": float,
"wareq_sz": float,
"d_s": float,
"dkb_s": float,
"dmb_s": float,
"drqm_s": float,
"percent_drqm": float,
"d_await": float,
"dareq_sz": float,
"f_s": float,
"f_await": float,
"kb_dscd_s": float,
"mb_dscd_s": float,
"percent_util": float,
"percent_rrqm": float,
"percent_wrqm": float
}
]
Examples:
$ iostat | jc --iostat -p
[
{
"percent_user": 0.15,
"percent_nice": 0.0,
"percent_system": 0.18,
"percent_iowait": 0.0,
"percent_steal": 0.0,
"percent_idle": 99.67,
"type": "cpu"
},
{
"device": "sda",
"tps": 0.29,
"kb_read_s": 7.22,
"kb_wrtn_s": 1.25,
"kb_read": 194341,
"kb_wrtn": 33590,
"type": "device"
},
{
"device": "dm-0",
"tps": 0.29,
"kb_read_s": 5.99,
"kb_wrtn_s": 1.17,
"kb_read": 161361,
"kb_wrtn": 31522,
"type": "device"
},
{
"device": "dm-1",
"tps": 0.0,
"kb_read_s": 0.08,
"kb_wrtn_s": 0.0,
"kb_read": 2204,
"kb_wrtn": 0,
"type": "device"
}
]
$ iostat | jc --iostat -p -r
[
{
"percent_user": "0.15",
"percent_nice": "0.00",
"percent_system": "0.18",
"percent_iowait": "0.00",
"percent_steal": "0.00",
"percent_idle": "99.67",
"type": "cpu"
},
{
"device": "sda",
"tps": "0.29",
"kb_read_s": "7.22",
"kb_wrtn_s": "1.25",
"kb_read": "194341",
"kb_wrtn": "33590",
"type": "device"
},
{
"device": "dm-0",
"tps": "0.29",
"kb_read_s": "5.99",
"kb_wrtn_s": "1.17",
"kb_read": "161361",
"kb_wrtn": "31522",
"type": "device"
},
{
"device": "dm-1",
"tps": "0.00",
"kb_read_s": "0.08",
"kb_wrtn_s": "0.00",
"kb_read": "2204",
"kb_wrtn": "0",
"type": "device"
}
]
<a id="jc.parsers.iostat.parse"></a>
### parse
```python
def parse(data, raw=False, quiet=False)
```
Main text parsing function
Parameters:
data: (string) text data to parse
raw: (boolean) unprocessed output if True
quiet: (boolean) suppress warning messages if True
Returns:
List of Dictionaries. Raw or processed structured data.
### Parser Information
Compatibility: linux
Source: [`jc/parsers/iostat.py`](https://github.com/kellyjonbrazil/jc/blob/master/jc/parsers/iostat.py)
Version 1.1 by Kelly Brazil (kellyjonbrazil@gmail.com)

134
docs/parsers/iostat_s.md Normal file
View File

@@ -0,0 +1,134 @@
[Home](https://kellyjonbrazil.github.io/jc/)
<a id="jc.parsers.iostat_s"></a>
# jc.parsers.iostat_s
jc - JSON Convert `iostat` command output streaming parser
> This streaming parser outputs JSON Lines (cli) or returns an Iterable of
> Dictionaries (module)
> Note: `iostat` version 11 and higher include a JSON output option
Usage (cli):
$ iostat | jc --iostat-s
> Note: When piping `jc` converted `iostat` output to other processes it may
> appear the output is hanging due to the OS pipe buffers. This is because
> `iostat` output is too small to quickly fill up the buffer. Use the `-u`
> option to unbuffer the `jc` output if you would like immediate output. See
> the [readme](https://github.com/kellyjonbrazil/jc/tree/master#unbuffering-output)
> for more information.
Usage (module):
import jc
result = jc.parse('iostat_s', iostat_command_output.splitlines())
for item in result:
# do something
Schema:
{
"type": string,
"percent_user": float,
"percent_nice": float,
"percent_system": float,
"percent_iowait": float,
"percent_steal": float,
"percent_idle": float,
"device": string,
"tps": float,
"kb_read_s": float,
"mb_read_s": float,
"kb_wrtn_s": float,
"mb_wrtn_s": float,
"kb_read": integer,
"mb_read": integer,
"kb_wrtn": integer,
"mb_wrtn": integer,
'kb_dscd': integer,
'mb_dscd': integer,
"rrqm_s": float,
"wrqm_s": float,
"r_s": float,
"w_s": float,
"rmb_s": float,
"rkb_s": float,
"wmb_s": float,
"wkb_s": float,
"avgrq_sz": float,
"avgqu_sz": float,
"await": float,
"r_await": float,
"w_await": float,
"svctm": float,
"aqu_sz": float,
"rareq_sz": float,
"wareq_sz": float,
"d_s": float,
"dkb_s": float,
"dmb_s": float,
"drqm_s": float,
"percent_drqm": float,
"d_await": float,
"dareq_sz": float,
"f_s": float,
"f_await": float,
"kb_dscd_s": float,
"mb_dscd_s": float,
"percent_util": float,
"percent_rrqm": float,
"percent_wrqm": float,
# below object only exists if using -qq or ignore_exceptions=True
"_jc_meta": {
"success": boolean, # false if error parsing
"error": string, # exists if "success" is false
"line": string # exists if "success" is false
}
}
Examples:
$ iostat | jc --iostat-s
{"percent_user":0.14,"percent_nice":0.0,"percent_system":0.16,...}
{"device":"sda","tps":0.24,"kb_read_s":5.28,"kb_wrtn_s":1.1...}
...
$ iostat | jc --iostat-s -r
{"percent_user":"0.14","percent_nice":"0.00","percent_system":"0.16"...}
{"device":"sda","tps":"0.24","kb_read_s":"5.28","kb_wrtn_s":"1.10"...}
...
<a id="jc.parsers.iostat_s.parse"></a>
### parse
```python
def parse(data, raw=False, quiet=False, ignore_exceptions=False)
```
Main text parsing generator function. Returns an iterable object.
Parameters:
data: (iterable) line-based text data to parse
(e.g. sys.stdin or str.splitlines())
raw: (boolean) unprocessed output if True
quiet: (boolean) suppress warning messages if True
ignore_exceptions: (boolean) ignore parsing exceptions if True
Returns:
Iterable of Dictionaries
### Parser Information
Compatibility: linux
Source: [`jc/parsers/iostat_s.py`](https://github.com/kellyjonbrazil/jc/blob/master/jc/parsers/iostat_s.py)
Version 1.3 by Kelly Brazil (kellyjonbrazil@gmail.com)

559
docs/parsers/ip_address.md Normal file
View File

@@ -0,0 +1,559 @@
[Home](https://kellyjonbrazil.github.io/jc/)
<a id="jc.parsers.ip_address"></a>
# jc.parsers.ip_address
jc - JSON Convert IP Address string parser
Accepts standard and integer IP address notation for both IPv4 and IPv6
addresses. CIDR subnet mask and Scope ID is also allowed for standard
notation. See examples below.
Usage (cli):
$ echo '192.168.1.1' | jc --ip-address
Usage (module):
import jc
result = jc.parse('ip_address', ip_address_string)
Schema:
{
"version": integer,
"max_prefix_length": integer,
"ip": string,
"ip_compressed": string,
"ip_exploded": string,
"ip_split": [
string
],
"scope_id": string/null,
"ipv4_mapped": string/null,
"six_to_four": string/null,
"teredo_client": string/null,
"teredo_server": string/null,
"dns_ptr": string,
"network": string,
"broadcast": string,
"hostmask": string,
"netmask": string,
"cidr_netmask": integer,
"hosts": integer,
"first_host": string,
"last_host": string,
"is_multicast": boolean,
"is_private": boolean,
"is_global": boolean,
"is_link_local": boolean,
"is_loopback": boolean,
"is_reserved": boolean,
"is_unspecified": boolean,
"int": {
"ip": integer,
"network": integer,
"broadcast": integer,
"first_host": integer,
"last_host": integer
},
"hex": {
"ip": string,
"network": string,
"broadcast": string,
"hostmask": string,
"netmask": string,
"first_host": string,
"last_host": string
},
"bin": {
"ip": string,
"network": string,
"broadcast": string,
"hostmask": string,
"netmask": string,
"first_host": string,
"last_host": string
}
}
Examples:
$ echo 192.168.2.10/24 | jc --ip-address -p
{
"version": 4,
"max_prefix_length": 32,
"ip": "192.168.2.10",
"ip_compressed": "192.168.2.10",
"ip_exploded": "192.168.2.10",
"ip_split": [
"192",
"168",
"2",
"10"
],
"scope_id": null,
"ipv4_mapped": null,
"six_to_four": null,
"teredo_client": null,
"teredo_server": null,
"dns_ptr": "10.2.168.192.in-addr.arpa",
"network": "192.168.2.0",
"broadcast": "192.168.2.255",
"hostmask": "0.0.0.255",
"netmask": "255.255.255.0",
"cidr_netmask": 24,
"hosts": 254,
"first_host": "192.168.2.1",
"last_host": "192.168.2.254",
"is_multicast": false,
"is_private": true,
"is_global": false,
"is_link_local": false,
"is_loopback": false,
"is_reserved": false,
"is_unspecified": false,
"int": {
"ip": 3232236042,
"network": 3232236032,
"broadcast": 3232236287,
"first_host": 3232236033,
"last_host": 3232236286
},
"hex": {
"ip": "c0:a8:02:0a",
"network": "c0:a8:02:00",
"broadcast": "c0:a8:02:ff",
"hostmask": "00:00:00:ff",
"netmask": "ff:ff:ff:00",
"first_host": "c0:a8:02:01",
"last_host": "c0:a8:02:fe"
},
"bin": {
"ip": "11000000101010000000001000001010",
"network": "11000000101010000000001000000000",
"broadcast": "11000000101010000000001011111111",
"hostmask": "00000000000000000000000011111111",
"netmask": "11111111111111111111111100000000",
"first_host": "11000000101010000000001000000001",
"last_host": "11000000101010000000001011111110"
}
}
$ echo 3232236042 | jc --ip-address -p
{
"version": 4,
"max_prefix_length": 32,
"ip": "192.168.2.10",
"ip_compressed": "192.168.2.10",
"ip_exploded": "192.168.2.10",
"ip_split": [
"192",
"168",
"2",
"10"
],
"scope_id": null,
"ipv4_mapped": null,
"six_to_four": null,
"teredo_client": null,
"teredo_server": null,
"dns_ptr": "10.2.168.192.in-addr.arpa",
"network": "192.168.2.10",
"broadcast": "192.168.2.10",
"hostmask": "0.0.0.0",
"netmask": "255.255.255.255",
"cidr_netmask": 32,
"hosts": 1,
"first_host": "192.168.2.10",
"last_host": "192.168.2.10",
"is_multicast": false,
"is_private": true,
"is_global": false,
"is_link_local": false,
"is_loopback": false,
"is_reserved": false,
"is_unspecified": false,
"int": {
"ip": 3232236042,
"network": 3232236042,
"broadcast": 3232236042,
"first_host": 3232236042,
"last_host": 3232236042
},
"hex": {
"ip": "c0:a8:02:0a",
"network": "c0:a8:02:0a",
"broadcast": "c0:a8:02:0a",
"hostmask": "00:00:00:00",
"netmask": "ff:ff:ff:ff",
"first_host": "c0:a8:02:0a",
"last_host": "c0:a8:02:0a"
},
"bin": {
"ip": "11000000101010000000001000001010",
"network": "11000000101010000000001000001010",
"broadcast": "11000000101010000000001000001010",
"hostmask": "00000000000000000000000000000000",
"netmask": "11111111111111111111111111111111",
"first_host": "11000000101010000000001000001010",
"last_host": "11000000101010000000001000001010"
}
}
$ echo 127:0:de::1%128/96 | jc --ip-address -p
{
"version": 6,
"max_prefix_length": 128,
"ip": "127:0:de::1",
"ip_compressed": "127:0:de::1",
"ip_exploded": "0127:0000:00de:0000:0000:0000:0000:0001",
"ip_split": [
"0127",
"0000",
"00de",
"0000",
"0000",
"0000",
"0000",
"0001"
],
"scope_id": "128",
"ipv4_mapped": null,
"six_to_four": null,
"teredo_client": null,
"teredo_server": null,
"dns_ptr": "1.0.0.0.0.0...0.0.0.e.d.0.0.0.0.0.0.7.2.1.0.ip6.arpa",
"network": "127:0:de::",
"broadcast": "127:0:de::ffff:ffff",
"hostmask": "::ffff:ffff",
"netmask": "ffff:ffff:ffff:ffff:ffff:ffff::",
"cidr_netmask": 96,
"hosts": 4294967294,
"first_host": "127:0:de::1",
"last_host": "127:0:de::ffff:fffe",
"is_multicast": false,
"is_private": false,
"is_global": true,
"is_link_local": false,
"is_loopback": false,
"is_reserved": true,
"is_unspecified": false,
"int": {
"ip": 1531727573536155682370944093904699393,
"network": 1531727573536155682370944093904699392,
"broadcast": 1531727573536155682370944098199666687,
"first_host": 1531727573536155682370944093904699393,
"last_host": 1531727573536155682370944098199666686
},
"hex": {
"ip": "01:27:00:00:00:de:00:00:00:00:00:00:00:00:00:01",
"network": "01:27:00:00:00:de:00:00:00:00:00:00:00:00:00:00",
"broadcast": "01:27:00:00:00:de:00:00:00:00:00:00:ff:ff:ff:ff",
"hostmask": "00:00:00:00:00:00:00:00:00:00:00:00:ff:ff:ff:ff",
"netmask": "ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:00:00:00:00",
"first_host": "01:27:00:00:00:de:00:00:00:00:00:00:00:00:00:01",
"last_host": "01:27:00:00:00:de:00:00:00:00:00:00:ff:ff:ff:fe"
},
"bin": {
"ip": "0000000100100111000000000000000000000000110...000000000001",
"network": "00000001001001110000000000000000000000...000000000000",
"broadcast": "000000010010011100000000000000000000...111111111111",
"hostmask": "0000000000000000000000000000000000000...111111111111",
"netmask": "11111111111111111111111111111111111111...000000000000",
"first_host": "00000001001001110000000000000000000...000000000001",
"last_host": "000000010010011100000000000000000000...1111111111110"
}
}
$ echo 1531727573536155682370944093904699393 | jc --ip-address -p
{
"version": 6,
"max_prefix_length": 128,
"ip": "127:0:de::1",
"ip_compressed": "127:0:de::1",
"ip_exploded": "0127:0000:00de:0000:0000:0000:0000:0001",
"ip_split": [
"0127",
"0000",
"00de",
"0000",
"0000",
"0000",
"0000",
"0001"
],
"scope_id": null,
"ipv4_mapped": null,
"six_to_four": null,
"teredo_client": null,
"teredo_server": null,
"dns_ptr": "1.0.0.0.0.0....0.0.0.0.e.d.0.0.0.0.0.0.7.2.1.0.ip6.arpa",
"network": "127:0:de::1",
"broadcast": "127:0:de::1",
"hostmask": "::",
"netmask": "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff",
"cidr_netmask": 128,
"hosts": 1,
"first_host": "127:0:de::1",
"last_host": "127:0:de::1",
"is_multicast": false,
"is_private": false,
"is_global": true,
"is_link_local": false,
"is_loopback": false,
"is_reserved": true,
"is_unspecified": false,
"int": {
"ip": 1531727573536155682370944093904699393,
"network": 1531727573536155682370944093904699393,
"broadcast": 1531727573536155682370944093904699393,
"first_host": 1531727573536155682370944093904699393,
"last_host": 1531727573536155682370944093904699393
},
"hex": {
"ip": "01:27:00:00:00:de:00:00:00:00:00:00:00:00:00:01",
"network": "01:27:00:00:00:de:00:00:00:00:00:00:00:00:00:01",
"broadcast": "01:27:00:00:00:de:00:00:00:00:00:00:00:00:00:01",
"hostmask": "00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00",
"netmask": "ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff",
"first_host": "01:27:00:00:00:de:00:00:00:00:00:00:00:00:00:01",
"last_host": "01:27:00:00:00:de:00:00:00:00:00:00:00:00:00:01"
},
"bin": {
"ip": "0000000100100111000000000000000000000000110111100...000001",
"network": "00000001001001110000000000000000000000001101...000001",
"broadcast": "000000010010011100000000000000000000000011...000001",
"hostmask": "0000000000000000000000000000000000000000000...000000",
"netmask": "11111111111111111111111111111111111111111111...111111",
"first_host": "00000001001001110000000000000000000000001...000001",
"last_host": "000000010010011100000000000000000000000011...0000001"
}
}
# IPv4 Mapped Address
$ echo ::FFFF:192.168.1.35 | jc --ip-address -p
{
"version": 6,
"max_prefix_length": 128,
"ip": "::ffff:c0a8:123",
"ip_compressed": "::ffff:c0a8:123",
"ip_exploded": "0000:0000:0000:0000:0000:ffff:c0a8:0123",
"ip_split": [
"0000",
"0000",
"0000",
"0000",
"0000",
"ffff",
"c0a8",
"0123"
],
"scope_id": null,
"ipv4_mapped": "192.168.1.35",
"six_to_four": null,
"teredo_client": null,
"teredo_server": null,
"dns_ptr": "3.2.1.0.8.a.0.c.f.f.f.f.0.0....0.0.0.0.0.0.ip6.arpa",
"network": "::ffff:c0a8:123",
"broadcast": "::ffff:c0a8:123",
"hostmask": "::",
"netmask": "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff",
"cidr_netmask": 128,
"hosts": 1,
"first_host": "::ffff:c0a8:123",
"last_host": "::ffff:c0a8:123",
"is_multicast": false,
"is_private": true,
"is_global": false,
"is_link_local": false,
"is_loopback": false,
"is_reserved": true,
"is_unspecified": false,
"int": {
"ip": 281473913979171,
"network": 281473913979171,
"broadcast": 281473913979171,
"first_host": 281473913979171,
"last_host": 281473913979171
},
"hex": {
"ip": "00:00:00:00:00:00:00:00:00:00:ff:ff:c0:a8:01:23",
"network": "00:00:00:00:00:00:00:00:00:00:ff:ff:c0:a8:01:23",
"broadcast": "00:00:00:00:00:00:00:00:00:00:ff:ff:c0:a8:01:23",
"hostmask": "00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00",
"netmask": "ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff",
"first_host": "00:00:00:00:00:00:00:00:00:00:ff:ff:c0:a8:01:23",
"last_host": "00:00:00:00:00:00:00:00:00:00:ff:ff:c0:a8:01:23"
},
"bin": {
"ip": "000000000000000000000000000000000000000000000...100100011",
"network": "0000000000000000000000000000000000000000...000100011",
"broadcast": "00000000000000000000000000000000000000...000100011",
"hostmask": "000000000000000000000000000000000000000...000000000",
"netmask": "1111111111111111111111111111111111111111...111111111",
"first_host": "0000000000000000000000000000000000000...100100011",
"last_host": "00000000000000000000000000000000000000...0100100011"
}
}
# 6to4 Address
$ echo 2002:c000:204::/48 | jc --ip-address -p
{
"version": 6,
"max_prefix_length": 128,
"ip": "2002:c000:204::",
"ip_compressed": "2002:c000:204::",
"ip_exploded": "2002:c000:0204:0000:0000:0000:0000:0000",
"ip_split": [
"2002",
"c000",
"0204",
"0000",
"0000",
"0000",
"0000",
"0000"
],
"scope_id": null,
"ipv4_mapped": null,
"six_to_four": "192.0.2.4",
"teredo_client": null,
"teredo_server": null,
"dns_ptr": "0.0.0.0.0.0.0...0.0.0.4.0.2.0.0.0.0.c.2.0.0.2.ip6.arpa",
"network": "2002:c000:204::",
"broadcast": "2002:c000:204:ffff:ffff:ffff:ffff:ffff",
"hostmask": "::ffff:ffff:ffff:ffff:ffff",
"netmask": "ffff:ffff:ffff::",
"cidr_netmask": 48,
"hosts": 1208925819614629174706174,
"first_host": "2002:c000:204::1",
"last_host": "2002:c000:204:ffff:ffff:ffff:ffff:fffe",
"is_multicast": false,
"is_private": false,
"is_global": true,
"is_link_local": false,
"is_loopback": false,
"is_reserved": false,
"is_unspecified": false,
"int": {
"ip": 42549574682102084431821433448024768512,
"network": 42549574682102084431821433448024768512,
"broadcast": 42549574682103293357641048077199474687,
"first_host": 42549574682102084431821433448024768513,
"last_host": 42549574682103293357641048077199474686
},
"hex": {
"ip": "20:02:c0:00:02:04:00:00:00:00:00:00:00:00:00:00",
"network": "20:02:c0:00:02:04:00:00:00:00:00:00:00:00:00:00",
"broadcast": "20:02:c0:00:02:04:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff",
"hostmask": "00:00:00:00:00:00:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff",
"netmask": "ff:ff:ff:ff:ff:ff:00:00:00:00:00:00:00:00:00:00",
"first_host": "20:02:c0:00:02:04:00:00:00:00:00:00:00:00:00:01",
"last_host": "20:02:c0:00:02:04:ff:ff:ff:ff:ff:ff:ff:ff:ff:fe"
},
"bin": {
"ip": "00100000000000101100000000000000000000100000010...00000000",
"network": "001000000000001011000000000000000000001000...00000000",
"broadcast": "0010000000000010110000000000000000000010...11111111",
"hostmask": "00000000000000000000000000000000000000000...11111111",
"netmask": "111111111111111111111111111111111111111111...00000000",
"first_host": "001000000000001011000000000000000000001...00000001",
"last_host": "0010000000000010110000000000000000000010...111111110"
}
}
# Teredo Address
$ echo 2001:0000:4136:e378:8000:63bf:3fff:fdd2 | jc --ip-address -p
{
"version": 6,
"max_prefix_length": 128,
"ip": "2001:0:4136:e378:8000:63bf:3fff:fdd2",
"ip_compressed": "2001:0:4136:e378:8000:63bf:3fff:fdd2",
"ip_exploded": "2001:0000:4136:e378:8000:63bf:3fff:fdd2",
"ip_split": [
"2001",
"0000",
"4136",
"e378",
"8000",
"63bf",
"3fff",
"fdd2"
],
"scope_id": null,
"ipv4_mapped": null,
"six_to_four": null,
"teredo_client": "192.0.2.45",
"teredo_server": "65.54.227.120",
"dns_ptr": "2.d.d.f.f.f.f.3.f.b.3.6.0.0.0.8.8....0.1.0.0.2.ip6.arpa",
"network": "2001:0:4136:e378:8000:63bf:3fff:fdd2",
"broadcast": "2001:0:4136:e378:8000:63bf:3fff:fdd2",
"hostmask": "::",
"netmask": "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff",
"cidr_netmask": 128,
"hosts": 1,
"first_host": "2001:0:4136:e378:8000:63bf:3fff:fdd2",
"last_host": "2001:0:4136:e378:8000:63bf:3fff:fdd2",
"is_multicast": false,
"is_private": true,
"is_global": false,
"is_link_local": false,
"is_loopback": false,
"is_reserved": false,
"is_unspecified": false,
"int": {
"ip": 42540488182158724593221357832373272018,
"network": 42540488182158724593221357832373272018,
"broadcast": 42540488182158724593221357832373272018,
"first_host": 42540488182158724593221357832373272018,
"last_host": 42540488182158724593221357832373272018
},
"hex": {
"ip": "20:01:00:00:41:36:e3:78:80:00:63:bf:3f:ff:fd:d2",
"network": "20:01:00:00:41:36:e3:78:80:00:63:bf:3f:ff:fd:d2",
"broadcast": "20:01:00:00:41:36:e3:78:80:00:63:bf:3f:ff:fd:d2",
"hostmask": "00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00",
"netmask": "ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff",
"first_host": "20:01:00:00:41:36:e3:78:80:00:63:bf:3f:ff:fd:d2",
"last_host": "20:01:00:00:41:36:e3:78:80:00:63:bf:3f:ff:fd:d2"
},
"bin": {
"ip": "0010000000000001000000000000000001000001001...110111010010",
"network": "00100000000000010000000000000000010000...110111010010",
"broadcast": "001000000000000100000000000000000100...110111010010",
"hostmask": "0000000000000000000000000000000000000...000000000000",
"netmask": "11111111111111111111111111111111111111...111111111111",
"first_host": "00100000000000010000000000000000010...110111010010",
"last_host": "001000000000000100000000000000000100...110111010010"
}
}
<a id="jc.parsers.ip_address.parse"></a>
### parse
```python
def parse(data: str, raw: bool = False, quiet: bool = False) -> Dict
```
Main text parsing function
Parameters:
data: (string) text data to parse
raw: (boolean) unprocessed output if True
quiet: (boolean) suppress warning messages if True
Returns:
Dictionary. Raw or processed structured data.
### Parser Information
Compatibility: linux, darwin, cygwin, win32, aix, freebsd
Source: [`jc/parsers/ip_address.py`](https://github.com/kellyjonbrazil/jc/blob/master/jc/parsers/ip_address.py)
This parser can be used with the `--slurp` command-line option.
Version 1.4 by Kelly Brazil (kellyjonbrazil@gmail.com)

76
docs/parsers/ip_route.md Normal file
View File

@@ -0,0 +1,76 @@
[Home](https://kellyjonbrazil.github.io/jc/)
<a id="jc.parsers.ip_route"></a>
# jc.parsers.ip_route
jc - JSON Convert `ip route` command output parser
Usage (cli):
$ ip route | jc --ip-route
or
$ jc ip-route
Usage (module):
import jc
result = jc.parse('ip_route', ip_route_command_output)
Schema:
[
{
"ip": string,
"via": string,
"dev": string,
"metric": integer,
"proto": string,
"scope": string,
"src": string,
"via": string,
"status": string
}
]
Examples:
$ ip route | jc --ip-route -p
[
{
"ip": "10.0.2.0/24",
"dev": "enp0s3",
"proto": "kernel",
"scope": "link",
"src": "10.0.2.15",
"metric": 100
}
]
<a id="jc.parsers.ip_route.parse"></a>
### parse
```python
def parse(data, raw=False, quiet=False)
```
Main text parsing function
Parameters:
data: (string) text data to parse
raw: (boolean) unprocessed output if True
quiet: (boolean) suppress warning messages if True
Returns:
List of Json objects if data is processed and Raw data if raw = true.
### Parser Information
Compatibility: linux
Source: [`jc/parsers/ip_route.py`](https://github.com/kellyjonbrazil/jc/blob/master/jc/parsers/ip_route.py)
Version 1.0 by Julian Jackson (jackson.julian55@yahoo.com)

View File

@@ -1,15 +1,47 @@
[Home](https://kellyjonbrazil.github.io/jc/)
<a id="jc.parsers.iptables"></a>
# jc.parsers.iptables
jc - JSON CLI output utility ipables Parser
Usage:
jc - JSON Convert `iptables` command output parser
Specify --iptables as the first argument if the piped input is coming from iptables
Supports `-vLnx` and `--line-numbers` for all tables.
Supports -vLn and --line-numbers for all tables
Usage (cli):
Compatibility:
$ sudo iptables -L -t nat | jc --iptables
'linux'
or
$ jc iptables -L -t nat
Usage (module):
import jc
result = jc.parse('iptables', iptables_command_output)
Schema:
[
{
"chain": string,
"rules": [
{
"num" integer,
"pkts": integer,
"bytes": integer, # converted based on suffix
"target": string, # Null if blank
"prot": string,
"opt": string, # "--" = Null
"in": string,
"out": string,
"source": string,
"destination": string,
"options": string
}
]
}
]
Examples:
@@ -131,50 +163,12 @@ Examples:
...
]
## info
<a id="jc.parsers.iptables.parse"></a>
### parse
```python
info(self, /, *args, **kwargs)
```
## process
```python
process(proc_data)
```
Final processing to conform to the schema.
Parameters:
proc_data: (dictionary) raw structured data to process
Returns:
List of dictionaries. Structured data with the following schema:
[
{
"chain": string,
"rules": [
{
"num" integer,
"pkts": integer,
"bytes": integer, # converted based on suffix
"target": string,
"prot": string,
"opt": string, # "--" = Null
"in": string,
"out": string,
"source": string,
"destination": string,
"options": string
}
]
}
]
## parse
```python
parse(data, raw=False, quiet=False)
def parse(data, raw=False, quiet=False)
```
Main text parsing function
@@ -182,10 +176,16 @@ Main text parsing function
Parameters:
data: (string) text data to parse
raw: (boolean) output preprocessed JSON if True
raw: (boolean) unprocessed output if True
quiet: (boolean) suppress warning messages if True
Returns:
List of dictionaries. Raw or processed structured data.
List of Dictionaries. Raw or processed structured data.
### Parser Information
Compatibility: linux
Source: [`jc/parsers/iptables.py`](https://github.com/kellyjonbrazil/jc/blob/master/jc/parsers/iptables.py)
Version 1.11 by Kelly Brazil (kellyjonbrazil@gmail.com)

149
docs/parsers/iw_scan.md Normal file
View File

@@ -0,0 +1,149 @@
[Home](https://kellyjonbrazil.github.io/jc/)
<a id="jc.parsers.iw_scan"></a>
# jc.parsers.iw_scan
jc - JSON Convert `iw dev <device> scan` command output parser
This parser is considered beta quality. Not all fields are parsed and there
are not enough samples to test.
Usage (cli):
$ iw dev wlan0 scan | jc --iw-scan
or
$ jc iw dev wlan0 scan
Usage (module):
import jc
result = jc.parse('iw_scan', iw_scan_command_output)
Schema:
[
{
"foo": string/integer/float, # best guess based on value
"bar": string/integer/float,
"baz": string/integer/float
}
]
Examples:
$ iw dev wlan0 scan | jc --iw-scan -p
[
{
"bssid": "71:31:72:65:e1:a2",
"interface": "wlan0",
"freq": 2462,
"capability": "ESS Privacy ShortSlotTime (0x0411)",
"ssid": "WLAN-1234",
"supported_rates": [
1.0,
2.0,
5.5,
11.0,
18.0,
24.0,
36.0,
54.0
],
"erp": "<no flags>",
"erp_d4.0": "<no flags>",
"rsn": "Version: 1",
"group_cipher": "CCMP",
"pairwise_ciphers": "CCMP",
"authentication_suites": "PSK",
"capabilities": "0x186c",
"extended_supported_rates": [
6.0,
9.0,
12.0,
48.0
],
"ht_rx_mcs_rate_indexes_supported": "0-15",
"primary_channel": 11,
"secondary_channel_offset": "no secondary",
"rifs": 1,
"ht_protection": "no",
"non-gf_present": 1,
"obss_non-gf_present": 0,
"dual_beacon": 0,
"dual_cts_protection": 0,
"stbc_beacon": 0,
"l-sig_txop_prot": 0,
"pco_active": 0,
"pco_phase": 0,
"bss_width_channel_transition_delay_factor": 5,
"extended_capabilities": "HT Information Exchange Supported",
"wmm": "Parameter version 1",
"be": "CW 15-1023, AIFSN 3",
"bk": "CW 15-1023, AIFSN 7",
"vi": "CW 7-15, AIFSN 2, TXOP 3008 usec",
"vo": "CW 3-7, AIFSN 2, TXOP 1504 usec",
"wps": "Version: 1.0",
"wi-fi_protected_setup_state": "2 (Configured)",
"selected_registrar": "0x0",
"response_type": "3 (AP)",
"uuid": "00000000-0000-0003-0000-75317074f1a2",
"manufacturer": "Corporation",
"model": "VGV8539JW",
"model_number": "1.47.000",
"serial_number": "J144024542",
"primary_device_type": "6-0050f204-1",
"device_name": "Wireless Router(WFA)",
"config_methods": "Label, PBC",
"rf_bands": "0x3",
"tsf_usec": 212098649788,
"sta_channel_width_mhz": 20,
"passive_dwell_tus": 20,
"active_dwell_tus": 10,
"channel_width_trigger_scan_interval_s": 300,
"scan_passive_total_per_channel_tus": 200,
"scan_active_total_per_channel_tus": 20,
"beacon_interval_tus": 100,
"signal_dbm": -80.0,
"last_seen_ms": 11420,
"selected_rates": [
1.0,
2.0,
5.5,
11.0
],
"obss_scan_activity_threshold_percent": 0.25,
"ds_parameter_set_channel": 11,
"max_amsdu_length_bytes": 7935,
"minimum_rx_ampdu_time_spacing_usec": 16
},
...
]
<a id="jc.parsers.iw_scan.parse"></a>
### parse
```python
def parse(data, raw=False, quiet=False)
```
Main text parsing function
Parameters:
data: (string) text data to parse
raw: (boolean) unprocessed output if True
quiet: (boolean) suppress warning messages if True
Returns:
List of Dictionaries. Raw or processed structured data.
### Parser Information
Compatibility: linux
Source: [`jc/parsers/iw_scan.py`](https://github.com/kellyjonbrazil/jc/blob/master/jc/parsers/iw_scan.py)
Version 0.7 by Kelly Brazil (kellyjonbrazil@gmail.com)

113
docs/parsers/iwconfig.md Normal file
View File

@@ -0,0 +1,113 @@
[Home](https://kellyjonbrazil.github.io/jc/)
<a id="jc.parsers.iwconfig"></a>
# jc.parsers.iwconfig
jc - JSON Convert `iwconfig` command output parser
No `iwconfig` options are supported.
Usage (cli):
$ iwconfig | jc --iwconfig
or
$ jc iwconfig
Usage (module):
import jc
result = jc.parse('iwconfig', iwconfig_command_output)
Schema:
[
{
"name": string,
"protocol": string,
"essid": string,
"mode": string,
"frequency": float,
"frequency_unit": string,
"access_point": string,
"bit_rate": float,
"bit_rate_unit": string,
"tx_power": integer,
"tx_power_unit": string,
"retry_short_limit": integer,
"rts_threshold": boolean,
"fragment_threshold": boolean,
"power_management": boolean,
"link_quality": string,
"signal_level": integer,
"signal_level_unit": string,
"rx_invalid_nwid": integer,
"rx_invalid_crypt": integer,
"rx_invalid_frag": integer,
"tx_excessive_retries": integer,
"invalid_misc": integer,
"missed_beacon": integer
}
]
Examples:
$ iwconfig | jc --iwconfig -p
[
{
"name": "wlp5s0",
"protocol": "IEEE 802.11",
"essid": "BLABLABLA",
"mode": "Managed",
"frequency": 5.18,
"frequency_unit": "GHz",
"access_point": "E6:64:DA:16:51:BF",
"bit_rate": 6.0,
"bit_rate_unit": "Mb/s",
"tx_power": 30,
"tx_power_unit": "dBm",
"retry_short_limit": 7,
"rts_threshold": false,
"fragment_threshold": false,
"power_management": true,
"link_quality": "61/70",
"signal_level": -49,
"signal_level_unit": "dBm",
"rx_invalid_nwid": 0,
"rx_invalid_crypt": 0,
"rx_invalid_frag": 0,
"tx_excessive_retries": 0,
"invalid_misc": 2095,
"missed_beacon": 0
}
]
<a id="jc.parsers.iwconfig.parse"></a>
### parse
```python
def parse(data: str,
raw: bool = False,
quiet: bool = False) -> List[Dict[str, Any]]
```
Main text parsing function
Parameters:
data: (string) text data to parse
raw: (boolean) unprocessed output if True
quiet: (boolean) suppress warning messages if True
Returns:
List of Dictionaries. Raw or processed structured data.
### Parser Information
Compatibility: linux
Source: [`jc/parsers/iwconfig.py`](https://github.com/kellyjonbrazil/jc/blob/master/jc/parsers/iwconfig.py)
Version 1.2 by Thomas Vincent (vrince@gmail.com)

View File

@@ -0,0 +1,105 @@
[Home](https://kellyjonbrazil.github.io/jc/)
<a id="jc.parsers.jar_manifest"></a>
# jc.parsers.jar_manifest
jc - JSON Convert Java `MANIFEST.MF` file parser
Usage (cli):
$ cat MANIFEST.MF | jc --jar-manifest
Usage (module):
import jc
result = jc.parse('jar_manifest', jar_manifest_file_output)
Schema:
[
{
"key1": string,
"key2": string
}
]
Examples:
$ cat MANIFEST.MF | jc --jar-manifest -p
$ unzip -c log4j-core-2.16.0.jar META-INF/MANIFEST.MF | \\
jc --jar-manifest -p
$ unzip -c 'apache-log4j-2.16.0-bin/*.jar' META-INF/MANIFEST.MF | \\
jc --jar-manifest -p
$ cat MANIFEST.MF | jc --jar-manifest -p
[
{
"Import_Package": "com.conversantmedia.util.concurrent;resoluti...",
"Export_Package": "org.apache.logging.log4j.core;uses:=\"org.ap...",
"Manifest_Version": "1.0",
"Bundle_License": "https://www.apache.org/licenses/LICENSE-2.0.txt",
"Bundle_SymbolicName": "org.apache.logging.log4j.core",
"Built_By": "matt",
"Bnd_LastModified": "1639373735804",
"Implementation_Vendor_Id": "org.apache.logging.log4j",
"Specification_Title": "Apache Log4j Core",
"Log4jReleaseManager": "Matt Sicker",
...
}
]
$ unzip -c 'apache-log4j-2.16.0-bin/*.jar' META-INF/MANIFEST.MF | \\
jc --jar-manifest -p
[
...
{
"Archive": "apache-log4j-2.16.0-bin/log4j-spring-boot-2.16.0-so...",
"Manifest_Version": "1.0",
"Built_By": "matt",
"Created_By": "Apache Maven 3.8.4",
"Build_Jdk": "1.8.0_312"
},
{
"Archive": "apache-log4j-2.16.0-bin/log4j-spring-boot-2.16.0-ja...",
"Manifest_Version": "1.0",
"Built_By": "matt",
"Created_By": "Apache Maven 3.8.4",
"Build_Jdk": "1.8.0_312"
},
{
"Bundle_SymbolicName": "org.apache.logging.log4j.spring-cloud-c...",
"Export_Package": "org.apache.logging.log4j.spring.cloud.config...",
"Archive": "apache-log4j-2.16.0-bin/log4j-spring-cloud-config-c...",
"Manifest_Version": "1.0",
"Bundle_License": "https://www.apache.org/licenses/LICENSE-2.0.txt",
...
}
...
]
<a id="jc.parsers.jar_manifest.parse"></a>
### parse
```python
def parse(data, raw=False, quiet=False)
```
Main text parsing function
Parameters:
data: (string) text data to parse
raw: (boolean) unprocessed output if True
quiet: (boolean) suppress warning messages if True
Returns:
List of Dictionaries. Raw or processed structured data.
### Parser Information
Compatibility: linux, darwin, cygwin, win32, aix, freebsd
Source: [`jc/parsers/jar_manifest.py`](https://github.com/kellyjonbrazil/jc/blob/master/jc/parsers/jar_manifest.py)
Version 0.01 by Matt J (https://github.com/listuser)

View File

@@ -1,15 +1,35 @@
[Home](https://kellyjonbrazil.github.io/jc/)
<a id="jc.parsers.jobs"></a>
# jc.parsers.jobs
jc - JSON CLI output utility jobs Parser
Usage:
jc - JSON Convert `jobs` command output parser
specify --jobs as the first argument if the piped input is coming from jobs
Also supports the `-l` option.
Also supports the -l option
The "Magic" syntax is not supported since the `jobs` command is a shell
builtin.
Compatibility:
Usage (cli):
'linux', 'darwin', 'cygwin', 'aix', 'freebsd'
$ jobs | jc --jobs
Usage (module):
import jc
result = jc.parse('jobs', jobs_command_output)
Schema:
[
{
"job_number": integer,
"pid": integer,
"history": string,
"status": string,
"command": string
}
]
Example:
@@ -73,39 +93,12 @@ Example:
}
]
## info
<a id="jc.parsers.jobs.parse"></a>
### parse
```python
info(self, /, *args, **kwargs)
```
## process
```python
process(proc_data)
```
Final processing to conform to the schema.
Parameters:
proc_data: (dictionary) raw structured data to process
Returns:
List of dictionaries. Structured data with the following schema:
[
{
"job_number": integer,
"pid": integer,
"history": string,
"status": string,
"command": string
}
]
## parse
```python
parse(data, raw=False, quiet=False)
def parse(data, raw=False, quiet=False)
```
Main text parsing function
@@ -113,10 +106,16 @@ Main text parsing function
Parameters:
data: (string) text data to parse
raw: (boolean) output preprocessed JSON if True
raw: (boolean) unprocessed output if True
quiet: (boolean) suppress warning messages if True
Returns:
List of dictionaries. Raw or processed structured data.
List of Dictionaries. Raw or processed structured data.
### Parser Information
Compatibility: linux, darwin, cygwin, aix, freebsd
Source: [`jc/parsers/jobs.py`](https://github.com/kellyjonbrazil/jc/blob/master/jc/parsers/jobs.py)
Version 1.6 by Kelly Brazil (kellyjonbrazil@gmail.com)

77
docs/parsers/jwt.md Normal file
View File

@@ -0,0 +1,77 @@
[Home](https://kellyjonbrazil.github.io/jc/)
<a id="jc.parsers.jwt"></a>
# jc.parsers.jwt
jc - JSON Convert JWT string parser
> Note: `jc` will not check the integrity of the JWT payload.
Usage (cli):
$ echo "eyJhbGciOiJIUzI1N..." | jc --jwt
Usage (module):
import jc
result = jc.parse('jwt', jwt_string)
Schema:
{
"header": {
"alg": string,
"typ": string
},
"payload": {
<key name>: string/integer/float/boolean/null
},
"signature": string # [0]
}
[0] in colon-delimited hex notation
Examples:
% echo 'eyJhbGciOiJIUzI1N...' | jc --jwt -p
{
"header": {
"alg": "HS256",
"typ": "JWT"
},
"payload": {
"sub": "1234567890",
"name": "John Doe",
"iat": 1516239022
},
"signature": "49:f9:4a:c7:04:49:48:c7:8a:28:5d:90:4f:87:f0:a4:c7..."
}
<a id="jc.parsers.jwt.parse"></a>
### parse
```python
def parse(data: str, raw: bool = False, quiet: bool = False) -> Dict
```
Main text parsing function
Parameters:
data: (string) text data to parse
raw: (boolean) unprocessed output if True
quiet: (boolean) suppress warning messages if True
Returns:
Dictionary. Raw or processed structured data.
### Parser Information
Compatibility: linux, darwin, cygwin, win32, aix, freebsd
Source: [`jc/parsers/jwt.py`](https://github.com/kellyjonbrazil/jc/blob/master/jc/parsers/jwt.py)
This parser can be used with the `--slurp` command-line option.
Version 1.1 by Kelly Brazil (kellyjonbrazil@gmail.com)

84
docs/parsers/kv.md Normal file
View File

@@ -0,0 +1,84 @@
[Home](https://kellyjonbrazil.github.io/jc/)
<a id="jc.parsers.kv"></a>
# jc.parsers.kv
jc - JSON Convert `Key/Value` file and string parser
Supports files containing simple key/value pairs.
- Delimiter can be `=` or `:`. Missing values are supported.
- Comment prefix can be `#` or `;`. Comments must be on their own line.
- If duplicate keys are found, only the last value will be used.
> Note: Values starting and ending with quotation marks will have the marks
> removed. If you would like to keep the quotation marks, use the `-r`
> command-line argument or the `raw=True` argument in `parse()`.
Usage (cli):
$ cat foo.txt | jc --kv
Usage (module):
import jc
result = jc.parse('kv', kv_file_output)
Schema:
Key/Value document converted to a dictionary - see the python configparser
standard library documentation for more details.
{
"key1": string,
"key2": string
}
Examples:
$ cat keyvalue.txt
# this file contains key/value pairs
name = John Doe
address=555 California Drive
age: 34
; comments can include # or ;
# delimiter can be = or :
# quoted values have quotation marks stripped by default
# but can be preserved with the -r argument
occupation:"Engineer"
$ cat keyvalue.txt | jc --kv -p
{
"name": "John Doe",
"address": "555 California Drive",
"age": "34",
"occupation": "Engineer"
}
<a id="jc.parsers.kv.parse"></a>
### parse
```python
def parse(data, raw=False, quiet=False)
```
Main text parsing function
Parameters:
data: (string) text data to parse
raw: (boolean) unprocessed output if True
quiet: (boolean) suppress warning messages if True
Returns:
Dictionary representing a Key/Value pair document.
### Parser Information
Compatibility: linux, darwin, cygwin, win32, aix, freebsd
Source: [`jc/parsers/kv.py`](https://github.com/kellyjonbrazil/jc/blob/master/jc/parsers/kv.py)
Version 2.2 by Kelly Brazil (kellyjonbrazil@gmail.com)

91
docs/parsers/kv_dup.md Normal file
View File

@@ -0,0 +1,91 @@
[Home](https://kellyjonbrazil.github.io/jc/)
<a id="jc.parsers.kv_dup"></a>
# jc.parsers.kv_dup
jc - JSON Convert `Key/Value` with duplicate key file and string parser
Supports files containing simple key/value pairs and preserves duplicate
values. All values are contained in lists/arrays.
- Delimiter can be `=` or `:`. Missing values are supported.
- Comment prefix can be `#` or `;`. Comments must be on their own line.
- If multi-line values are used, each line will be a separate item in the
value list. Blank lines in multi-line values are not supported.
> Note: Values starting and ending with quotation marks will have the marks
> removed. If you would like to keep the quotation marks, use the `-r`
> command-line argument or the `raw=True` argument in `parse()`.
Usage (cli):
$ cat foo.txt | jc --kv-dup
Usage (module):
import jc
result = jc.parse('kv_dup', kv_file_output)
Schema:
Key/Value document converted to a dictionary - see the python configparser
standard library documentation for more details.
{
"<key1>": [
string
],
"<key2>": [
string
]
}
Examples:
$ cat keyvalue.txt
# this file contains key/value pairs
name = John Doe
address=555 California Drive
age: 34
; comments can include # or ;
# delimiter can be = or :
# quoted values have quotation marks stripped by default
# but can be preserved with the -r argument
occupation:"Engineer"
occupation = "Pilot"
$ cat keyvalue.txt | jc --kv-dup -p
{
"name": ["John Doe"],
"address": ["555 California Drive"],
"age": ["34"],
"occupation": ["Engineer", "Pilot"]
}
<a id="jc.parsers.kv_dup.parse"></a>
### parse
```python
def parse(data, raw=False, quiet=False)
```
Main text parsing function
Parameters:
data: (string) text data to parse
raw: (boolean) unprocessed output if True
quiet: (boolean) suppress warning messages if True
Returns:
Dictionary representing a Key/Value pair document.
### Parser Information
Compatibility: linux, darwin, cygwin, win32, aix, freebsd
Source: [`jc/parsers/kv_dup.py`](https://github.com/kellyjonbrazil/jc/blob/master/jc/parsers/kv_dup.py)
Version 1.1 by Kelly Brazil (kellyjonbrazil@gmail.com)

View File

@@ -1,40 +1,77 @@
[Home](https://kellyjonbrazil.github.io/jc/)
<a id="jc.parsers.last"></a>
# jc.parsers.last
jc - JSON CLI output utility last Parser
Usage:
jc - JSON Convert `last` and `lastb` command output parser
specify --last as the first argument if the piped input is coming from last or lastb
Supports `-w`, `-F`, and `-x` options.
Compatibility:
Calculated epoch time fields are naive (i.e. based on the local time of the
system the parser is run on) since there is no timezone information in the
`last` command output.
'linux', 'darwin', 'aix', 'freebsd'
Usage (cli):
$ last | jc --last
or
$ jc last
Usage (module):
import jc
result = jc.parse('last', last_command_output)
Schema:
[
{
"user": string,
"tty": string,
"hostname": string,
"login": string,
"logout": string,
"duration": string,
"login_epoch": integer, # (naive) available w/last -F option
"logout_epoch": integer, # (naive) available w/last -F option
"duration_seconds": integer # available w/last -F option
}
]
Examples:
$ last | jc --last -p
$ last -F | jc --last -p
[
{
"user": "kbrazil",
"tty": "ttys002",
"hostname": null,
"login": "Thu Feb 27 14:31",
"login": "Mon Dec 28 17:24:10 2020",
"logout": "still logged in"
},
{
"user": "kbrazil",
"tty": "ttys003",
"hostname": null,
"login": "Thu Feb 27 10:38",
"logout": "10:38",
"duration": "00:00"
"login": "Mon Dec 28 17:24:10 2020",
"logout": "Mon Dec 28 17:25:01 2020",
"duration": "00:00",
"login_epoch": 1565891826,
"logout_epoch": 1565895404,
"duration_seconds": 3578
},
{
"user": "kbrazil",
"tty": "ttys003",
"hostname": null,
"login": "Thu Feb 27 10:18",
"logout": "10:18",
"duration": "00:00"
"login": "Mon Dec 28 17:24:10 2020",
"logout": "Mon Dec 28 17:25:01 2020",
"duration": "00:00",
"login_epoch": 1565891826,
"logout_epoch": 1565895404,
"duration_seconds": 3578
},
...
]
@@ -67,41 +104,12 @@ Examples:
...
]
<a id="jc.parsers.last.parse"></a>
### parse
## info
```python
info(self, /, *args, **kwargs)
```
## process
```python
process(proc_data)
```
Final processing to conform to the schema.
Parameters:
proc_data: (dictionary) raw structured data to process
Returns:
List of dictionaries. Structured data with the following schema:
[
{
"user": string,
"tty": string,
"hostname": string,
"login": string,
"logout": string,
"duration": string
}
]
## parse
```python
parse(data, raw=False, quiet=False)
def parse(data, raw=False, quiet=False)
```
Main text parsing function
@@ -109,10 +117,16 @@ Main text parsing function
Parameters:
data: (string) text data to parse
raw: (boolean) output preprocessed JSON if True
raw: (boolean) unprocessed output if True
quiet: (boolean) suppress warning messages if True
Returns:
List of dictionaries. Raw or processed structured data.
List of Dictionaries. Raw or processed structured data.
### Parser Information
Compatibility: linux, darwin, aix, freebsd
Source: [`jc/parsers/last.py`](https://github.com/kellyjonbrazil/jc/blob/master/jc/parsers/last.py)
Version 1.9 by Kelly Brazil (kellyjonbrazil@gmail.com)

View File

@@ -1,25 +1,60 @@
[Home](https://kellyjonbrazil.github.io/jc/)
<a id="jc.parsers.ls"></a>
# jc.parsers.ls
jc - JSON CLI output utility ls Parser
Note: The -l or -b option of ls should be used to correctly parse filenames that include newline characters.
Since ls does not encode newlines in filenames when outputting to a pipe it will cause jc to see
multiple files instead of a single file if -l or -b is not used.
jc - JSON Convert `ls` and `vdir` command output parser
Usage:
Options supported:
- `lbaR1`
- `--time-style=full-iso`
specify --ls as the first argument if the piped input is coming from ls
> Note: The `-1`, `-l`, or `-b` option of `ls` should be used to correctly
> parse filenames that include newline characters. Since `ls` does not
> encode newlines in filenames when outputting to a pipe it will cause `jc`
> to see multiple files instead of a single file if `-1`, `-l`, or `-b` is
> not used. Alternatively, `vdir` can be used, which is the same as running
> `ls -lb`.
ls options supported:
The `epoch` calculated timestamp field is naive. (i.e. based on the local
time of the system the parser is run on)
-lbaR
--time-style=full-iso
-h file sizes will be available in text form with -r but larger file sizes
with human readable suffixes will be converted to Null in default view
since the parser attempts to convert this field to an integer.
The `epoch_utc` calculated timestamp field is timezone-aware and is only
available if the timezone field is UTC.
Compatibility:
Usage (cli):
'linux', 'darwin', 'cygwin', 'aix', 'freebsd'
$ ls | jc --ls
or
$ jc ls
Usage (module):
import jc
result = jc.parse('ls', ls_command_output)
Schema:
[
{
"filename": string,
"flags": string,
"links": integer,
"parent": string,
"owner": string,
"group": string,
"size": integer,
"date": string,
"epoch": integer, # [0]
"epoch_utc": integer # [1]
}
]
[0] naive timestamp if date field exists and can be converted.
[1] timezone aware timestamp if date field is in UTC and can
be converted.
Examples:
@@ -31,12 +66,6 @@ Examples:
{
"filename": "arch"
},
{
"filename": "awk"
},
{
"filename": "base64"
},
...
]
@@ -61,15 +90,6 @@ Examples:
"size": 62744,
"date": "Aug 8 16:14"
},
{
"filename": "arch",
"flags": "-rwxr-xr-x.",
"links": 1,
"owner": "root",
"group": "root",
"size": 33080,
"date": "Aug 19 23:25"
},
...
]
@@ -94,93 +114,15 @@ Examples:
"size": "33080",
"date": "Aug 19 23:25"
},
{
"filename": "awk",
"link_to": "gawk",
"flags": "lrwxrwxrwx.",
"links": "1",
"owner": "root",
"group": "root",
"size": "4",
"date": "Aug 15 10:53"
},
{
"filename": "base64",
"flags": "-rwxr-xr-x.",
"links": "1",
"owner": "root",
"group": "root",
"size": "37360",
"date": "Aug 19 23:25"
},
{
"filename": "basename",
"flags": "-rwxr-xr-x.",
"links": "1",
"owner": "root",
"group": "root",
"size": "29032",
"date": "Aug 19 23:25"
},
{
"filename": "bash",
"flags": "-rwxr-xr-x.",
"links": "1",
"owner": "root",
"group": "root",
"size": "964600",
"date": "Aug 8 05:06"
},
...
]
$ ls -l /usr/bin | jc --ls | jq '.[] | select(.size > 50000000)'
{
"filename": "emacs",
"flags": "-r-xr-xr-x",
"links": 1,
"owner": "root",
"group": "wheel",
"size": 117164432,
"date": "May 3 2019"
}
<a id="jc.parsers.ls.parse"></a>
### parse
## info
```python
info(self, /, *args, **kwargs)
```
## process
```python
process(proc_data)
```
Final processing to conform to the schema.
Parameters:
proc_data: (dictionary) raw structured data to process
Returns:
List of dictionaries. Structured data with the following schema:
[
{
"filename": string,
"flags": string,
"links": integer,
"parent": string,
"owner": string,
"group": string,
"size": integer,
"date": string
}
]
## parse
```python
parse(data, raw=False, quiet=False)
def parse(data, raw=False, quiet=False)
```
Main text parsing function
@@ -188,10 +130,16 @@ Main text parsing function
Parameters:
data: (string) text data to parse
raw: (boolean) output preprocessed JSON if True
raw: (boolean) unprocessed output if True
quiet: (boolean) suppress warning messages if True
Returns:
List of dictionaries. Raw or processed structured data.
List of Dictionaries. Raw or processed structured data.
### Parser Information
Compatibility: linux, darwin, cygwin, aix, freebsd
Source: [`jc/parsers/ls.py`](https://github.com/kellyjonbrazil/jc/blob/master/jc/parsers/ls.py)
Version 1.12 by Kelly Brazil (kellyjonbrazil@gmail.com)

103
docs/parsers/ls_s.md Normal file
View File

@@ -0,0 +1,103 @@
[Home](https://kellyjonbrazil.github.io/jc/)
<a id="jc.parsers.ls_s"></a>
# jc.parsers.ls_s
jc - JSON Convert `ls` and `vdir` command output streaming parser
> This streaming parser outputs JSON Lines (cli) or returns an Iterable of
> Dictionaries (module)
Requires the `-l` option to be used on `ls`. If there are newline characters
in the filename, then make sure to use the `-b` option on `ls`.
The `jc` `-qq` option can be used to ignore parsing errors. (e.g. filenames
with newline characters, but `-b` was not used)
The `epoch` calculated timestamp field is naive (i.e. based on the local
time of the system the parser is run on)
The `epoch_utc` calculated timestamp field is timezone-aware and is only
available if the timezone field is UTC.
Usage (cli):
$ ls | jc --ls-s
Usage (module):
import jc
result = jc.parse('ls_s', ls_command_output.splitlines())
for item in result:
# do something
Schema:
{
"filename": string,
"flags": string,
"links": integer,
"parent": string,
"owner": string,
"group": string,
"size": integer,
"date": string,
"epoch": integer, # [0]
"epoch_utc": integer, # [1]
# below object only exists if using -qq or ignore_exceptions=True
"_jc_meta": {
"success": boolean, # false if error parsing
"error": string, # exists if "success" is false
"line": string # exists if "success" is false
}
}
[0] naive timestamp if date field exists and can be converted.
[1] timezone aware timestamp if date field is in UTC and can
be converted
Examples:
$ ls -l /usr/bin | jc --ls-s
{"filename":"2to3-","flags":"-rwxr-xr-x","links":4,"owner":"root","...}
{"filename":"2to3-2.7","link_to":"../../System/Library/Frameworks/P...}
{"filename":"AssetCacheLocatorUtil","flags":"-rwxr-xr-x","links":1,...}
...
$ ls -l /usr/bin | jc --ls-s -r
{"filename":"2to3-","flags":"-rwxr-xr-x","links":"4","owner":"roo"..."}
{"filename":"2to3-2.7","link_to":"../../System/Library/Frameworks/P...}
{"filename":"AssetCacheLocatorUtil","flags":"-rwxr-xr-x","links":"1...}
...
<a id="jc.parsers.ls_s.parse"></a>
### parse
```python
def parse(data, raw=False, quiet=False, ignore_exceptions=False)
```
Main text parsing generator function. Returns an iterable object.
Parameters:
data: (iterable) line-based text data to parse
(e.g. sys.stdin or str.splitlines())
raw: (boolean) unprocessed output if True
quiet: (boolean) suppress warning messages if True
ignore_exceptions: (boolean) ignore parsing exceptions if True
Returns:
Iterable of Dictionaries
### Parser Information
Compatibility: linux, darwin, cygwin, aix, freebsd
Source: [`jc/parsers/ls_s.py`](https://github.com/kellyjonbrazil/jc/blob/master/jc/parsers/ls_s.py)
Version 1.2 by Kelly Brazil (kellyjonbrazil@gmail.com)

91
docs/parsers/lsattr.md Normal file
View File

@@ -0,0 +1,91 @@
[Home](https://kellyjonbrazil.github.io/jc/)
<a id="jc.parsers.lsattr"></a>
# jc.parsers.lsattr
jc - JSON Convert `lsattr` command output parser
Usage (cli):
$ lsattr | jc --lsattr
or
$ jc lsattr
Usage (module):
import jc
result = jc.parse('lsattr', lsattr_command_output)
Schema:
Information from https://github.com/mirror/busybox/blob/2d4a3d9e6c1493a9520b907e07a41aca90cdfd94/e2fsprogs/e2fs_lib.c#L40
used to define field names
[
{
"file": string,
"compressed_file": Optional[boolean],
"compressed_dirty_file": Optional[boolean],
"compression_raw_access": Optional[boolean],
"secure_deletion": Optional[boolean],
"undelete": Optional[boolean],
"synchronous_updates": Optional[boolean],
"synchronous_directory_updates": Optional[boolean],
"immutable": Optional[boolean],
"append_only": Optional[boolean],
"no_dump": Optional[boolean],
"no_atime": Optional[boolean],
"compression_requested": Optional[boolean],
"encrypted": Optional[boolean],
"journaled_data": Optional[boolean],
"indexed_directory": Optional[boolean],
"no_tailmerging": Optional[boolean],
"top_of_directory_hierarchies": Optional[boolean],
"extents": Optional[boolean],
"no_cow": Optional[boolean],
"casefold": Optional[boolean],
"inline_data": Optional[boolean],
"project_hierarchy": Optional[boolean],
"verity": Optional[boolean],
}
]
Examples:
$ sudo lsattr /etc/passwd | jc --lsattr
[
{
"file": "/etc/passwd",
"extents": true
}
]
<a id="jc.parsers.lsattr.parse"></a>
### parse
```python
def parse(data: str,
raw: bool = False,
quiet: bool = False) -> List[Dict[str, Any]]
```
Main text parsing function
Parameters:
data: (string) text data to parse
quiet: (boolean) suppress warning messages if True
Returns:
List of Dictionaries. Raw or processed structured data.
### Parser Information
Compatibility: linux
Source: [`jc/parsers/lsattr.py`](https://github.com/kellyjonbrazil/jc/blob/master/jc/parsers/lsattr.py)
Version 1.0 by Mark Rotner (rotner.mr@gmail.com)

View File

@@ -0,0 +1,63 @@
[Home](https://kellyjonbrazil.github.io/jc/)
<a id="jc.parsers.lsb_release"></a>
# jc.parsers.lsb_release
jc - JSON Convert `lsb_release` command parser
This parser is an alias to the Key/Value parser (`--kv`).
Usage (cli):
$ lsb_release -a | jc --lsb-release
or
$ jc lsb_release -a
Usage (module):
import jc
result = jc.parse('lsb_release', lsb_release_command_output)
Schema:
{
"<key>": string
}
Examples:
$ lsb_release -a | jc --lsb-release -p
{
"Distributor ID": "Ubuntu",
"Description": "Ubuntu 16.04.6 LTS",
"Release": "16.04",
"Codename": "xenial"
}
<a id="jc.parsers.lsb_release.parse"></a>
### parse
```python
def parse(data: str, raw: bool = False, quiet: bool = False) -> Dict[str, Any]
```
Main text parsing function
Parameters:
data: (string) text data to parse
raw: (boolean) unprocessed output if True
quiet: (boolean) suppress warning messages if True
Returns:
Dictionary. Raw or processed structured data.
### Parser Information
Compatibility: linux, darwin, cygwin, win32, aix, freebsd
Source: [`jc/parsers/lsb_release.py`](https://github.com/kellyjonbrazil/jc/blob/master/jc/parsers/lsb_release.py)
Version 1.2 by Kelly Brazil (kellyjonbrazil@gmail.com)

View File

@@ -1,236 +1,24 @@
[Home](https://kellyjonbrazil.github.io/jc/)
<a id="jc.parsers.lsblk"></a>
# jc.parsers.lsblk
jc - JSON CLI output utility lsblk Parser
Usage:
jc - JSON Convert `lsblk` command output parser
specify --lsblk as the first argument if the piped input is coming from lsblk
Usage (cli):
Compatibility:
$ lsblk | jc --lsblk
'linux'
or
Examples:
$ jc lsblk
$ lsblk | jc --lsblk -p
[
{
"name": "sda",
"maj_min": "8:0",
"rm": false,
"size": "20G",
"ro": false,
"type": "disk",
"mountpoint": null
},
{
"name": "sda1",
"maj_min": "8:1",
"rm": false,
"size": "1G",
"ro": false,
"type": "part",
"mountpoint": "/boot"
},
...
]
Usage (module):
$ lsblk -o +KNAME,FSTYPE,LABEL,UUID,PARTLABEL,PARTUUID,RA,MODEL,SERIAL,STATE,OWNER,GROUP,MODE,ALIGNMENT,MIN-IO,OPT-IO,PHY-SEC,LOG-SEC,ROTA,SCHED,RQ-SIZE,DISC-ALN,DISC-GRAN,DISC-MAX,DISC-ZERO,WSAME,WWN,RAND,PKNAME,HCTL,TRAN,REV,VENDOR | jc --lsblk -p
[
{
"name": "sda",
"maj_min": "8:0",
"rm": false,
"size": "20G",
"ro": false,
"type": "disk",
"mountpoint": null,
"kname": "sda",
"fstype": null,
"label": null,
"uuid": null,
"partlabel": null,
"partuuid": null,
"ra": 4096,
"model": "VMware Virtual S",
"serial": null,
"state": "running",
"owner": "root",
"group": "disk",
"mode": "brw-rw----",
"alignment": 0,
"min_io": 512,
"opt_io": 0,
"phy_sec": 512,
"log_sec": 512,
"rota": true,
"sched": "deadline",
"rq_size": 128,
"disc_aln": 0,
"disc_gran": "0B",
"disc_max": "0B",
"disc_zero": false,
"wsame": "32M",
"wwn": null,
"rand": true,
"pkname": null,
"hctl": "0:0:0:0",
"tran": "spi",
"rev": "1.0",
"vendor": "VMware,"
},
{
"name": "sda1",
"maj_min": "8:1",
"rm": false,
"size": "1G",
"ro": false,
"type": "part",
"mountpoint": "/boot",
"kname": "sda1",
"fstype": "xfs",
"label": null,
"uuid": "05d927bb-5875-49e3-ada1-7f46cb31c932",
"partlabel": null,
"partuuid": null,
"ra": 4096,
"model": null,
"serial": null,
"state": null,
"owner": "root",
"group": "disk",
"mode": "brw-rw----",
"alignment": 0,
"min_io": 512,
"opt_io": 0,
"phy_sec": 512,
"log_sec": 512,
"rota": true,
"sched": "deadline",
"rq_size": 128,
"disc_aln": 0,
"disc_gran": "0B",
"disc_max": "0B",
"disc_zero": false,
"wsame": "32M",
"wwn": null,
"rand": true,
"pkname": "sda",
"hctl": null,
"tran": null,
"rev": null,
"vendor": null
},
...
]
import jc
result = jc.parse('lsblk', lsblk_command_output)
$ lsblk -o +KNAME,FSTYPE,LABEL,UUID,PARTLABEL,PARTUUID,RA,MODEL,SERIAL,STATE,OWNER,GROUP,MODE,ALIGNMENT,MIN-IO,OPT-IO,PHY-SEC,LOG-SEC,ROTA,SCHED,RQ-SIZE,DISC-ALN,DISC-GRAN,DISC-MAX,DISC-ZERO,WSAME,WWN,RAND,PKNAME,HCTL,TRAN,REV,VENDOR | jc --lsblk -p -r
[
{
"name": "sda",
"maj_min": "8:0",
"rm": "0",
"size": "20G",
"ro": "0",
"type": "disk",
"mountpoint": null,
"kname": "sda",
"fstype": null,
"label": null,
"uuid": null,
"partlabel": null,
"partuuid": null,
"ra": "4096",
"model": "VMware Virtual S",
"serial": null,
"state": "running",
"owner": "root",
"group": "disk",
"mode": "brw-rw----",
"alignment": "0",
"min_io": "512",
"opt_io": "0",
"phy_sec": "512",
"log_sec": "512",
"rota": "1",
"sched": "deadline",
"rq_size": "128",
"disc_aln": "0",
"disc_gran": "0B",
"disc_max": "0B",
"disc_zero": "0",
"wsame": "32M",
"wwn": null,
"rand": "1",
"pkname": null,
"hctl": "0:0:0:0",
"tran": "spi",
"rev": "1.0",
"vendor": "VMware,"
},
{
"name": "sda1",
"maj_min": "8:1",
"rm": "0",
"size": "1G",
"ro": "0",
"type": "part",
"mountpoint": "/boot",
"kname": "sda1",
"fstype": "xfs",
"label": null,
"uuid": "05d927bb-5875-49e3-ada1-7f46cb31c932",
"partlabel": null,
"partuuid": null,
"ra": "4096",
"model": null,
"serial": null,
"state": null,
"owner": "root",
"group": "disk",
"mode": "brw-rw----",
"alignment": "0",
"min_io": "512",
"opt_io": "0",
"phy_sec": "512",
"log_sec": "512",
"rota": "1",
"sched": "deadline",
"rq_size": "128",
"disc_aln": "0",
"disc_gran": "0B",
"disc_max": "0B",
"disc_zero": "0",
"wsame": "32M",
"wwn": null,
"rand": "1",
"pkname": "sda",
"hctl": null,
"tran": null,
"rev": null,
"vendor": null
},
...
]
## info
```python
info(self, /, *args, **kwargs)
```
## process
```python
process(proc_data)
```
Final processing to conform to the schema.
Parameters:
proc_data: (dictionary) raw structured data to process
Returns:
List of dictionaries. Structured data with the following schema:
Schema:
[
{
@@ -277,9 +65,221 @@ Returns:
}
]
## parse
Examples:
$ lsblk | jc --lsblk -p
[
{
"name": "sda",
"maj_min": "8:0",
"rm": false,
"size": "20G",
"ro": false,
"type": "disk",
"mountpoint": null
},
{
"name": "sda1",
"maj_min": "8:1",
"rm": false,
"size": "1G",
"ro": false,
"type": "part",
"mountpoint": "/boot"
},
...
]
$ lsblk -o +KNAME,FSTYPE,LABEL,UUID,PARTLABEL,PARTUUID,RA,MODEL,SERIAL,\\
STATE,OWNER,GROUP,MODE,ALIGNMENT,MIN-IO,OPT-IO,PHY-SEC,LOG-SEC,ROTA,\\
SCHED,RQ-SIZE,DISC-ALN,DISC-GRAN,DISC-MAX,DISC-ZERO,WSAME,WWN,RAND,\\
PKNAME,HCTL,TRAN,REV,VENDOR | jc --lsblk -p
[
{
"name": "sda",
"maj_min": "8:0",
"rm": false,
"size": "20G",
"ro": false,
"type": "disk",
"mountpoint": null,
"kname": "sda",
"fstype": null,
"label": null,
"uuid": null,
"partlabel": null,
"partuuid": null,
"ra": 4096,
"model": "VMware Virtual S",
"serial": null,
"state": "running",
"owner": "root",
"group": "disk",
"mode": "brw-rw----",
"alignment": 0,
"min_io": 512,
"opt_io": 0,
"phy_sec": 512,
"log_sec": 512,
"rota": true,
"sched": "deadline",
"rq_size": 128,
"disc_aln": 0,
"disc_gran": "0B",
"disc_max": "0B",
"disc_zero": false,
"wsame": "32M",
"wwn": null,
"rand": true,
"pkname": null,
"hctl": "0:0:0:0",
"tran": "spi",
"rev": "1.0",
"vendor": "VMware,"
},
{
"name": "sda1",
"maj_min": "8:1",
"rm": false,
"size": "1G",
"ro": false,
"type": "part",
"mountpoint": "/boot",
"kname": "sda1",
"fstype": "xfs",
"label": null,
"uuid": "05d927bb-5875-49e3-ada1-7f46cb31c932",
"partlabel": null,
"partuuid": null,
"ra": 4096,
"model": null,
"serial": null,
"state": null,
"owner": "root",
"group": "disk",
"mode": "brw-rw----",
"alignment": 0,
"min_io": 512,
"opt_io": 0,
"phy_sec": 512,
"log_sec": 512,
"rota": true,
"sched": "deadline",
"rq_size": 128,
"disc_aln": 0,
"disc_gran": "0B",
"disc_max": "0B",
"disc_zero": false,
"wsame": "32M",
"wwn": null,
"rand": true,
"pkname": "sda",
"hctl": null,
"tran": null,
"rev": null,
"vendor": null
},
...
]
$ lsblk -o +KNAME,FSTYPE,LABEL,UUID,PARTLABEL,PARTUUID,RA,MODEL,SERIAL,\\
STATE,OWNER,GROUP,MODE,ALIGNMENT,MIN-IO,OPT-IO,PHY-SEC,LOG-SEC,ROTA,\\
SCHED,RQ-SIZE,DISC-ALN,DISC-GRAN,DISC-MAX,DISC-ZERO,WSAME,WWN,RAND,\\
PKNAME,HCTL,TRAN,REV,VENDOR | jc --lsblk -p -r
[
{
"name": "sda",
"maj_min": "8:0",
"rm": "0",
"size": "20G",
"ro": "0",
"type": "disk",
"mountpoint": null,
"kname": "sda",
"fstype": null,
"label": null,
"uuid": null,
"partlabel": null,
"partuuid": null,
"ra": "4096",
"model": "VMware Virtual S",
"serial": null,
"state": "running",
"owner": "root",
"group": "disk",
"mode": "brw-rw----",
"alignment": "0",
"min_io": "512",
"opt_io": "0",
"phy_sec": "512",
"log_sec": "512",
"rota": "1",
"sched": "deadline",
"rq_size": "128",
"disc_aln": "0",
"disc_gran": "0B",
"disc_max": "0B",
"disc_zero": "0",
"wsame": "32M",
"wwn": null,
"rand": "1",
"pkname": null,
"hctl": "0:0:0:0",
"tran": "spi",
"rev": "1.0",
"vendor": "VMware,"
},
{
"name": "sda1",
"maj_min": "8:1",
"rm": "0",
"size": "1G",
"ro": "0",
"type": "part",
"mountpoint": "/boot",
"kname": "sda1",
"fstype": "xfs",
"label": null,
"uuid": "05d927bb-5875-49e3-ada1-7f46cb31c932",
"partlabel": null,
"partuuid": null,
"ra": "4096",
"model": null,
"serial": null,
"state": null,
"owner": "root",
"group": "disk",
"mode": "brw-rw----",
"alignment": "0",
"min_io": "512",
"opt_io": "0",
"phy_sec": "512",
"log_sec": "512",
"rota": "1",
"sched": "deadline",
"rq_size": "128",
"disc_aln": "0",
"disc_gran": "0B",
"disc_max": "0B",
"disc_zero": "0",
"wsame": "32M",
"wwn": null,
"rand": "1",
"pkname": "sda",
"hctl": null,
"tran": null,
"rev": null,
"vendor": null
},
...
]
<a id="jc.parsers.lsblk.parse"></a>
### parse
```python
parse(data, raw=False, quiet=False)
def parse(data, raw=False, quiet=False)
```
Main text parsing function
@@ -287,10 +287,16 @@ Main text parsing function
Parameters:
data: (string) text data to parse
raw: (boolean) output preprocessed JSON if True
raw: (boolean) unprocessed output if True
quiet: (boolean) suppress warning messages if True
Returns:
List of dictionaries. Raw or processed structured data.
List of Dictionaries. Raw or processed structured data.
### Parser Information
Compatibility: linux
Source: [`jc/parsers/lsblk.py`](https://github.com/kellyjonbrazil/jc/blob/master/jc/parsers/lsblk.py)
Version 1.9 by Kelly Brazil (kellyjonbrazil@gmail.com)

View File

@@ -1,13 +1,35 @@
[Home](https://kellyjonbrazil.github.io/jc/)
<a id="jc.parsers.lsmod"></a>
# jc.parsers.lsmod
jc - JSON CLI output utility lsmod Parser
Usage:
jc - JSON Convert `lsmod` command output parser
specify --lsmod as the first argument if the piped input is coming from lsmod
Usage (cli):
Compatibility:
$ lsmod | jc --lsmod
'linux'
or
$ jc lsmod
Usage (module):
import jc
result = jc.parse('lsmod', lsmod_command_output)
Schema:
[
{
"module": string,
"size": integer,
"used": integer,
"by": [
string
]
}
]
Examples:
@@ -103,40 +125,12 @@ Examples:
...
]
## info
<a id="jc.parsers.lsmod.parse"></a>
### parse
```python
info(self, /, *args, **kwargs)
```
## process
```python
process(proc_data)
```
Final processing to conform to the schema.
Parameters:
proc_data: (dictionary) raw structured data to process
Returns:
List of dictionaries. Structured data with the following schema:
[
{
"module": string,
"size": integer,
"used": integer,
"by": [
string
]
}
]
## parse
```python
parse(data, raw=False, quiet=False)
def parse(data, raw=False, quiet=False)
```
Main text parsing function
@@ -144,10 +138,16 @@ Main text parsing function
Parameters:
data: (string) text data to parse
raw: (boolean) output preprocessed JSON if True
raw: (boolean) unprocessed output if True
quiet: (boolean) suppress warning messages if True
Returns:
List of dictionaries. Raw or processed structured data.
List of Dictionaries. Raw or processed structured data.
### Parser Information
Compatibility: linux
Source: [`jc/parsers/lsmod.py`](https://github.com/kellyjonbrazil/jc/blob/master/jc/parsers/lsmod.py)
Version 1.7 by Kelly Brazil (kellyjonbrazil@gmail.com)

View File

@@ -1,13 +1,39 @@
[Home](https://kellyjonbrazil.github.io/jc/)
<a id="jc.parsers.lsof"></a>
# jc.parsers.lsof
jc - JSON CLI output utility lsof Parser
Usage:
jc - JSON Convert `lsof` command output parser
specify --lsof as the first argument if the piped input is coming from lsof
Usage (cli):
Compatibility:
$ lsof | jc --lsof
'linux'
or
$ jc lsof
Usage (module):
import jc
result = jc.parse('lsof', lsof_command_output)
Schema:
[
{
"command": string,
"pid": integer,
"tid": integer,
"user": string,
"fd": string,
"type": string,
"device": string,
"size_off": integer,
"node": integer,
"name": string
}
]
Examples:
@@ -93,44 +119,12 @@ Examples:
...
]
## info
<a id="jc.parsers.lsof.parse"></a>
### parse
```python
info(self, /, *args, **kwargs)
```
## process
```python
process(proc_data)
```
Final processing to conform to the schema.
Parameters:
proc_data: (dictionary) raw structured data to process
Returns:
List of dictionaries. Structured data with the following schema:
[
{
"command": string,
"pid": integer,
"tid": integer,
"user": string,
"fd": string,
"type": string,
"device": string,
"size_off": integer,
"node": integer,
"name": string
}
]
## parse
```python
parse(data, raw=False, quiet=False)
def parse(data, raw=False, quiet=False)
```
Main text parsing function
@@ -138,10 +132,16 @@ Main text parsing function
Parameters:
data: (string) text data to parse
raw: (boolean) output preprocessed JSON if True
raw: (boolean) unprocessed output if True
quiet: (boolean) suppress warning messages if True
Returns:
List of dictionaries. Raw or processed structured data.
List of Dictionaries. Raw or processed structured data.
### Parser Information
Compatibility: linux, darwin, aix, freebsd
Source: [`jc/parsers/lsof.py`](https://github.com/kellyjonbrazil/jc/blob/master/jc/parsers/lsof.py)
Version 1.6 by Kelly Brazil (kellyjonbrazil@gmail.com)

150
docs/parsers/lspci.md Normal file
View File

@@ -0,0 +1,150 @@
[Home](https://kellyjonbrazil.github.io/jc/)
<a id="jc.parsers.lspci"></a>
# jc.parsers.lspci
jc - JSON Convert `lspci -mmv` command output parser
This parser supports the following `lspci` options:
- `-mmv`
- `-nmmv`
- `-nnmmv`
Usage (cli):
$ lspci -nnmmv | jc --lspci
or
$ jc lspci -nnmmv
Usage (module):
import jc
result = jc.parse('lspci', lspci_command_output)
Schema:
[
{
"slot": string,
"domain": string,
"domain_int": integer,
"bus": string,
"bus_int": integer,
"dev": string,
"dev_int": integer,
"function": string,
"function_int": integer,
"class": string,
"class_id": string,
"class_id_int": integer,
"vendor": string,
"vendor_id": string,
"vendor_id_int": integer,
"device": string,
"device_id": string,
"device_id_int": integer,
"svendor": string,
"svendor_id": string,
"svendor_id_int": integer,
"sdevice": string,
"sdevice_id": string,
"sdevice_id_int": integer,
"rev": string,
"physlot": string,
"physlot_int": integer,
"progif": string,
"progif_int": integer
}
]
Examples:
$ lspci -nnmmv | jc --lspci -p
[
{
"slot": "ff:02:05.0",
"domain": "ff",
"domain_int": 255,
"bus": "02",
"bus_int": 2,
"dev": "05",
"dev_int": 5,
"function": "0",
"function_int": 0,
"class": "SATA controller",
"class_id": "0106",
"class_id_int": 262,
"vendor": "VMware",
"vendor_id": "15ad",
"vendor_id_int": 5549,
"device": "SATA AHCI controller",
"device_id": "07e0",
"device_id_int": 2016,
"svendor": "VMware",
"svendor_id": "15ad",
"svendor_id_int": 5549,
"sdevice": "SATA AHCI controller",
"sdevice_id": "07e0",
"sdevice_id_int": 2016,
"physlot": "37",
"physlot_int": 55,
"progif": "01",
"progif_int": 1
},
...
]
$ lspci -nnmmv | jc --lspci -p -r
[
{
"slot": "ff:02:05.0",
"domain": "ff",
"bus": "02",
"dev": "05",
"function": "0",
"class": "SATA controller",
"class_id": "0106",
"vendor": "VMware",
"vendor_id": "15ad",
"device": "SATA AHCI controller",
"device_id": "07e0",
"svendor": "VMware",
"svendor_id": "15ad",
"sdevice": "SATA AHCI controller",
"sdevice_id": "07e0",
"physlot": "37",
"progif": "01"
},
...
]
<a id="jc.parsers.lspci.parse"></a>
### parse
```python
def parse(data: str,
raw: bool = False,
quiet: bool = False) -> List[Dict[str, Any]]
```
Main text parsing function
Parameters:
data: (string) text data to parse
raw: (boolean) unprocessed output if True
quiet: (boolean) suppress warning messages if True
Returns:
List of Dictionaries. Raw or processed structured data.
### Parser Information
Compatibility: linux
Source: [`jc/parsers/lspci.py`](https://github.com/kellyjonbrazil/jc/blob/master/jc/parsers/lspci.py)
Version 1.0 by Kelly Brazil (kellyjonbrazil@gmail.com)

335
docs/parsers/lsusb.md Normal file
View File

@@ -0,0 +1,335 @@
[Home](https://kellyjonbrazil.github.io/jc/)
<a id="jc.parsers.lsusb"></a>
# jc.parsers.lsusb
jc - JSON Convert `lsusb` command output parser
Supports the `-v` option or no options.
Usage (cli):
$ lsusb -v | jc --lsusb
or
$ jc lsusb -v
Usage (module):
import jc
result = jc.parse('lsusb', lsusb_command_output)
Schema:
> Note: <item> object keynames are assigned directly from the lsusb
> output. If there are duplicate <item> names in a section, only the
> last one is converted.
[
{
"bus": string,
"device": string,
"id": string,
"description": string,
"device_descriptor": {
"<item>": {
"value": string,
"description": string,
"attributes": [
string
]
},
"configuration_descriptor": {
"<item>": {
"value": string,
"description": string,
"attributes": [
string
]
},
"interface_association": {
"<item>": {
"value": string,
"description": string,
"attributes": [
string
]
}
},
"interface_descriptors": [
{
"<item>": {
"value": string,
"description": string,
"attributes": [
string
]
},
"cdc_header": {
"<item>": {
"value": string,
"description": string,
"attributes": [
string
]
}
},
"cdc_call_management": {
"<item>": {
"value": string,
"description": string,
"attributes": [
string
]
}
},
"cdc_acm": {
"<item>": {
"value": string,
"description": string,
"attributes": [
string
]
}
},
"cdc_union": {
"<item>": {
"value": string,
"description": string,
"attributes": [
string
]
}
},
"cdc_mbim": {
"<item>": {
"value": string,
"description": string,
"attributes": [
string
]
}
},
"cdc_mbim_extended": {
"<item>": {
"value": string,
"description": string,
"attributes": [
string
]
}
},
"videocontrol_descriptors": [
{
"<item>": {
"value": string,
"description": string,
"attributes": [
string
]
}
}
],
"videostreaming_descriptors": [
{
"<item>": {
"value": string,
"description": string,
"attributes": [
string
]
}
}
],
"endpoint_descriptors": [
{
"<item>": {
"value": string,
"description": string,
"attributes": [
string
]
}
}
]
}
]
}
},
"hub_descriptor": {
"<item>": {
"value": string,
"description": string,
"attributes": [
string,
]
},
"hub_port_status": {
"<item>": {
"value": string,
"attributes": [
string
]
}
}
},
"device_qualifier": {
"<item>": {
"value": string,
"description": string
}
},
"device_status": {
"value": string,
"description": string
}
}
]
Examples:
$ lsusb -v | jc --lsusb -p
[
{
"bus": "002",
"device": "001",
"id": "1d6b:0001",
"description": "Linux Foundation 1.1 root hub",
"device_descriptor": {
"bLength": {
"value": "18"
},
"bDescriptorType": {
"value": "1"
},
"bcdUSB": {
"value": "1.10"
},
...
"bNumConfigurations": {
"value": "1"
},
"configuration_descriptor": {
"bLength": {
"value": "9"
},
...
"iConfiguration": {
"value": "0"
},
"bmAttributes": {
"value": "0xe0",
"attributes": [
"Self Powered",
"Remote Wakeup"
]
},
"MaxPower": {
"description": "0mA"
},
"interface_descriptors": [
{
"bLength": {
"value": "9"
},
...
"bInterfaceProtocol": {
"value": "0",
"description": "Full speed (or root) hub"
},
"iInterface": {
"value": "0"
},
"endpoint_descriptors": [
{
"bLength": {
"value": "7"
},
...
"bmAttributes": {
"value": "3",
"attributes": [
"Transfer Type Interrupt",
"Synch Type None",
"Usage Type Data"
]
},
"wMaxPacketSize": {
"value": "0x0002",
"description": "1x 2 bytes"
},
"bInterval": {
"value": "255"
}
}
]
}
]
}
},
"hub_descriptor": {
"bLength": {
"value": "9"
},
...
"wHubCharacteristic": {
"value": "0x000a",
"attributes": [
"No power switching (usb 1.0)",
"Per-port overcurrent protection"
]
},
...
"hub_port_status": {
"Port 1": {
"value": "0000.0103",
"attributes": [
"power",
"enable",
"connect"
]
},
"Port 2": {
"value": "0000.0103",
"attributes": [
"power",
"enable",
"connect"
]
}
}
},
"device_status": {
"value": "0x0001",
"description": "Self Powered"
}
}
]
<a id="jc.parsers.lsusb.parse"></a>
### parse
```python
def parse(data, raw=False, quiet=False)
```
Main text parsing function
Parameters:
data: (string) text data to parse
raw: (boolean) unprocessed output if True
quiet: (boolean) suppress warning messages if True
Returns:
List of Dictionaries. Raw or processed structured data.
### Parser Information
Compatibility: linux
Source: [`jc/parsers/lsusb.py`](https://github.com/kellyjonbrazil/jc/blob/master/jc/parsers/lsusb.py)
Version 1.4 by Kelly Brazil (kellyjonbrazil@gmail.com)

92
docs/parsers/m3u.md Normal file
View File

@@ -0,0 +1,92 @@
[Home](https://kellyjonbrazil.github.io/jc/)
<a id="jc.parsers.m3u"></a>
# jc.parsers.m3u
jc - JSON Convert M3U and M3U8 file parser
This parser will make a best-effort to parse extended field information. If
the extended fields cannot be successfully parsed, then an `unparsed_info`
field will be added to the object. If not using `--quiet`, then a warning
message also will be printed to `STDERR`.
Usage (cli):
$ cat playlist.m3u | jc --m3u
Usage (module):
import jc
result = jc.parse('m3u', m3u_file_output)
Schema:
[
{
"runtime": integer,
"display": string,
"path": string,
<extended fields>: string, # [0]
"unparsed_info": string, # [1]
}
]
[0] Field names are pulled directly from the #EXTINF: line
[1] Only added if the extended information cannot be parsed
Examples:
$ cat playlist.m3u | jc --m3u -p
[
{
"runtime": 105,
"display": "Example artist - Example title",
"path": "C:\\Files\\My Music\\Example.mp3"
},
{
"runtime": 321,
"display": "Example Artist2 - Example title2",
"path": "C:\\Files\\My Music\\Favorites\\Example2.ogg"
}
]
$ cat playlist.m3u | jc --m3u -p -r
[
{
"runtime": "105",
"display": "Example artist - Example title",
"path": "C:\\Files\\My Music\\Example.mp3"
},
{
"runtime": "321",
"display": "Example Artist2 - Example title2",
"path": "C:\\Files\\My Music\\Favorites\\Example2.ogg"
}
]
<a id="jc.parsers.m3u.parse"></a>
### parse
```python
def parse(data: str, raw: bool = False, quiet: bool = False) -> List[Dict]
```
Main text parsing function
Parameters:
data: (string) text data to parse
raw: (boolean) unprocessed output if True
quiet: (boolean) suppress warning messages if True
Returns:
List of Dictionaries. Raw or processed structured data.
### Parser Information
Compatibility: linux, darwin, cygwin, win32, aix, freebsd
Source: [`jc/parsers/m3u.py`](https://github.com/kellyjonbrazil/jc/blob/master/jc/parsers/m3u.py)
Version 1.0 by Kelly Brazil (kellyjonbrazil@gmail.com)

254
docs/parsers/mdadm.md Normal file
View File

@@ -0,0 +1,254 @@
[Home](https://kellyjonbrazil.github.io/jc/)
<a id="jc.parsers.mdadm"></a>
# jc.parsers.mdadm
jc - JSON Convert `mdadm` command output parser
Supports the `--query` and `--examine` options in `mdadm`.
Usage (cli):
$ mdadm --query --detail /dev/md0 | jc --mdadm
or
$ mdadm --examine -E /dev/sdb1 | jc --mdadm
or
$ jc mdadm --query --detail /dev/md0
or
$ jc mdadm --examine -E /dev/sdb1
Usage (module):
import jc
result = jc.parse('mdadm', mdadm_command_output)
Schema:
{
"device": string,
"magic": string,
"version": string,
"feature_map": string,
"array_uuid": string,
"name": string,
"name_val": string,
"uuid": string,
"uuid_val": string,
"homehost": string,
"container": string,
"container_dev": string,
"container_member": integer,
"controller_guid": string,
"container_guid": string,
"seq": string,
"redundant_hdr": string,
"virtual_disks": integer,
"creation_time": string,
"creation_time_epoch": integer, # naive timestamp
"raid_level": string,
"array_size": string,
"array_size_num": integer,
"used_dev_size": string,
"used_dev_size_num": integer,
"raid_devices": integer,
"avail_dev_size": string,
"avail_dev_size_num": integer,
"data_offset": integer,
"super_offset": integer,
"unused_space": string,
"unused_space_before": integer,
"unused_space_after": integer,
"state": string,
"state_list": [
string
],
"device_uuid": string,
"flags": string,
"flag_list": [
string
],
"update_time": string,
"update_time_epoch": integer, # naive timestamp
"bad_block_log": string,
"checksum": string,
"checksum_val": string,
"checksum_state": string,
"events": string,
"events_num": integer,
"events_maj": integer,
"events_min": integer,
"chunk_size": string,
"chunk_size_num": integer,
"device_role": string,
"array_state": string,
"array_state_list": [
string
],
"member_arrays": string,
"member_arrays_list": [
string
],
"consistency_policy": string,
"rebuild_status": string,
"rebuild_status_percent": integer,
"resync_status": string,
"resync_status_percent": integer,
"check_status": string,
"check_status_percent": integer,
"total_devices": integer,
"preferred_minor": integer,
"persistence": string,
"active_devices": integer,
"working_devices": integer,
"failed_devices": integer,
"spare_devices": integer,
"physical_disks": integer,
"device_table": [
{
"number": integer/null,
"major": integer/null,
"minor": integer/null,
"state": [
string
],
"device": string,
"raid_device": integer/null
}
]
}
Any fields unspecified above will be string type.
Examples:
$ mdadm --query --detail /dev/md0 | jc --mdadm -p
{
"device": "/dev/md0",
"version": "1.1",
"creation_time": "Tue Apr 13 23:22:16 2010",
"raid_level": "raid1",
"array_size": "5860520828 (5.46 TiB 6.00 TB)",
"used_dev_size": "5860520828 (5.46 TiB 6.00 TB)",
"raid_devices": 2,
"total_devices": 2,
"persistence": "Superblock is persistent",
"intent_bitmap": "Internal",
"update_time": "Tue Jul 26 20:16:31 2022",
"state": "clean",
"active_devices": 2,
"working_devices": 2,
"failed_devices": 0,
"spare_devices": 0,
"consistency_policy": "bitmap",
"name": "virttest:0",
"uuid": "85c5b164:d58a5ada:14f5fe07:d642e843",
"events": 2193679,
"device_table": [
{
"number": 3,
"major": 8,
"minor": 17,
"state": [
"active",
"sync"
],
"device": "/dev/sdb1",
"raid_device": 0
},
{
"number": 2,
"major": 8,
"minor": 33,
"state": [
"active",
"sync"
],
"device": "/dev/sdc1",
"raid_device": 1
}
],
"array_size_num": 5860520828,
"used_dev_size_num": 5860520828,
"name_val": "virttest:0",
"uuid_val": "85c5b164:d58a5ada:14f5fe07:d642e843",
"state_list": [
"clean"
],
"creation_time_epoch": 1271226136,
"update_time_epoch": 1658891791
}
$ mdadm --query --detail /dev/md0 | jc --mdadm -p -r
{
"device": "/dev/md0",
"version": "1.1",
"creation_time": "Tue Apr 13 23:22:16 2010",
"raid_level": "raid1",
"array_size": "5860520828 (5.46 TiB 6.00 TB)",
"used_dev_size": "5860520828 (5.46 TiB 6.00 TB)",
"raid_devices": "2",
"total_devices": "2",
"persistence": "Superblock is persistent",
"intent_bitmap": "Internal",
"update_time": "Tue Jul 26 20:16:31 2022",
"state": "clean",
"active_devices": "2",
"working_devices": "2",
"failed_devices": "0",
"spare_devices": "0",
"consistency_policy": "bitmap",
"name": "virttest:0",
"uuid": "85c5b164:d58a5ada:14f5fe07:d642e843",
"events": "2193679",
"device_table": [
{
"number": "3",
"major": "8",
"minor": "17",
"state": "active sync",
"device": "/dev/sdb1",
"raid_device": "0"
},
{
"number": "2",
"major": "8",
"minor": "33",
"state": "active sync",
"device": "/dev/sdc1",
"raid_device": "1"
}
]
}
<a id="jc.parsers.mdadm.parse"></a>
### parse
```python
def parse(data: str, raw: bool = False, quiet: bool = False) -> Dict
```
Main text parsing function
Parameters:
data: (string) text data to parse
raw: (boolean) unprocessed output if True
quiet: (boolean) suppress warning messages if True
Returns:
Dictionary. Raw or processed structured data.
### Parser Information
Compatibility: linux
Source: [`jc/parsers/mdadm.py`](https://github.com/kellyjonbrazil/jc/blob/master/jc/parsers/mdadm.py)
Version 1.0 by Kelly Brazil (kellyjonbrazil@gmail.com)

View File

@@ -1,13 +1,35 @@
[Home](https://kellyjonbrazil.github.io/jc/)
<a id="jc.parsers.mount"></a>
# jc.parsers.mount
jc - JSON CLI output utility mount Parser
Usage:
jc - JSON Convert `mount` command output parser
specify --mount as the first argument if the piped input is coming from mount
Usage (cli):
Compatibility:
$ mount | jc --mount
'linux', 'darwin', 'freebsd'
or
$ jc mount
Usage (module):
import jc
result = jc.parse('mount', mount_command_output)
Schema:
[
{
"filesystem": string,
"mount_point": string,
"type": string,
"options": [
string
]
}
]
Example:
@@ -17,7 +39,7 @@ Example:
"filesystem": "sysfs",
"mount_point": "/sys",
"type": "sysfs",
"access": [
"options": [
"rw",
"nosuid",
"nodev",
@@ -29,7 +51,7 @@ Example:
"filesystem": "proc",
"mount_point": "/proc",
"type": "proc",
"access": [
"options": [
"rw",
"nosuid",
"nodev",
@@ -41,7 +63,7 @@ Example:
"filesystem": "udev",
"mount_point": "/dev",
"type": "devtmpfs",
"access": [
"options": [
"rw",
"nosuid",
"relatime",
@@ -53,40 +75,12 @@ Example:
...
]
## info
<a id="jc.parsers.mount.parse"></a>
### parse
```python
info(self, /, *args, **kwargs)
```
## process
```python
process(proc_data)
```
Final processing to conform to the schema.
Parameters:
proc_data: (dictionary) raw structured data to process
Returns:
List of dictionaries. Structured data with the following schema:
[
{
"filesystem": string,
"mount_point": string,
"type": string,
"access": [
string
]
}
]
## parse
```python
parse(data, raw=False, quiet=False)
def parse(data, raw=False, quiet=False)
```
Main text parsing function
@@ -94,10 +88,16 @@ Main text parsing function
Parameters:
data: (string) text data to parse
raw: (boolean) output preprocessed JSON if True
raw: (boolean) unprocessed output if True
quiet: (boolean) suppress warning messages if True
Returns:
List of dictionaries. Raw or processed structured data.
List of Dictionaries. Raw or processed structured data.
### Parser Information
Compatibility: linux, darwin, freebsd, aix
Source: [`jc/parsers/mount.py`](https://github.com/kellyjonbrazil/jc/blob/master/jc/parsers/mount.py)
Version 1.9 by Kelly Brazil (kellyjonbrazil@gmail.com)

Some files were not shown because too many files have changed in this diff Show More