mirror of
https://github.com/kellyjonbrazil/jc.git
synced 2026-04-03 17:44:07 +02:00
Compare commits
456 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9fd13e6987 | ||
|
|
1feb000231 | ||
|
|
d270ddc6ce | ||
|
|
07ef285b06 | ||
|
|
467ad60e20 | ||
|
|
91b3572ead | ||
|
|
60caa17eb9 | ||
|
|
eea31ddbe4 | ||
|
|
61793bba31 | ||
|
|
51e4a476ba | ||
|
|
883f0c9cf7 | ||
|
|
ffaf455d43 | ||
|
|
b520532578 | ||
|
|
3b1af1a9b6 | ||
|
|
0fa5f7f67f | ||
|
|
a77298e560 | ||
|
|
5f75df2e4b | ||
|
|
38d169f4d0 | ||
|
|
e737dde9e0 | ||
|
|
6e49c87575 | ||
|
|
6afa6b449e | ||
|
|
424d9c1347 | ||
|
|
10d1ab1c74 | ||
|
|
5db256c3e7 | ||
|
|
7f7dcc35ec | ||
|
|
edcde58cb9 | ||
|
|
3a7ca118ff | ||
|
|
f36c713110 | ||
|
|
0db2ad2f5e | ||
|
|
816c38e1fe | ||
|
|
e4cf7b502e | ||
|
|
4ca7179481 | ||
|
|
bebd6a60fb | ||
|
|
5d7940a89b | ||
|
|
ac8120e1fe | ||
|
|
a854f1d6b0 | ||
|
|
7c9e92e284 | ||
|
|
4c2775970d | ||
|
|
ba0fc5dad9 | ||
|
|
222d1b7255 | ||
|
|
34fda0905f | ||
|
|
ccbe36e712 | ||
|
|
bb1136c33c | ||
|
|
c6a13aa4d8 | ||
|
|
d04a175d36 | ||
|
|
966df71566 | ||
|
|
c8599253fb | ||
|
|
65d9cc718f | ||
|
|
9b4190f1e6 | ||
|
|
c519657d85 | ||
|
|
d5cceb77e9 | ||
|
|
5cde110afb | ||
|
|
65aa6c1a9a | ||
|
|
5394d7f62d | ||
|
|
ebbd4e9320 | ||
|
|
834acfb2d6 | ||
|
|
1182c9f263 | ||
|
|
ed3046bb1b | ||
|
|
ca73076b56 | ||
|
|
9efc014dce | ||
|
|
dbe1757a48 | ||
|
|
1c09289d95 | ||
|
|
e9ccedf0d7 | ||
|
|
fb4b4eeb58 | ||
|
|
896891ad9e | ||
|
|
7fda79d841 | ||
|
|
8995ac686a | ||
|
|
006047553d | ||
|
|
c56e38c66c | ||
|
|
ee3b873ef4 | ||
|
|
a39cb05228 | ||
|
|
f54ceaa793 | ||
|
|
99cce72244 | ||
|
|
0c40e3a3c9 | ||
|
|
025d00ecd2 | ||
|
|
a2b5d41308 | ||
|
|
366589268e | ||
|
|
53dd28b65e | ||
|
|
0be6528aff | ||
|
|
6ceaa7749e | ||
|
|
6ae2e17ea1 | ||
|
|
ef9ca9322e | ||
|
|
95cba21d73 | ||
|
|
be1dd031f1 | ||
|
|
7fbe1e9f21 | ||
|
|
7d33850d43 | ||
|
|
7887789d0d | ||
|
|
7ddd2a4ce2 | ||
|
|
34ab34cc66 | ||
|
|
a8b231da81 | ||
|
|
2278c7ecab | ||
|
|
4cb88977cc | ||
|
|
0af4a3a5d7 | ||
|
|
c0f9b705c6 | ||
|
|
fa416083f2 | ||
|
|
e858faa746 | ||
|
|
a8f769eea3 | ||
|
|
26133261f9 | ||
|
|
6072ea0ec7 | ||
|
|
95672c23b7 | ||
|
|
a2e0e6d549 | ||
|
|
2df5e79295 | ||
|
|
c5e0642b0b | ||
|
|
78150ded70 | ||
|
|
05f3e4ea8a | ||
|
|
b7cf0ca8d4 | ||
|
|
ba6e1e694e | ||
|
|
aec3e3cd13 | ||
|
|
d9363ae473 | ||
|
|
0f367a435a | ||
|
|
0955598b49 | ||
|
|
f2a8e0087b | ||
|
|
97e9798cef | ||
|
|
413519e02c | ||
|
|
5c855e40c6 | ||
|
|
b66c5dbf55 | ||
|
|
b054b1b782 | ||
|
|
1593d0bf79 | ||
|
|
8a22f8a468 | ||
|
|
c26f0641ff | ||
|
|
40eb2b7ef6 | ||
|
|
71af0c5555 | ||
|
|
9f5532d91f | ||
|
|
c68c919024 | ||
|
|
9eb4df34b1 | ||
|
|
921133f3ac | ||
|
|
0350607359 | ||
|
|
5f8c65cf5b | ||
|
|
ed048c7b2b | ||
|
|
18dabd4b9f | ||
|
|
0005945383 | ||
|
|
e13605a6a9 | ||
|
|
a92e318319 | ||
|
|
7d8166326a | ||
|
|
d21e5f4f28 | ||
|
|
f1bab336ee | ||
|
|
0faacb6d0d | ||
|
|
6af82fb9ae | ||
|
|
517137889c | ||
|
|
8a3997cd0e | ||
|
|
4f66faad0d | ||
|
|
846f4fb691 | ||
|
|
5bec53b3f8 | ||
|
|
dfc942776b | ||
|
|
18a00bc57a | ||
|
|
e2b2406931 | ||
|
|
a9cfb4b13a | ||
|
|
3e57ecf6df | ||
|
|
2ddf67ad0c | ||
|
|
137c59cea1 | ||
|
|
8b2f57e8e7 | ||
|
|
01f5aa05b3 | ||
|
|
6ae626ef9f | ||
|
|
dea7099183 | ||
|
|
9c3e4f349c | ||
|
|
d5398c7089 | ||
|
|
2dcf0e2d1b | ||
|
|
f45295eee4 | ||
|
|
4ef34f7849 | ||
|
|
a69e55cb1c | ||
|
|
6563b9f073 | ||
|
|
6e17ed6f62 | ||
|
|
abda8735be | ||
|
|
79cb156441 | ||
|
|
1da080dc52 | ||
|
|
3ca8e1ef11 | ||
|
|
1d31d3570a | ||
|
|
b84123a09b | ||
|
|
475eedb142 | ||
|
|
ebd0432b82 | ||
|
|
ee1135003b | ||
|
|
aaee394e51 | ||
|
|
ad91a71488 | ||
|
|
c2adc46db4 | ||
|
|
3e9afca803 | ||
|
|
ee2a7ddc2e | ||
|
|
4fc7232d44 | ||
|
|
a0dff721b1 | ||
|
|
37061227d9 | ||
|
|
401b7b31b8 | ||
|
|
86a4bd12b5 | ||
|
|
50638cc11e | ||
|
|
36de08a6f8 | ||
|
|
83fa32f615 | ||
|
|
a3ca2814b3 | ||
|
|
5c06712fba | ||
|
|
fdadba226f | ||
|
|
5ac36befe2 | ||
|
|
527b5ab5c5 | ||
|
|
495c353c5d | ||
|
|
abbd4820fd | ||
|
|
5e88eb0c8b | ||
|
|
b0c98a56ce | ||
|
|
07e9b46535 | ||
|
|
87419750fc | ||
|
|
412a772b42 | ||
|
|
52a816cc45 | ||
|
|
48deacf875 | ||
|
|
7a377f7b8d | ||
|
|
e2f97d7d8e | ||
|
|
f9bf889654 | ||
|
|
026846650a | ||
|
|
850917ada0 | ||
|
|
bce4eb536a | ||
|
|
ef2a2121b5 | ||
|
|
4bed8392b8 | ||
|
|
8e2bcba352 | ||
|
|
588e5c2653 | ||
|
|
25085c3412 | ||
|
|
bfa99d99af | ||
|
|
b8f7ddcfc8 | ||
|
|
413ea4bc68 | ||
|
|
13948fff26 | ||
|
|
6275591ef1 | ||
|
|
2cdbebb7fd | ||
|
|
412f11276a | ||
|
|
f3dd51f517 | ||
|
|
f66f1aadaa | ||
|
|
8ead7e4835 | ||
|
|
f1177a2606 | ||
|
|
44dc2a74c1 | ||
|
|
d50bd96ce6 | ||
|
|
5cde127a04 | ||
|
|
63d1cead90 | ||
|
|
d3e7f09ca3 | ||
|
|
e6bdbb42d3 | ||
|
|
3cfc5e3e3c | ||
|
|
082d4a3f80 | ||
|
|
158c28455b | ||
|
|
efb02493b8 | ||
|
|
a319ec85ca | ||
|
|
e754e88f2d | ||
|
|
cfa7f267fc | ||
|
|
c581e959fa | ||
|
|
9eb56543be | ||
|
|
67643906b1 | ||
|
|
14d257225c | ||
|
|
0411940f75 | ||
|
|
7d60df67f3 | ||
|
|
70a971a2f1 | ||
|
|
3fbdffd028 | ||
|
|
539fe72d16 | ||
|
|
bd6611aaba | ||
|
|
cf77ddc396 | ||
|
|
77bcd616cd | ||
|
|
5ee2eda83e | ||
|
|
5b849b0275 | ||
|
|
3e5d206f0c | ||
|
|
f50f96381d | ||
|
|
962632ac1f | ||
|
|
d209780a9d | ||
|
|
8e5451a7c1 | ||
|
|
86a09c17cf | ||
|
|
4bb85195e2 | ||
|
|
39f43aad63 | ||
|
|
29689f7603 | ||
|
|
78d7ab1308 | ||
|
|
303cd12de3 | ||
|
|
b65f37e075 | ||
|
|
c05fa7e9cd | ||
|
|
264272a8b8 | ||
|
|
7fadb23fea | ||
|
|
c419e460db | ||
|
|
6434ff61bf | ||
|
|
45a1be11e2 | ||
|
|
7659fe470a | ||
|
|
c332c4febf | ||
|
|
2cc212bfab | ||
|
|
b836ffc583 | ||
|
|
29f1a1d425 | ||
|
|
9f78dc6afa | ||
|
|
74c7e11948 | ||
|
|
6ba6dc0374 | ||
|
|
ec0f2569e5 | ||
|
|
65e30c4440 | ||
|
|
8d9ebf5dfa | ||
|
|
c3746454ff | ||
|
|
ea0f6493a2 | ||
|
|
afbc46076e | ||
|
|
2b9b6550a7 | ||
|
|
6fb3c0a409 | ||
|
|
1b8911ad36 | ||
|
|
cc61b57dd1 | ||
|
|
6d679b2895 | ||
|
|
1e1fc08a47 | ||
|
|
b5c3a03d56 | ||
|
|
9e269f070f | ||
|
|
f863cfdef4 | ||
|
|
2cd58d75e7 | ||
|
|
03b70eebb7 | ||
|
|
1e76ce2aea | ||
|
|
d9fc1b4242 | ||
|
|
36a3d2e96d | ||
|
|
bf05de1d63 | ||
|
|
cae41df1d8 | ||
|
|
8e9ff7fa9f | ||
|
|
973c535c72 | ||
|
|
8614d3dde9 | ||
|
|
a73ee47bcf | ||
|
|
d54a81831f | ||
|
|
73ae1396b9 | ||
|
|
3399e8551e | ||
|
|
b9656c2fae | ||
|
|
e08ccb7942 | ||
|
|
9b648e8560 | ||
|
|
c97a8fb48f | ||
|
|
3a95407161 | ||
|
|
7609af28b3 | ||
|
|
c2b2e81a2b | ||
|
|
3b0594a4a6 | ||
|
|
2b0b9dd7ba | ||
|
|
f159dd6b9d | ||
|
|
2d5d87c73d | ||
|
|
a260ceba1c | ||
|
|
6c30b8106c | ||
|
|
a23921c879 | ||
|
|
3999276d17 | ||
|
|
65bd4850f2 | ||
|
|
d71c2d2b20 | ||
|
|
6dd5b29998 | ||
|
|
1868b28f74 | ||
|
|
e8c0bef6ca | ||
|
|
2c09a06b5a | ||
|
|
fc75ce90d1 | ||
|
|
45a6cfc9cf | ||
|
|
69a0922410 | ||
|
|
2bb201a706 | ||
|
|
50d5d3a3ba | ||
|
|
b14a8980b8 | ||
|
|
de6aa1cc92 | ||
|
|
c4dcedb269 | ||
|
|
140a61702b | ||
|
|
4d3fc07e3b | ||
|
|
dcc4d35d55 | ||
|
|
cfb30b32f3 | ||
|
|
26f2738471 | ||
|
|
2bccd14c5d | ||
|
|
0d4823c9de | ||
|
|
2a14f56b72 | ||
|
|
fe49759598 | ||
|
|
ee737a59eb | ||
|
|
517ab10930 | ||
|
|
604fb574be | ||
|
|
a254ee8d88 | ||
|
|
f784a7a76d | ||
|
|
2e33afbe18 | ||
|
|
103bb174fc | ||
|
|
2a76a64fa1 | ||
|
|
c8fb56c601 | ||
|
|
e835227027 | ||
|
|
88ffcaee56 | ||
|
|
a9ba98847c | ||
|
|
2630049ab7 | ||
|
|
47c7e081f3 | ||
|
|
ef7f755614 | ||
|
|
32bd7ffbf6 | ||
|
|
347097a294 | ||
|
|
356857f5d6 | ||
|
|
ee12c52291 | ||
|
|
0e7ebf4dc1 | ||
|
|
f1e0cec9d6 | ||
|
|
d96a2a8623 | ||
|
|
1b1bc46222 | ||
|
|
d5a8b4eed2 | ||
|
|
5ddd4f0e86 | ||
|
|
8b94c326de | ||
|
|
29b012e66d | ||
|
|
572a3207cd | ||
|
|
2a88f2be6b | ||
|
|
3de6eac1ad | ||
|
|
f44260603e | ||
|
|
1c60f5355e | ||
|
|
40fa78a966 | ||
|
|
71db67ef49 | ||
|
|
1cd723b48f | ||
|
|
82ee4d7b30 | ||
|
|
dfd19f38f3 | ||
|
|
2358c883d0 | ||
|
|
79e4f3a761 | ||
|
|
5be45622cc | ||
|
|
5f4136b943 | ||
|
|
941bfe2724 | ||
|
|
3ed44a26d9 | ||
|
|
b7270517bd | ||
|
|
bf63ac93c6 | ||
|
|
1cb80f15c2 | ||
|
|
b5c22c6e53 | ||
|
|
7951366117 | ||
|
|
c78a4bb655 | ||
|
|
8aceda18b9 | ||
|
|
e0c75a9b6b | ||
|
|
fd283f6cf7 | ||
|
|
b881ad4ec0 | ||
|
|
2fcb32e26f | ||
|
|
13a802225b | ||
|
|
88649a4e8d | ||
|
|
5c6fa5bff6 | ||
|
|
b70025d6d6 | ||
|
|
59b89ecbd4 | ||
|
|
8f7502ff0f | ||
|
|
249d93f15c | ||
|
|
b0cf2e2d78 | ||
|
|
264fcd40ad | ||
|
|
54def8ef49 | ||
|
|
63c271b837 | ||
|
|
741b2d1c1d | ||
|
|
47d4335890 | ||
|
|
81f721f1ab | ||
|
|
c4e1068895 | ||
|
|
a77bb4165a | ||
|
|
3cd2dce496 | ||
|
|
46a8978740 | ||
|
|
3161c48939 | ||
|
|
a89a9187f8 | ||
|
|
d9e0aa5b93 | ||
|
|
d298e101e9 | ||
|
|
cea975d7f1 | ||
|
|
1ed69f9e6a | ||
|
|
ab0e05ec82 | ||
|
|
c16cce4bf0 | ||
|
|
d3489536a1 | ||
|
|
041050ce28 | ||
|
|
7de1a8a5d6 | ||
|
|
d4604743d1 | ||
|
|
0b8fb31298 | ||
|
|
dcdd79e28c | ||
|
|
5291baeb8e | ||
|
|
6867102c66 | ||
|
|
36ed2c7e2e | ||
|
|
4ab0aba9d3 | ||
|
|
e643badaf7 | ||
|
|
d96e96219e | ||
|
|
e42af3353e | ||
|
|
4ec2b16f42 | ||
|
|
0a028456bf | ||
|
|
a1f10928e1 | ||
|
|
eae1d4b89a | ||
|
|
d3c7cec333 | ||
|
|
36fa08d711 | ||
|
|
a9958841e4 | ||
|
|
504ad81a01 | ||
|
|
8bf2f4f4d0 | ||
|
|
805397ea18 | ||
|
|
1b3985c2d7 | ||
|
|
f602043642 | ||
|
|
1a1aa8fda3 | ||
|
|
3249a017ae | ||
|
|
84f0246b2d | ||
|
|
1c795982b0 | ||
|
|
c5164b4108 | ||
|
|
dc3716ecb3 | ||
|
|
c5165ccc21 | ||
|
|
5b2035e0e6 | ||
|
|
5205154aaf | ||
|
|
f500de3af6 | ||
|
|
4b028b5080 |
65
.github/workflows/pythonapp.yml
vendored
65
.github/workflows/pythonapp.yml
vendored
@@ -9,17 +9,74 @@ on:
|
||||
- "**/*.py"
|
||||
|
||||
jobs:
|
||||
build:
|
||||
very_old_python:
|
||||
if: github.event.pull_request.draft == false
|
||||
runs-on: ${{ matrix.os }}
|
||||
strategy:
|
||||
matrix:
|
||||
os: [macos-latest, ubuntu-20.04, windows-latest]
|
||||
python-version: ["3.6", "3.7", "3.8", "3.9", "3.10", "3.11"]
|
||||
os: [macos-13, windows-2022]
|
||||
python-version: ["3.6"]
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- name: "Set up timezone to America/Los_Angeles"
|
||||
uses: szenius/set-timezone@v1.0
|
||||
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@v4
|
||||
with:
|
||||
python-version: ${{ matrix.python-version }}
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
pip install -r requirements.txt
|
||||
- name: Test with unittest
|
||||
run: |
|
||||
python -m unittest discover tests
|
||||
|
||||
old_python:
|
||||
if: github.event.pull_request.draft == false
|
||||
runs-on: ${{ matrix.os }}
|
||||
strategy:
|
||||
matrix:
|
||||
os: [macos-13, ubuntu-22.04, windows-2022]
|
||||
python-version: ["3.7", "3.8", "3.9", "3.10"]
|
||||
|
||||
steps:
|
||||
- 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@v4
|
||||
with:
|
||||
python-version: ${{ matrix.python-version }}
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
pip install -r requirements.txt
|
||||
- name: Test with unittest
|
||||
run: |
|
||||
python -m unittest discover tests
|
||||
|
||||
latest_python:
|
||||
if: github.event.pull_request.draft == false
|
||||
runs-on: ${{ matrix.os }}
|
||||
strategy:
|
||||
matrix:
|
||||
os: [macos-latest, ubuntu-latest, windows-latest]
|
||||
python-version: ["3.11", "3.12"]
|
||||
|
||||
steps:
|
||||
- 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"
|
||||
|
||||
2
.gitignore
vendored
2
.gitignore
vendored
@@ -6,3 +6,5 @@ build/
|
||||
.github/
|
||||
.vscode/
|
||||
_config.yml
|
||||
.venv
|
||||
.DS_Store
|
||||
|
||||
156
CHANGELOG
156
CHANGELOG
@@ -1,5 +1,161 @@
|
||||
jc changelog
|
||||
|
||||
202501012 v1.25.6
|
||||
- Add `net-localgroup` Windows command parser
|
||||
- Add `net-user` Windows command parser
|
||||
- Add `route-print` Windows command parser
|
||||
- Add `traceroute-s` streaming command parser
|
||||
- Add `max_hops` and `data_bytes` fields to `traceroute` command parser
|
||||
- Add `x509-crl` file parser to support Certificate Revocation List PEM and DER files
|
||||
- Add `yay` as a magic command for the `pacman` command parser
|
||||
- Fix `bluetoothctl` command parser to support output with the `cable_pairing` attribute
|
||||
- Fix `nmcli` command parser to support blank `team.config` JSON value and `team-port.config` JSON value
|
||||
- Fix `top` command parsers to correct memory size field parsing. Several new unit
|
||||
and byte conversion fields have been added
|
||||
- Fix `who` command parser to support the `process` field on Debian13
|
||||
|
||||
20250503 v1.25.5
|
||||
- Add `amixer` command parser
|
||||
- Enhance `iptables` command parser to add default policy statistics fields
|
||||
- Fix `bluetoothctl` parser failing to parse controllers with power state prop
|
||||
- Fix `lsblk` command parser to support multiple mountpoints. Also, added
|
||||
byte conversions for size fields.
|
||||
- Fix `nmcli` command parser to support `team.config` JSON field
|
||||
- Fix `time` command parser for output that does not contain centiseconds
|
||||
- Fix `x509-cert` parser to handle IDNA2008 encoded email addresses with a warning
|
||||
- Fix typing for upcoming python v3.14
|
||||
- Fix timezone setting for tests to support minimal chrooted builds
|
||||
|
||||
20241125 v1.25.4
|
||||
- Add `ipconfig` command parser (`ipconfig` for Windows)
|
||||
- Add `pacman` command parser
|
||||
- Add `wg show` command parser
|
||||
- Enhance `ethtool` parser to support `link_partner_advertised_link_modes`
|
||||
- Enhance `ifconfig` parser to support `utun` interfaces with assigned IPv4 addresses on macOS
|
||||
- Enhance `nsd-control` parser with additional state fields
|
||||
- Enhance `ping-s` streaming parser to support error replies
|
||||
- Fix `bluetoothctl` parser when extra attributes like `manufacturer` and `version` exist
|
||||
- Fix `df` parser to correctly output binary vs. decimal size outputs
|
||||
- Fix `ip-address` parser for Python 3.13 changes to IPv4 mapped IPv6 addresses
|
||||
- Fix `iw-scan` parser to output more fields (still beta quality)
|
||||
- Fix `mount` parser for cases where there are spaces in the filesystem name
|
||||
- Fix `netstat` parser for cases where there are spaces in the program name
|
||||
- Fix `pkg-index-deb`, `apt-cache-show`, and `rpm-qi` parsers to correctly convert contiguous packages with the same name
|
||||
- Fix `traceroute` parser to support extreme IPv6 cases
|
||||
- Fix `uptime` parser for data that contains `user` instead of `users`
|
||||
- Fix `yaml` parser to support values that start with an equal sign
|
||||
- Enhance `jc.utils.convert_size_to_int()` to add `posix_mode` and `decimal_bias` parameters
|
||||
- Enhance cli to coerce any non-JSON-serializable objects to a string
|
||||
|
||||
20240609 v1.25.3
|
||||
- Enhance `bluetoothctl` parser with added `battery_percentage` field
|
||||
- Enhance `git-log` standard and streaming parsers with added `lines_changed` field under `file_stats`
|
||||
- Fix `lspci` parser to handle `physlot` fields with a range value
|
||||
- Fix `pci-ids` parser to correctly handle multiple subdevices
|
||||
- Fix `pip-show` parser to handle multi-line fields with a beginning blank line
|
||||
- Fix `ss` parser to correctly handle the `Recv-Q` field being too close to the `Status` field
|
||||
- Fix `top` parsers to quiet uptime info parsing
|
||||
- Fix `traceroute` parser to correctly handle hops with multiple IPs
|
||||
- Fix `zpool-status` parser for config items lacking data values
|
||||
- Optimize some tests by removing timezone settings and using quiet=True
|
||||
- Documentation updates
|
||||
|
||||
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
|
||||
|
||||
125
CONTRIBUTING.md
125
CONTRIBUTING.md
@@ -1,5 +1,6 @@
|
||||
# Contributing to jc
|
||||
We love your input! We want to make contributing to this project as easy and transparent as possible, whether it's:
|
||||
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
|
||||
@@ -8,26 +9,65 @@ We love your input! We want to make contributing to this project as easy and tra
|
||||
- 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 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:
|
||||
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: 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. You can even place a new parser python module file in the [parser plugin directory](https://github.com/kellyjonbrazil/jc#custom-parsers) to get started right away with just a standard `jc` installation.
|
||||
4. If you've added code that should be tested, add tests. All new parsers should have several sample outputs and tests.
|
||||
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)
|
||||
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!
|
||||
|
||||
## 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
|
||||
## Documentation And Completions
|
||||
|
||||
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.
|
||||
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**
|
||||
|
||||
@@ -62,18 +102,61 @@ Good:
|
||||
]
|
||||
```
|
||||
|
||||
## Tests
|
||||
It is essential to have good command output sample coverage and tests to keep the `jc` parser quality high.
|
||||
## Development Environment
|
||||
Use the following steps to set up the development environment.
|
||||
|
||||
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.
|
||||
### 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.
|
||||
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!
|
||||
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
|
||||
@@ -82,8 +165,10 @@ We use GitHub issues to track public bugs. Report a bug by [opening a new issue]
|
||||
- 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)
|
||||
- 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
|
||||
|
||||
75
README-snap.md
Normal file
75
README-snap.md
Normal 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/>
|
||||
126
README.md
126
README.md
@@ -1,17 +1,15 @@
|
||||
[](https://github.com/kellyjonbrazil/jc/actions)
|
||||
[](https://pypi.org/project/jc/)
|
||||
|
||||
> Check out the `jc` Python [package documentation](https://github.com/kellyjonbrazil/jc/tree/master/docs) for developers
|
||||
|
||||
> Try the `jc` [web demo](https://jc-web.onrender.com/) and [REST API](https://github.com/kellyjonbrazil/jc-restapi)
|
||||
|
||||
> `jc` is [now available](https://galaxy.ansible.com/community/general) as an
|
||||
Ansible filter plugin in the `community.general` collection. See this
|
||||
> `jc` is available as an
|
||||
[Ansible filter plugin](https://docs.ansible.com/ansible/latest/collections/community/general/jc_filter.html#ansible-collections-community-general-jc-filter)
|
||||
in the `community.general` collection. See this
|
||||
[blog post](https://blog.kellybrazil.com/2020/08/30/parsing-command-output-in-ansible-with-jc/)
|
||||
for an example.
|
||||
|
||||
> Looking for something like `jc` but lower-level? Check out [regex2json](https://gitlab.com/tozd/regex2json).
|
||||
|
||||
# JC
|
||||
JSON Convert
|
||||
|
||||
@@ -77,7 +75,7 @@ function parameter in `parse()` when using `jc` as a python library.
|
||||
Schemas for each parser can be found at the documentation link beside each
|
||||
[**Parser**](#parsers) below.
|
||||
|
||||
Release notes can be found [here](https://blog.kellybrazil.com/category/jc-news/).
|
||||
Release notes can be found in the [Releases section](https://github.com/kellyjonbrazil/jc/releases) on Github.
|
||||
|
||||
## Why Would Anyone Do This!?
|
||||
For more information on the motivations for this project, please see my blog
|
||||
@@ -120,6 +118,7 @@ pip3 install jc
|
||||
| NixOS linux | `nix-env -iA nixpkgs.jc` or `nix-env -iA nixos.jc` |
|
||||
| Guix System linux | `guix install jc` |
|
||||
| Gentoo Linux | `emerge dev-python/jc` |
|
||||
| Photon linux | `tdnf install jc` |
|
||||
| macOS | `brew install jc` |
|
||||
| FreeBSD | `portsnap fetch update && cd /usr/ports/textproc/py-jc && make install clean` |
|
||||
| Ansible filter plugin | `ansible-galaxy collection install community.general` |
|
||||
@@ -159,6 +158,9 @@ option.
|
||||
| `--acpi` | `acpi` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/acpi) |
|
||||
| `--airport` | `airport -I` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/airport) |
|
||||
| `--airport-s` | `airport -s` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/airport_s) |
|
||||
| `--amixer` | `amixer` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/amixer) |
|
||||
| `--apt-cache-show` | `apt-cache show` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/apt_cache_show) |
|
||||
| `--apt-get-sqq` | `apt-get -sqq` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/apt_get_sqq) |
|
||||
| `--arp` | `arp` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/arp) |
|
||||
| `--asciitable` | ASCII and Unicode table parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/asciitable) |
|
||||
| `--asciitable-m` | multi-line ASCII and Unicode table parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/asciitable_m) |
|
||||
@@ -176,16 +178,20 @@ option.
|
||||
| `--crontab-u` | `crontab` file parser with user support | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/crontab_u) |
|
||||
| `--csv` | CSV file parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/csv) |
|
||||
| `--csv-s` | CSV file streaming parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/csv_s) |
|
||||
| `--curl-head` | `curl --head` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/curl_head) |
|
||||
| `--date` | `date` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/date) |
|
||||
| `--datetime-iso` | ISO 8601 Datetime string parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/datetime_iso) |
|
||||
| `--debconf-show` | `debconf-show` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/debconf_show) |
|
||||
| `--df` | `df` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/df) |
|
||||
| `--dig` | `dig` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/dig) |
|
||||
| `--dir` | `dir` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/dir) |
|
||||
| `--dmidecode` | `dmidecode` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/dmidecode) |
|
||||
| `--dpkg-l` | `dpkg -l` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/dpkg_l) |
|
||||
| `--du` | `du` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/du) |
|
||||
| `--efibootmgr` | `efibootmgr` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/efibootmgr) |
|
||||
| `--email-address` | Email Address string parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/email_address) |
|
||||
| `--env` | `env` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/env) |
|
||||
| `--ethtool` | `ethtool` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/ethtool) |
|
||||
| `--file` | `file` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/file) |
|
||||
| `--find` | `find` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/find) |
|
||||
| `--findmnt` | `findmnt` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/findmnt) |
|
||||
@@ -202,7 +208,9 @@ option.
|
||||
| `--hashsum` | hashsum command parser (`md5sum`, `shasum`, etc.) | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/hashsum) |
|
||||
| `--hciconfig` | `hciconfig` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/hciconfig) |
|
||||
| `--history` | `history` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/history) |
|
||||
| `--host` | `host` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/host) |
|
||||
| `--hosts` | `/etc/hosts` file parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/hosts) |
|
||||
| `--http-headers` | HTTP headers parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/http_headers) |
|
||||
| `--id` | `id` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/id) |
|
||||
| `--ifconfig` | `ifconfig` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/ifconfig) |
|
||||
| `--ini` | INI file parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/ini) |
|
||||
@@ -210,6 +218,7 @@ option.
|
||||
| `--iostat` | `iostat` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/iostat) |
|
||||
| `--iostat-s` | `iostat` command streaming parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/iostat_s) |
|
||||
| `--ip-address` | IPv4 and IPv6 Address string parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/ip_address) |
|
||||
| `--ipconfig` | `ipconfig` Windows command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/ipconfig) |
|
||||
| `--iptables` | `iptables` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/iptables) |
|
||||
| `--ip-route` | `ip route` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/ip_route) |
|
||||
| `--iw-scan` | `iw dev [device] scan` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/iw_scan) |
|
||||
@@ -218,10 +227,12 @@ option.
|
||||
| `--jobs` | `jobs` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/jobs) |
|
||||
| `--jwt` | JWT string parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/jwt) |
|
||||
| `--kv` | Key/Value file and string parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/kv) |
|
||||
| `--kv-dup` | Key/Value with duplicate key file and string parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/kv_dup) |
|
||||
| `--last` | `last` and `lastb` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/last) |
|
||||
| `--ls` | `ls` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/ls) |
|
||||
| `--ls-s` | `ls` command streaming parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/ls_s) |
|
||||
| `--lsattr` | `lsattr` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/lsattr) |
|
||||
| `--lsb-release` | `lsb_release` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/lsb_release) |
|
||||
| `--lsblk` | `lsblk` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/lsblk) |
|
||||
| `--lsmod` | `lsmod` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/lsmod) |
|
||||
| `--lsof` | `lsof` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/lsof) |
|
||||
@@ -232,12 +243,20 @@ option.
|
||||
| `--mount` | `mount` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/mount) |
|
||||
| `--mpstat` | `mpstat` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/mpstat) |
|
||||
| `--mpstat-s` | `mpstat` command streaming parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/mpstat_s) |
|
||||
| `--needrestart` | `needrestart -b` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/needrestart) |
|
||||
| `--netstat` | `netstat` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/netstat) |
|
||||
| `--net-localgroup` | `net localgroup` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/net_localgroup) |
|
||||
| `--net-user` | `net user` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/net_user) |
|
||||
| `--nmcli` | `nmcli` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/nmcli) |
|
||||
| `--nsd-control` | `nsd-control` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/nsd_control) |
|
||||
| `--ntpq` | `ntpq -p` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/ntpq) |
|
||||
| `--openvpn` | openvpn-status.log file parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/openvpn) |
|
||||
| `--os-prober` | `os-prober` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/os_prober) |
|
||||
| `--os-release` | `/etc/os-release` file parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/os_release) |
|
||||
| `--pacman` | `pacman` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/pacman) |
|
||||
| `--passwd` | `/etc/passwd` file parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/passwd) |
|
||||
| `--path` | POSIX path string parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/path) |
|
||||
| `--path-list` | POSIX path list string parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/path_list) |
|
||||
| `--pci-ids` | `pci.ids` file parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/pci_ids) |
|
||||
| `--pgpass` | PostgreSQL password file parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/pgpass) |
|
||||
| `--pidstat` | `pidstat -H` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/pidstat) |
|
||||
@@ -246,12 +265,15 @@ option.
|
||||
| `--ping-s` | `ping` and `ping6` command streaming parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/ping_s) |
|
||||
| `--pip-list` | `pip list` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/pip_list) |
|
||||
| `--pip-show` | `pip show` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/pip_show) |
|
||||
| `--pkg-index-apk` | Alpine Linux Package Index file parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/pkg_index_apk) |
|
||||
| `--pkg-index-deb` | Debian Package Index file parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/pkg_index_deb) |
|
||||
| `--plist` | PLIST file parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/plist) |
|
||||
| `--postconf` | `postconf -M` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/postconf) |
|
||||
| `--proc` | `/proc/` file parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/proc) |
|
||||
| `--ps` | `ps` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/ps) |
|
||||
| `--resolve-conf` | `/etc/resolve.conf` file parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/resolve_conf) |
|
||||
| `--route` | `route` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/route) |
|
||||
| `--route-print` | `route print` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/route_print) |
|
||||
| `--rpm-qi` | `rpm -qi` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/rpm_qi) |
|
||||
| `--rsync` | `rsync` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/rsync) |
|
||||
| `--rsync-s` | `rsync` command streaming parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/rsync_s) |
|
||||
@@ -264,6 +286,7 @@ option.
|
||||
| `--sshd-conf` | `sshd` config file and `sshd -T` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/sshd_conf) |
|
||||
| `--stat` | `stat` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/stat) |
|
||||
| `--stat-s` | `stat` command streaming parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/stat_s) |
|
||||
| `--swapon` | `swapon` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/swapon) |
|
||||
| `--sysctl` | `sysctl` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/sysctl) |
|
||||
| `--syslog` | Syslog RFC 5424 string parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/syslog) |
|
||||
| `--syslog-s` | Syslog RFC 5424 string streaming parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/syslog_s) |
|
||||
@@ -282,6 +305,8 @@ option.
|
||||
| `--top-s` | `top -b` command streaming parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/top_s) |
|
||||
| `--tracepath` | `tracepath` and `tracepath6` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/tracepath) |
|
||||
| `--traceroute` | `traceroute` and `traceroute6` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/traceroute) |
|
||||
| `--traceroute-s` | `traceroute` and `traceroute6` command streaming parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/traceroute_s) |
|
||||
| `--tune2fs` | `tune2fs -l` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/tune2fs) |
|
||||
| `--udevadm` | `udevadm info` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/udevadm) |
|
||||
| `--ufw` | `ufw status` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/ufw) |
|
||||
| `--ufw-appinfo` | `ufw app info [application]` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/ufw_appinfo) |
|
||||
@@ -297,8 +322,10 @@ option.
|
||||
| `--vmstat-s` | `vmstat` command streaming parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/vmstat_s) |
|
||||
| `--w` | `w` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/w) |
|
||||
| `--wc` | `wc` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/wc) |
|
||||
| `--wg-show` | `wg show` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/wg_show) |
|
||||
| `--who` | `who` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/who) |
|
||||
| `--x509-cert` | X.509 PEM and DER certificate file parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/x509_cert) |
|
||||
| `--x509-crl` | X.509 PEM and DER certificate revocation list file parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/x509_crl) |
|
||||
| `--x509-csr` | X.509 PEM and DER certificate request file parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/x509_csr) |
|
||||
| `--xml` | XML file parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/xml) |
|
||||
| `--xrandr` | `xrandr` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/xrandr) |
|
||||
@@ -309,22 +336,23 @@ option.
|
||||
|
||||
### Options
|
||||
|
||||
| Short | Long | Description |
|
||||
|-------|-----------------|---------------------------------------------------------------------------------------------------------------------|
|
||||
| `-a` | `--about` | About `jc`. Prints information about `jc` and the parsers (in JSON or YAML, of course!) |
|
||||
| `-C` | `--force-color` | Force color output even when using pipes (overrides `-m` and the `NO_COLOR` env variable) |
|
||||
| `-d` | `--debug` | Debug mode. Prints trace messages if parsing issues are encountered (use`-dd` for verbose debugging) |
|
||||
| `-h` | `--help` | Help. Use `jc -h --parser_name` for parser documentation. Use twice to show hidden parsers (e.g. `-hh`) |
|
||||
| `-m` | `--monochrome` | Monochrome output |
|
||||
| `-M` | `--meta-out` | Add metadata to output including timestamp, parser name, magic command, magic command exit code, etc. | |
|
||||
| `-p` | `--pretty` | Pretty format the JSON output |
|
||||
| `-q` | `--quiet` | Quiet mode. Suppresses parser warning messages (use `-qq` to ignore streaming parser errors) |
|
||||
| `-r` | `--raw` | Raw output. Provides more literal output, typically with string values and no additional semantic processing |
|
||||
| `-u` | `--unbuffer` | Unbuffer output |
|
||||
| `-v` | `--version` | Version information |
|
||||
| `-y` | `--yaml-out` | YAML output |
|
||||
| `-B` | `--bash-comp` | Generate Bash shell completion script ([more info](https://github.com/kellyjonbrazil/jc/wiki/Shell-Completions)) |
|
||||
| `-Z` | `--zsh-comp` | Generate Zsh shell completion script ([more info](https://github.com/kellyjonbrazil/jc/wiki/Shell-Completions)) |
|
||||
| Short | Long | Description |
|
||||
|-------|-----------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||
| `-a` | `--about` | About `jc`. Prints information about `jc` and the parsers (in JSON or YAML, of course!) |
|
||||
| `-C` | `--force-color` | Force color output even when using pipes (overrides `-m` and the `NO_COLOR` env variable) |
|
||||
| `-d` | `--debug` | Debug mode. Prints trace messages if parsing issues are encountered (use`-dd` for verbose debugging) |
|
||||
| `-h` | `--help` | Help. Use `jc -h --parser_name` for parser documentation. Use twice to show hidden parsers (e.g. `-hh`). Use thrice to show parser categories (e.g. `-hhh`). |
|
||||
| `-m` | `--monochrome` | Monochrome output |
|
||||
| `-M` | `--meta-out` | Add metadata to output including timestamp, parser name, magic command, magic command exit code, etc. | |
|
||||
| `-p` | `--pretty` | Pretty format the JSON output |
|
||||
| `-q` | `--quiet` | Quiet mode. Suppresses parser warning messages (use `-qq` to ignore streaming parser errors) |
|
||||
| `-r` | `--raw` | Raw output. Provides more literal output, typically with string values and no additional semantic processing |
|
||||
| `-s` | `--slurp` | Slurp multiple lines into an array. (use `-hhh` to find compatible parsers) |
|
||||
| `-u` | `--unbuffer` | Unbuffer output |
|
||||
| `-v` | `--version` | Version information |
|
||||
| `-y` | `--yaml-out` | YAML output |
|
||||
| `-B` | `--bash-comp` | Generate Bash shell completion script ([more info](https://github.com/kellyjonbrazil/jc/wiki/Shell-Completions)) |
|
||||
| `-Z` | `--zsh-comp` | Generate Zsh shell completion script ([more info](https://github.com/kellyjonbrazil/jc/wiki/Shell-Completions)) |
|
||||
|
||||
### Slice
|
||||
Line slicing is supported using the `START:STOP` syntax similar to Python
|
||||
@@ -374,6 +402,58 @@ Here is a breakdown of line slice options:
|
||||
| `:-STOP` | lines from the beginning through `STOP` lines from the end |
|
||||
| `:` | all lines |
|
||||
|
||||
### Slurp
|
||||
Some parsers support multi-item input and can output an array of results in a
|
||||
single pass. Slurping works for string parsers that accept a single line of
|
||||
input. (e.g. `url` and `ip-address`) To see a list of parsers that support
|
||||
the `--slurp` option, use `jc -hhh`.
|
||||
|
||||
For example, you can send a file with multiple IP addresses (one per line) to
|
||||
`jc` with the `--slurp` option and an array of results will output:
|
||||
|
||||
```bash
|
||||
$ cat ip-addresses.txt | jc --slurp --ip-address
|
||||
[<multiple output objects>]
|
||||
```
|
||||
|
||||
The magic syntax for `/proc` files automatically supports slurping of multiple
|
||||
files (no need to use the `--slurp` option). For example, you can convert many
|
||||
PID files at once:
|
||||
|
||||
```bash
|
||||
$ jc /proc/*/status
|
||||
[<multiple output objects>]
|
||||
```
|
||||
|
||||
When the `/proc` magic syntax is used and multiple files are selected, an
|
||||
additional `_file` field is inserted in the output so it is easier to tell what
|
||||
file each output object refers to.
|
||||
|
||||
Finally, the `--meta-out` option can be used in conjunction with slurped output.
|
||||
In this case, the slurped output is wrapped in an object with the following
|
||||
structure:
|
||||
|
||||
```json
|
||||
{
|
||||
"result": [<multiple output objects>],
|
||||
"_jc_meta": {
|
||||
"parser": "url",
|
||||
"timestamp": 1706235558.654576,
|
||||
"slice_start": null,
|
||||
"slice_end": null,
|
||||
"input_list": [
|
||||
"http://www.google.com",
|
||||
"https://www.apple.com",
|
||||
"https://www.microsoft.com"
|
||||
]
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
With `--meta-out`, `input_list` contains a list of inputs (actual input strings
|
||||
or `/proc` filenames) so you can identify which output object relates to each
|
||||
input string or `/proc` filename.
|
||||
|
||||
### Exit Codes
|
||||
Any fatal errors within `jc` will generate an exit code of `100`, otherwise the
|
||||
exit code will be `0`.
|
||||
@@ -1303,4 +1383,4 @@ cat istio.yaml | jc -p --yaml
|
||||
]
|
||||
```
|
||||
|
||||
© 2019-2023 Kelly Brazil
|
||||
© 2019-2025 Kelly Brazil
|
||||
@@ -3,9 +3,9 @@ _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 arp blkid bluetoothctl cbt certbot chage cksum crontab date df dig dmidecode dpkg du env file findmnt finger free git gpg hciconfig id ifconfig iostat ip iptables iw iwconfig jobs last lastb ls lsattr lsblk lsmod lsof lspci lsusb md5 md5sum mdadm mount mpstat netstat nmcli 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 sysctl systemctl systeminfo timedatectl top tracepath tracepath6 traceroute traceroute6 udevadm ufw uname update-alternatives upower uptime vdir veracrypt vmstat w wc who xrandr zipinfo zpool)
|
||||
jc_parsers=(--acpi --airport --airport-s --arp --asciitable --asciitable-m --blkid --bluetoothctl --cbt --cef --cef-s --certbot --chage --cksum --clf --clf-s --crontab --crontab-u --csv --csv-s --date --datetime-iso --df --dig --dir --dmidecode --dpkg-l --du --email-address --env --file --find --findmnt --finger --free --fstab --git-log --git-log-s --git-ls-remote --gpg --group --gshadow --hash --hashsum --hciconfig --history --hosts --id --ifconfig --ini --ini-dup --iostat --iostat-s --ip-address --iptables --ip-route --iw-scan --iwconfig --jar-manifest --jobs --jwt --kv --last --ls --ls-s --lsattr --lsblk --lsmod --lsof --lspci --lsusb --m3u --mdadm --mount --mpstat --mpstat-s --netstat --nmcli --ntpq --openvpn --os-prober --passwd --pci-ids --pgpass --pidstat --pidstat-s --ping --ping-s --pip-list --pip-show --plist --postconf --proc --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-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 --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 --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 --unbuffer -u --yaml-out -y)
|
||||
jc_commands=(acpi airport amixer 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 ipconfig iptables iw iwconfig jobs last lastb ls lsattr lsb_release lsblk lsmod lsof lspci lsusb md5 md5sum mdadm mount mpstat needrestart net netstat nmcli nsd-control ntpq os-prober pacman 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 wg who xrandr yay zipinfo zpool)
|
||||
jc_parsers=(--acpi --airport --airport-s --amixer --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 --ipconfig --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 --net-localgroup --net-user --nmcli --nsd-control --ntpq --openvpn --os-prober --os-release --pacman --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 --route-print --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 --traceroute-s --tune2fs --udevadm --ufw --ufw-appinfo --uname --update-alt-gs --update-alt-q --upower --uptime --url --ver --veracrypt --vmstat --vmstat-s --w --wc --wg-show --who --x509-cert --x509-crl --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)
|
||||
|
||||
@@ -9,10 +9,13 @@ _jc() {
|
||||
jc_help_options jc_help_options_describe \
|
||||
jc_special_options jc_special_options_describe
|
||||
|
||||
jc_commands=(acpi airport arp blkid bluetoothctl cbt certbot chage cksum crontab date df dig dmidecode dpkg du env file findmnt finger free git gpg hciconfig id ifconfig iostat ip iptables iw iwconfig jobs last lastb ls lsattr lsblk lsmod lsof lspci lsusb md5 md5sum mdadm mount mpstat netstat nmcli 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 sysctl systemctl systeminfo timedatectl top tracepath tracepath6 traceroute traceroute6 udevadm ufw uname update-alternatives upower uptime vdir veracrypt vmstat w wc who xrandr zipinfo zpool)
|
||||
jc_commands=(acpi airport amixer 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 ipconfig iptables iw iwconfig jobs last lastb ls lsattr lsb_release lsblk lsmod lsof lspci lsusb md5 md5sum mdadm mount mpstat needrestart net netstat nmcli nsd-control ntpq os-prober pacman 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 wg who xrandr yay zipinfo zpool)
|
||||
jc_commands_describe=(
|
||||
'acpi:run "acpi" command with magic syntax.'
|
||||
'airport:run "airport" command with magic syntax.'
|
||||
'amixer:run "amixer" 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.'
|
||||
@@ -21,13 +24,17 @@ _jc() {
|
||||
'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.'
|
||||
@@ -35,10 +42,12 @@ _jc() {
|
||||
'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.'
|
||||
'ipconfig:run "ipconfig" 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.'
|
||||
@@ -47,6 +56,7 @@ _jc() {
|
||||
'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.'
|
||||
@@ -57,10 +67,14 @@ _jc() {
|
||||
'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.'
|
||||
'net:run "net" 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.'
|
||||
'pacman:run "pacman" 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.'
|
||||
@@ -84,6 +98,7 @@ _jc() {
|
||||
'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.'
|
||||
@@ -93,6 +108,7 @@ _jc() {
|
||||
'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.'
|
||||
@@ -104,16 +120,21 @@ _jc() {
|
||||
'vmstat:run "vmstat" command with magic syntax.'
|
||||
'w:run "w" command with magic syntax.'
|
||||
'wc:run "wc" command with magic syntax.'
|
||||
'wg:run "wg" command with magic syntax.'
|
||||
'who:run "who" command with magic syntax.'
|
||||
'xrandr:run "xrandr" command with magic syntax.'
|
||||
'yay:run "yay" command with magic syntax.'
|
||||
'zipinfo:run "zipinfo" command with magic syntax.'
|
||||
'zpool:run "zpool" command with magic syntax.'
|
||||
)
|
||||
jc_parsers=(--acpi --airport --airport-s --arp --asciitable --asciitable-m --blkid --bluetoothctl --cbt --cef --cef-s --certbot --chage --cksum --clf --clf-s --crontab --crontab-u --csv --csv-s --date --datetime-iso --df --dig --dir --dmidecode --dpkg-l --du --email-address --env --file --find --findmnt --finger --free --fstab --git-log --git-log-s --git-ls-remote --gpg --group --gshadow --hash --hashsum --hciconfig --history --hosts --id --ifconfig --ini --ini-dup --iostat --iostat-s --ip-address --iptables --ip-route --iw-scan --iwconfig --jar-manifest --jobs --jwt --kv --last --ls --ls-s --lsattr --lsblk --lsmod --lsof --lspci --lsusb --m3u --mdadm --mount --mpstat --mpstat-s --netstat --nmcli --ntpq --openvpn --os-prober --passwd --pci-ids --pgpass --pidstat --pidstat-s --ping --ping-s --pip-list --pip-show --plist --postconf --proc --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-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 --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 --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=(--acpi --airport --airport-s --amixer --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 --ipconfig --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 --net-localgroup --net-user --nmcli --nsd-control --ntpq --openvpn --os-prober --os-release --pacman --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 --route-print --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 --traceroute-s --tune2fs --udevadm --ufw --ufw-appinfo --uname --update-alt-gs --update-alt-q --upower --uptime --url --ver --veracrypt --vmstat --vmstat-s --w --wc --wg-show --who --x509-cert --x509-crl --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'
|
||||
'--amixer:`amixer` 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'
|
||||
@@ -131,16 +152,20 @@ _jc() {
|
||||
'--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'
|
||||
@@ -157,7 +182,9 @@ _jc() {
|
||||
'--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'
|
||||
@@ -165,6 +192,7 @@ _jc() {
|
||||
'--iostat:`iostat` command parser'
|
||||
'--iostat-s:`iostat` command streaming parser'
|
||||
'--ip-address:IPv4 and IPv6 Address string parser'
|
||||
'--ipconfig:`ipconfig` Windows command parser'
|
||||
'--iptables:`iptables` command parser'
|
||||
'--ip-route:`ip route` command parser'
|
||||
'--iw-scan:`iw dev [device] scan` command parser'
|
||||
@@ -173,10 +201,12 @@ _jc() {
|
||||
'--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'
|
||||
@@ -187,12 +217,20 @@ _jc() {
|
||||
'--mount:`mount` command parser'
|
||||
'--mpstat:`mpstat` command parser'
|
||||
'--mpstat-s:`mpstat` command streaming parser'
|
||||
'--needrestart:`needrestart -b` command parser'
|
||||
'--netstat:`netstat` command parser'
|
||||
'--net-localgroup:`net localgroup` command parser'
|
||||
'--net-user:`net user` 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'
|
||||
'--pacman:`pacman` command 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'
|
||||
@@ -201,10 +239,13 @@ _jc() {
|
||||
'--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'
|
||||
@@ -257,6 +298,7 @@ _jc() {
|
||||
'--ps:`ps` command parser'
|
||||
'--resolve-conf:`/etc/resolve.conf` file parser'
|
||||
'--route:`route` command parser'
|
||||
'--route-print:`route print` command parser'
|
||||
'--rpm-qi:`rpm -qi` command parser'
|
||||
'--rsync:`rsync` command parser'
|
||||
'--rsync-s:`rsync` command streaming parser'
|
||||
@@ -269,6 +311,7 @@ _jc() {
|
||||
'--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'
|
||||
@@ -287,6 +330,8 @@ _jc() {
|
||||
'--top-s:`top -b` command streaming parser'
|
||||
'--tracepath:`tracepath` and `tracepath6` command parser'
|
||||
'--traceroute:`traceroute` and `traceroute6` command parser'
|
||||
'--traceroute-s:`traceroute` and `traceroute6` command streaming parser'
|
||||
'--tune2fs:`tune2fs -l` command parser'
|
||||
'--udevadm:`udevadm info` command parser'
|
||||
'--ufw:`ufw status` command parser'
|
||||
'--ufw-appinfo:`ufw app info [application]` command parser'
|
||||
@@ -302,8 +347,10 @@ _jc() {
|
||||
'--vmstat-s:`vmstat` command streaming parser'
|
||||
'--w:`w` command parser'
|
||||
'--wc:`wc` command parser'
|
||||
'--wg-show:`wg show` command parser'
|
||||
'--who:`who` command parser'
|
||||
'--x509-cert:X.509 PEM and DER certificate file parser'
|
||||
'--x509-crl:X.509 PEM and DER certificate revocation list file parser'
|
||||
'--x509-csr:X.509 PEM and DER certificate request file parser'
|
||||
'--xml:XML file parser'
|
||||
'--xrandr:`xrandr` command parser'
|
||||
@@ -312,7 +359,7 @@ _jc() {
|
||||
'--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 --unbuffer -u --yaml-out -y)
|
||||
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)'
|
||||
@@ -328,6 +375,8 @@ _jc() {
|
||||
'-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'
|
||||
|
||||
86
doc2md.py
Executable file
86
doc2md.py
Executable 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)
|
||||
102
docgen.sh
102
docgen.sh
@@ -1,107 +1,32 @@
|
||||
#!/bin/bash
|
||||
# Generate docs.md
|
||||
# requires pydoc-markdown 4.6.1
|
||||
|
||||
# Generate markdown document files (*.md)
|
||||
# Requires the yapf python library
|
||||
# use ./docgen all to generate all docs
|
||||
|
||||
readme_config=$(cat <<'EOF'
|
||||
{
|
||||
"processors": [
|
||||
{
|
||||
"type": "filter"
|
||||
},
|
||||
{
|
||||
"type": "pydocmd"
|
||||
}
|
||||
],
|
||||
"renderer": {
|
||||
"type": "markdown",
|
||||
"header_level_by_type": {
|
||||
"Module": 1,
|
||||
"Class": 3,
|
||||
"Method": 3,
|
||||
"Function": 3,
|
||||
"Variable": 3
|
||||
}
|
||||
}
|
||||
}
|
||||
EOF
|
||||
)
|
||||
|
||||
toc_config=$(cat <<'EOF'
|
||||
{
|
||||
"processors": [
|
||||
{
|
||||
"type": "filter"
|
||||
},
|
||||
{
|
||||
"type": "pydocmd"
|
||||
}
|
||||
],
|
||||
"renderer": {
|
||||
"type": "markdown",
|
||||
"render_toc": true,
|
||||
"header_level_by_type": {
|
||||
"Module": 1,
|
||||
"Class": 3,
|
||||
"Method": 3,
|
||||
"Function": 3,
|
||||
"Variable": 3
|
||||
}
|
||||
}
|
||||
}
|
||||
EOF
|
||||
)
|
||||
|
||||
parser_config=$(cat <<'EOF'
|
||||
{
|
||||
"processors": [
|
||||
{
|
||||
"type": "filter",
|
||||
"expression": "not name == \"info\" and not name.startswith(\"_\") and default()"
|
||||
},
|
||||
{
|
||||
"type": "pydocmd"
|
||||
}
|
||||
],
|
||||
"renderer": {
|
||||
"type": "markdown",
|
||||
"header_level_by_type": {
|
||||
"Module": 1,
|
||||
"Class": 3,
|
||||
"Method": 3,
|
||||
"Function": 3,
|
||||
"Variable": 3
|
||||
}
|
||||
}
|
||||
}
|
||||
EOF
|
||||
)
|
||||
|
||||
cd jc
|
||||
(
|
||||
echo Building docs for: package
|
||||
pydoc-markdown -m jc "${readme_config}" > ../docs/readme.md; echo "+++ package docs complete"
|
||||
../doc2md.py jc > ../docs/readme.md && echo "+++ package docs complete" || echo "*** PACKAGE DOCS FAILED ***"
|
||||
) &
|
||||
|
||||
(
|
||||
echo Building docs for: lib
|
||||
pydoc-markdown -m jc.lib "${toc_config}" > ../docs/lib.md; echo "+++ lib docs complete"
|
||||
../doc2md.py jc.lib > ../docs/lib.md && echo "+++ lib docs complete" || echo "*** LIB DOCS FAILED ***"
|
||||
) &
|
||||
|
||||
(
|
||||
echo Building docs for: utils
|
||||
pydoc-markdown -m jc.utils "${toc_config}" > ../docs/utils.md; echo "+++ utils docs complete"
|
||||
../doc2md.py jc.utils > ../docs/utils.md && echo "+++ utils docs complete" || echo "*** UTILS DOCS FAILED ***"
|
||||
) &
|
||||
|
||||
(
|
||||
echo Building docs for: streaming
|
||||
pydoc-markdown -m jc.streaming "${toc_config}" > ../docs/streaming.md; echo "+++ streaming docs complete"
|
||||
../doc2md.py jc.streaming > ../docs/streaming.md && echo "+++ streaming docs complete" || echo "*** STREAMING DOCS FAILED ***"
|
||||
) &
|
||||
|
||||
(
|
||||
echo Building docs for: universal parser
|
||||
pydoc-markdown -m jc.parsers.universal "${toc_config}" > ../docs/parsers/universal.md; echo "+++ universal parser docs complete"
|
||||
../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
|
||||
@@ -119,19 +44,8 @@ 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
|
||||
compatible=$(jq -r '.compatible | join(", ")' <<< "$parser")
|
||||
version=$(jq -r '.version' <<< "$parser")
|
||||
author=$(jq -r '.author' <<< "$parser")
|
||||
author_email=$(jq -r '.author_email' <<< "$parser")
|
||||
|
||||
echo "Building docs for: ${parser_name}"
|
||||
echo "[Home](https://kellyjonbrazil.github.io/jc/)" > ../docs/parsers/"${parser_name}".md
|
||||
pydoc-markdown -m jc.parsers."${parser_name}" "${parser_config}" >> ../docs/parsers/"${parser_name}".md
|
||||
echo "### Parser Information" >> ../docs/parsers/"${parser_name}".md
|
||||
echo "Compatibility: ${compatible}" >> ../docs/parsers/"${parser_name}".md
|
||||
echo >> ../docs/parsers/"${parser_name}".md
|
||||
echo "Version ${version} by ${author} (${author_email})" >> ../docs/parsers/"${parser_name}".md
|
||||
echo "+++ ${parser_name} docs complete"
|
||||
../doc2md.py jc.parsers."${parser_name}" > ../docs/parsers/"${parser_name}".md && echo "+++ ${parser_name} docs complete" || echo "*** ${parser_name} DOCS FAILED ***"
|
||||
fi
|
||||
} &
|
||||
done
|
||||
|
||||
251
docs/lib.md
251
docs/lib.md
@@ -1,34 +1,106 @@
|
||||
# Table of Contents
|
||||
|
||||
* [jc.lib](#jc.lib)
|
||||
* [parse](#jc.lib.parse)
|
||||
* [parser\_mod\_list](#jc.lib.parser_mod_list)
|
||||
* [plugin\_parser\_mod\_list](#jc.lib.plugin_parser_mod_list)
|
||||
* [standard\_parser\_mod\_list](#jc.lib.standard_parser_mod_list)
|
||||
* [streaming\_parser\_mod\_list](#jc.lib.streaming_parser_mod_list)
|
||||
* [parser\_info](#jc.lib.parser_info)
|
||||
* [all\_parser\_info](#jc.lib.all_parser_info)
|
||||
* [get\_help](#jc.lib.get_help)
|
||||
|
||||
[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, ModuleType],
|
||||
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[JSONDictType, List[JSONDictType], Iterator[JSONDictType]]
|
||||
) -> Union[Dict[str, Any], List[Dict[str, Any]], Iterator[Dict[str, Any]]]
|
||||
```
|
||||
|
||||
Parse the data (string or bytes) using the supplied parser (string or
|
||||
@@ -59,15 +131,25 @@ To get a list of available parser module names, use `parser_mod_list()`.
|
||||
Alternatively, a parser module object can be supplied:
|
||||
|
||||
>>> import jc
|
||||
>>> import jc.parsers.date as jc_date
|
||||
>>> 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 lower-level parser modules directly:
|
||||
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
|
||||
>>> jc.parsers.date.parse('Tue Jan 18 10:23:07 PST 2022')
|
||||
>>> 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
|
||||
@@ -90,17 +172,17 @@ Parameters:
|
||||
variants of the module name.
|
||||
|
||||
A Module object can also be passed
|
||||
directly or via _get_parser()
|
||||
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
|
||||
raw: (boolean) output preprocessed JSON if `True`
|
||||
|
||||
quiet: (boolean) suppress warning messages if True
|
||||
quiet: (boolean) suppress warning messages if `True`
|
||||
|
||||
ignore_exceptions: (boolean) ignore parsing exceptions if True
|
||||
ignore_exceptions: (boolean) ignore parsing exceptions if `True`
|
||||
(streaming parsers only)
|
||||
|
||||
Returns:
|
||||
@@ -108,61 +190,13 @@ Returns:
|
||||
Standard Parsers: Dictionary or List of Dictionaries
|
||||
Streaming Parsers: Generator Object containing Dictionaries
|
||||
|
||||
<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.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()`.
|
||||
|
||||
<a id="jc.lib.parser_info"></a>
|
||||
|
||||
### parser\_info
|
||||
### parser_info
|
||||
|
||||
```python
|
||||
def parser_info(parser_mod_name: Union[str, ModuleType],
|
||||
documentation: bool = False) -> ParserInfoType
|
||||
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.
|
||||
@@ -175,41 +209,66 @@ Parameters:
|
||||
variants of the module name as well
|
||||
as a parser module object.
|
||||
|
||||
documentation: (boolean) include parser docstring if True
|
||||
documentation: (boolean) include parser docstring if `True`
|
||||
|
||||
<a id="jc.lib.all_parser_info"></a>
|
||||
<a id="jc.lib.parser_mod_list"></a>
|
||||
|
||||
### all\_parser\_info
|
||||
### parser_mod_list
|
||||
|
||||
```python
|
||||
def all_parser_info(documentation: bool = False,
|
||||
show_hidden: bool = False,
|
||||
show_deprecated: bool = False) -> List[ParserInfoType]
|
||||
def parser_mod_list(show_hidden: bool = False,
|
||||
show_deprecated: bool = False) -> List[str]
|
||||
```
|
||||
|
||||
Returns a list of dictionaries that includes metadata for all parser
|
||||
modules. By default only non-hidden, non-deprecated parsers are
|
||||
returned.
|
||||
Returns a list of all available parser module names.
|
||||
|
||||
Parameters:
|
||||
<a id="jc.lib.plugin_parser_mod_list"></a>
|
||||
|
||||
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
|
||||
### plugin_parser_mod_list
|
||||
|
||||
```python
|
||||
def get_help(parser_mod_name: Union[str, ModuleType]) -> None
|
||||
def plugin_parser_mod_list(show_hidden: bool = False,
|
||||
show_deprecated: bool = False) -> List[str]
|
||||
```
|
||||
|
||||
Show help screen for the selected parser.
|
||||
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()`.
|
||||
|
||||
This function will accept **module_name**, **cli-name**, and
|
||||
**--argument-name** variants of the module name string as well as a
|
||||
parser module object.
|
||||
|
||||
|
||||
@@ -250,4 +250,6 @@ Returns:
|
||||
### Parser Information
|
||||
Compatibility: linux
|
||||
|
||||
Version 1.6 by Kelly Brazil (kellyjonbrazil@gmail.com)
|
||||
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)
|
||||
|
||||
@@ -103,4 +103,6 @@ Returns:
|
||||
### 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)
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
[Home](https://kellyjonbrazil.github.io/jc/)
|
||||
<a id="jc.parsers.airport_s"></a>
|
||||
|
||||
# jc.parsers.airport\_s
|
||||
# jc.parsers.airport_s
|
||||
|
||||
jc - JSON Convert `airport -s` command output parser
|
||||
|
||||
@@ -131,4 +131,6 @@ Returns:
|
||||
### 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)
|
||||
|
||||
117
docs/parsers/amixer.md
Normal file
117
docs/parsers/amixer.md
Normal file
@@ -0,0 +1,117 @@
|
||||
[Home](https://kellyjonbrazil.github.io/jc/)
|
||||
<a id="jc.parsers.amixer"></a>
|
||||
|
||||
# jc.parsers.amixer
|
||||
|
||||
jc - JSON Convert `amixer sget` command output parser
|
||||
|
||||
Usage (cli):
|
||||
|
||||
$ amixer sget <control_name> | jc --amixer
|
||||
$ amixer sget Master | jc --amixer
|
||||
$ amixer sget Capture | jc --amixer
|
||||
$ amixer sget Speakers | jc --amixer
|
||||
|
||||
Usage (module):
|
||||
|
||||
import jc
|
||||
result = jc.parse('amixer', <amixer_sget_command_output>)
|
||||
|
||||
Schema:
|
||||
|
||||
{
|
||||
"control_name": string,
|
||||
"capabilities": [
|
||||
string
|
||||
],
|
||||
"playback_channels": [
|
||||
string
|
||||
],
|
||||
"limits": {
|
||||
"playback_min": integer,
|
||||
"playback_max": integer
|
||||
},
|
||||
"mono": {
|
||||
"playback_value": integer,
|
||||
"percentage": integer,
|
||||
"db": float,
|
||||
"status": boolean
|
||||
}
|
||||
}
|
||||
|
||||
Examples:
|
||||
|
||||
$ amixer sget Master | jc --amixer -p
|
||||
{
|
||||
"control_name": "Capture",
|
||||
"capabilities": [
|
||||
"cvolume",
|
||||
"cswitch"
|
||||
],
|
||||
"playback_channels": [],
|
||||
"limits": {
|
||||
"playback_min": 0,
|
||||
"playback_max": 63
|
||||
},
|
||||
"front_left": {
|
||||
"playback_value": 63,
|
||||
"percentage": 100,
|
||||
"db": 30.0,
|
||||
"status": true
|
||||
},
|
||||
"front_right": {
|
||||
"playback_value": 63,
|
||||
"percentage": 100,
|
||||
"db": 30.0,
|
||||
"status": true
|
||||
}
|
||||
}
|
||||
|
||||
$ amixer sget Master | jc --amixer -p -r
|
||||
{
|
||||
"control_name": "Master",
|
||||
"capabilities": [
|
||||
"pvolume",
|
||||
"pvolume-joined",
|
||||
"pswitch",
|
||||
"pswitch-joined"
|
||||
],
|
||||
"playback_channels": [
|
||||
"Mono"
|
||||
],
|
||||
"limits": {
|
||||
"playback_min": "0",
|
||||
"playback_max": "87"
|
||||
},
|
||||
"mono": {
|
||||
"playback_value": "87",
|
||||
"percentage": "100%",
|
||||
"db": "0.00db",
|
||||
"status": "on"
|
||||
}
|
||||
}
|
||||
|
||||
<a id="jc.parsers.amixer.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/amixer.py`](https://github.com/kellyjonbrazil/jc/blob/master/jc/parsers/amixer.py)
|
||||
|
||||
Version 1.0 by Eden Refael (edenraf@hotmail.com)
|
||||
180
docs/parsers/apt_cache_show.md
Normal file
180
docs/parsers/apt_cache_show.md
Normal 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
201
docs/parsers/apt_get_sqq.md
Normal 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 upgrade | jc --apt-get-sqq
|
||||
|
||||
or
|
||||
|
||||
$ jc apt-get -sqq full-upgrade
|
||||
|
||||
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 upgrade | 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 upgrade | 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.1 by Kelly Brazil (kellyjonbrazil@gmail.com)
|
||||
@@ -140,4 +140,6 @@ Returns:
|
||||
### 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)
|
||||
|
||||
@@ -144,4 +144,6 @@ Returns:
|
||||
### 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)
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
[Home](https://kellyjonbrazil.github.io/jc/)
|
||||
<a id="jc.parsers.asciitable_m"></a>
|
||||
|
||||
# jc.parsers.asciitable\_m
|
||||
# jc.parsers.asciitable_m
|
||||
|
||||
jc - JSON Convert `asciitable-m` parser
|
||||
|
||||
@@ -129,4 +129,6 @@ Returns:
|
||||
### 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)
|
||||
|
||||
@@ -143,4 +143,6 @@ Returns:
|
||||
### 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)
|
||||
|
||||
@@ -33,6 +33,8 @@ a controller and a device but there might be fields corresponding to one entity.
|
||||
Controller:
|
||||
[
|
||||
{
|
||||
"manufacturer": string,
|
||||
"version": string,
|
||||
"name": string,
|
||||
"is_default": boolean,
|
||||
"is_public": boolean,
|
||||
@@ -67,10 +69,12 @@ a controller and a device but there might be fields corresponding to one entity.
|
||||
"blocked": string,
|
||||
"connected": string,
|
||||
"legacy_pairing": string,
|
||||
"cable_pairing": string,
|
||||
"rssi": int,
|
||||
"txpower": int,
|
||||
"uuids": array,
|
||||
"modalias": string
|
||||
"modalias": string,
|
||||
"battery_percentage": int
|
||||
}
|
||||
]
|
||||
|
||||
@@ -101,7 +105,8 @@ Examples:
|
||||
"Headset HS (00001831-0000-1000-8000-00805f9b34fb)"
|
||||
],
|
||||
"rssi": -52,
|
||||
"txpower": 4
|
||||
"txpower": 4,
|
||||
"battery_percentage": 70
|
||||
}
|
||||
]
|
||||
|
||||
@@ -112,7 +117,7 @@ Examples:
|
||||
```python
|
||||
def parse(data: str,
|
||||
raw: bool = False,
|
||||
quiet: bool = False) -> List[JSONDictType]
|
||||
quiet: bool = False) -> List[Dict[str, Any]]
|
||||
```
|
||||
|
||||
Main text parsing function
|
||||
@@ -130,4 +135,6 @@ Returns:
|
||||
### Parser Information
|
||||
Compatibility: linux
|
||||
|
||||
Version 1.1 by Jake Ob (iakopap at gmail.com)
|
||||
Source: [`jc/parsers/bluetoothctl.py`](https://github.com/kellyjonbrazil/jc/blob/master/jc/parsers/bluetoothctl.py)
|
||||
|
||||
Version 1.5 by Jake Ob (iakopap at gmail.com)
|
||||
|
||||
@@ -104,7 +104,7 @@ Examples:
|
||||
```python
|
||||
def parse(data: str,
|
||||
raw: bool = False,
|
||||
quiet: bool = False) -> List[JSONDictType]
|
||||
quiet: bool = False) -> List[Dict[str, Any]]
|
||||
```
|
||||
|
||||
Main text parsing function
|
||||
@@ -122,4 +122,6 @@ Returns:
|
||||
### 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)
|
||||
|
||||
@@ -143,4 +143,6 @@ Returns:
|
||||
### 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)
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
[Home](https://kellyjonbrazil.github.io/jc/)
|
||||
<a id="jc.parsers.cef_s"></a>
|
||||
|
||||
# jc.parsers.cef\_s
|
||||
# jc.parsers.cef_s
|
||||
|
||||
jc - JSON Convert CEF string output streaming parser
|
||||
|
||||
@@ -95,7 +95,6 @@ Examples:
|
||||
### parse
|
||||
|
||||
```python
|
||||
@add_jc_meta
|
||||
def parse(data: Iterable[str],
|
||||
raw: bool = False,
|
||||
quiet: bool = False,
|
||||
@@ -121,4 +120,6 @@ Returns:
|
||||
### 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)
|
||||
|
||||
@@ -140,7 +140,7 @@ Examples:
|
||||
### parse
|
||||
|
||||
```python
|
||||
def parse(data: str, raw: bool = False, quiet: bool = False) -> JSONDictType
|
||||
def parse(data: str, raw: bool = False, quiet: bool = False) -> Dict[str, Any]
|
||||
```
|
||||
|
||||
Main text parsing function
|
||||
@@ -158,4 +158,6 @@ Returns:
|
||||
### 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)
|
||||
|
||||
@@ -79,4 +79,6 @@ Returns:
|
||||
### 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)
|
||||
|
||||
@@ -77,4 +77,6 @@ Returns:
|
||||
### 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)
|
||||
|
||||
@@ -178,7 +178,7 @@ Examples:
|
||||
```python
|
||||
def parse(data: str,
|
||||
raw: bool = False,
|
||||
quiet: bool = False) -> List[JSONDictType]
|
||||
quiet: bool = False) -> List[Dict[str, Any]]
|
||||
```
|
||||
|
||||
Main text parsing function
|
||||
@@ -196,4 +196,6 @@ Returns:
|
||||
### 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)
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
[Home](https://kellyjonbrazil.github.io/jc/)
|
||||
<a id="jc.parsers.clf_s"></a>
|
||||
|
||||
# jc.parsers.clf\_s
|
||||
# jc.parsers.clf_s
|
||||
|
||||
jc - JSON Convert Common Log Format file streaming parser
|
||||
|
||||
@@ -88,11 +88,12 @@ Examples:
|
||||
### parse
|
||||
|
||||
```python
|
||||
@add_jc_meta
|
||||
def parse(data: Iterable[str],
|
||||
raw: bool = False,
|
||||
quiet: bool = False,
|
||||
ignore_exceptions: bool = False) -> StreamingOutputType
|
||||
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.
|
||||
@@ -114,4 +115,6 @@ Returns:
|
||||
### 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)
|
||||
|
||||
@@ -32,7 +32,6 @@ Schema:
|
||||
],
|
||||
"schedule": [
|
||||
{
|
||||
"occurrence" string,
|
||||
"minute": [
|
||||
string
|
||||
],
|
||||
@@ -196,4 +195,6 @@ Returns:
|
||||
### Parser Information
|
||||
Compatibility: linux, darwin, aix, freebsd
|
||||
|
||||
Version 1.8 by Kelly Brazil (kellyjonbrazil@gmail.com)
|
||||
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)
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
[Home](https://kellyjonbrazil.github.io/jc/)
|
||||
<a id="jc.parsers.crontab_u"></a>
|
||||
|
||||
# jc.parsers.crontab\_u
|
||||
# jc.parsers.crontab_u
|
||||
|
||||
jc - JSON Convert `crontab -l` command output and crontab
|
||||
file parser
|
||||
@@ -29,7 +29,6 @@ Schema:
|
||||
],
|
||||
"schedule": [
|
||||
{
|
||||
"occurrence" string,
|
||||
"minute": [
|
||||
string
|
||||
],
|
||||
@@ -193,4 +192,6 @@ Returns:
|
||||
### Parser Information
|
||||
Compatibility: linux, darwin, aix, freebsd
|
||||
|
||||
Version 1.9 by Kelly Brazil (kellyjonbrazil@gmail.com)
|
||||
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)
|
||||
|
||||
@@ -84,7 +84,7 @@ Examples:
|
||||
```python
|
||||
def parse(data: Union[str, bytes],
|
||||
raw: bool = False,
|
||||
quiet: bool = False) -> List[JSONDictType]
|
||||
quiet: bool = False) -> List[Dict[str, Any]]
|
||||
```
|
||||
|
||||
Main text parsing function
|
||||
@@ -102,4 +102,6 @@ Returns:
|
||||
### 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)
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
[Home](https://kellyjonbrazil.github.io/jc/)
|
||||
<a id="jc.parsers.csv_s"></a>
|
||||
|
||||
# jc.parsers.csv\_s
|
||||
# jc.parsers.csv_s
|
||||
|
||||
jc - JSON Convert `csv` file streaming parser
|
||||
|
||||
@@ -64,7 +64,6 @@ Examples:
|
||||
### parse
|
||||
|
||||
```python
|
||||
@add_jc_meta
|
||||
def parse(data, raw=False, quiet=False, ignore_exceptions=False)
|
||||
```
|
||||
|
||||
@@ -86,4 +85,6 @@ Returns:
|
||||
### 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
309
docs/parsers/curl_head.md
Normal 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)
|
||||
@@ -100,4 +100,8 @@ Returns:
|
||||
### Parser Information
|
||||
Compatibility: linux, darwin, freebsd
|
||||
|
||||
Version 2.5 by Kelly Brazil (kellyjonbrazil@gmail.com)
|
||||
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)
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
[Home](https://kellyjonbrazil.github.io/jc/)
|
||||
<a id="jc.parsers.datetime_iso"></a>
|
||||
|
||||
# jc.parsers.datetime\_iso
|
||||
# jc.parsers.datetime_iso
|
||||
|
||||
jc - JSON Convert ISO 8601 Datetime string parser
|
||||
|
||||
@@ -88,4 +88,8 @@ Returns:
|
||||
### Parser Information
|
||||
Compatibility: linux, aix, freebsd, darwin, win32, cygwin
|
||||
|
||||
Version 1.0 by Kelly Brazil (kellyjonbrazil@gmail.com)
|
||||
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)
|
||||
|
||||
107
docs/parsers/debconf_show.md
Normal file
107
docs/parsers/debconf_show.md
Normal 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)
|
||||
@@ -5,6 +5,8 @@
|
||||
|
||||
jc - JSON Convert `df` command output parser
|
||||
|
||||
Values are normalized to bytes when using `df -h`.
|
||||
|
||||
Usage (cli):
|
||||
|
||||
$ df | jc --df
|
||||
@@ -23,7 +25,7 @@ Schema:
|
||||
[
|
||||
{
|
||||
"filesystem": string,
|
||||
"size": string,
|
||||
"size": integer,
|
||||
"1k_blocks": integer,
|
||||
"512_blocks": integer,
|
||||
"used": integer,
|
||||
@@ -120,4 +122,6 @@ Returns:
|
||||
### Parser Information
|
||||
Compatibility: linux, darwin, freebsd
|
||||
|
||||
Version 1.11 by Kelly Brazil (kellyjonbrazil@gmail.com)
|
||||
Source: [`jc/parsers/df.py`](https://github.com/kellyjonbrazil/jc/blob/master/jc/parsers/df.py)
|
||||
|
||||
Version 2.1 by Kelly Brazil (kellyjonbrazil@gmail.com)
|
||||
|
||||
@@ -346,4 +346,6 @@ Returns:
|
||||
### 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)
|
||||
|
||||
@@ -143,4 +143,6 @@ Returns:
|
||||
### 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)
|
||||
|
||||
@@ -148,4 +148,6 @@ Returns:
|
||||
### 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)
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
[Home](https://kellyjonbrazil.github.io/jc/)
|
||||
<a id="jc.parsers.dpkg_l"></a>
|
||||
|
||||
# jc.parsers.dpkg\_l
|
||||
# jc.parsers.dpkg_l
|
||||
|
||||
jc - JSON Convert `dpkg -l` command output parser
|
||||
|
||||
@@ -154,4 +154,6 @@ Returns:
|
||||
### 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)
|
||||
|
||||
@@ -114,4 +114,6 @@ Returns:
|
||||
### 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
104
docs/parsers/efibootmgr.md
Normal 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)
|
||||
@@ -1,7 +1,7 @@
|
||||
[Home](https://kellyjonbrazil.github.io/jc/)
|
||||
<a id="jc.parsers.email_address"></a>
|
||||
|
||||
# jc.parsers.email\_address
|
||||
# jc.parsers.email_address
|
||||
|
||||
jc - JSON Convert Email Address string parser
|
||||
|
||||
@@ -64,4 +64,8 @@ Returns:
|
||||
### Parser Information
|
||||
Compatibility: linux, darwin, cygwin, win32, aix, freebsd
|
||||
|
||||
Version 1.0 by Kelly Brazil (kellyjonbrazil@gmail.com)
|
||||
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)
|
||||
|
||||
@@ -90,10 +90,12 @@ Parameters:
|
||||
|
||||
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
|
||||
|
||||
Version 1.4 by Kelly Brazil (kellyjonbrazil@gmail.com)
|
||||
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
197
docs/parsers/ethtool.md
Normal 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.1 by Kelly Brazil (kellyjonbrazil@gmail.com)
|
||||
@@ -85,4 +85,6 @@ Returns:
|
||||
### 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)
|
||||
|
||||
@@ -79,4 +79,6 @@ Returns:
|
||||
### 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)
|
||||
|
||||
@@ -96,7 +96,7 @@ Examples:
|
||||
```python
|
||||
def parse(data: str,
|
||||
raw: bool = False,
|
||||
quiet: bool = False) -> List[JSONDictType]
|
||||
quiet: bool = False) -> List[Dict[str, Any]]
|
||||
```
|
||||
|
||||
Main text parsing function
|
||||
@@ -114,4 +114,6 @@ Returns:
|
||||
### 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)
|
||||
|
||||
@@ -113,4 +113,6 @@ Returns:
|
||||
### 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)
|
||||
|
||||
@@ -5,6 +5,8 @@
|
||||
|
||||
jc - JSON Convert `free` command output parser
|
||||
|
||||
Values are normalized to bytes when using `free -h`.
|
||||
|
||||
Usage (cli):
|
||||
|
||||
$ free | jc --free
|
||||
@@ -22,13 +24,13 @@ Schema:
|
||||
|
||||
[
|
||||
{
|
||||
"type": string,
|
||||
"total": integer,
|
||||
"used": integer,
|
||||
"free": integer,
|
||||
"shared": integer,
|
||||
"buff_cache": integer,
|
||||
"available": integer
|
||||
"type": string,
|
||||
"total": integer,
|
||||
"used": integer,
|
||||
"free": integer,
|
||||
"shared": integer,
|
||||
"buff_cache": integer,
|
||||
"available": integer
|
||||
}
|
||||
]
|
||||
|
||||
@@ -95,4 +97,6 @@ Returns:
|
||||
### Parser Information
|
||||
Compatibility: linux
|
||||
|
||||
Version 1.7 by Kelly Brazil (kellyjonbrazil@gmail.com)
|
||||
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)
|
||||
|
||||
@@ -108,4 +108,6 @@ Returns:
|
||||
### 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)
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
[Home](https://kellyjonbrazil.github.io/jc/)
|
||||
<a id="jc.parsers.git_log"></a>
|
||||
|
||||
# jc.parsers.git\_log
|
||||
# jc.parsers.git_log
|
||||
|
||||
jc - JSON Convert `git log` command output parser
|
||||
|
||||
@@ -55,6 +55,12 @@ Schema:
|
||||
"deletions": integer,
|
||||
"files": [
|
||||
string
|
||||
],
|
||||
"file_stats": [
|
||||
{
|
||||
"name": string,
|
||||
"lines_changed": integer
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -79,6 +85,16 @@ Examples:
|
||||
"files": [
|
||||
"docs/parsers/git_log.md",
|
||||
"jc/parsers/git_log.py"
|
||||
],
|
||||
"file_stats": [
|
||||
{
|
||||
"name": "docs/parsers/git_log.md",
|
||||
"lines_changed": 3
|
||||
},
|
||||
{
|
||||
"name": "jc/parsers/git_log.py",
|
||||
"lines_changed": 7
|
||||
}
|
||||
]
|
||||
},
|
||||
"message": "add timestamp docs and examples",
|
||||
@@ -100,6 +116,28 @@ Examples:
|
||||
"jc/parsers/git_log.py",
|
||||
"jc/utils.py",
|
||||
"man/jc.1"
|
||||
],
|
||||
"file_stats": [
|
||||
{
|
||||
"name": "docs/parsers/git_log.md",
|
||||
"lines_changed": 3
|
||||
},
|
||||
{
|
||||
"name": "docs/utils.md",
|
||||
"lines_changed": 7
|
||||
},
|
||||
{
|
||||
"name": "jc/parsers/git_log.py",
|
||||
"lines_changed": 1
|
||||
},
|
||||
{
|
||||
"name": "jc/utils.py",
|
||||
"lines_changed": 12
|
||||
},
|
||||
{
|
||||
"name": "man/jc.1",
|
||||
"lines_changed": 14
|
||||
}
|
||||
]
|
||||
},
|
||||
"message": "add calculated timestamp",
|
||||
@@ -123,6 +161,16 @@ Examples:
|
||||
"files": [
|
||||
"docs/parsers/git_log.md",
|
||||
"jc/parsers/git_log.py"
|
||||
],
|
||||
"file_stats": [
|
||||
{
|
||||
"name": "docs/parsers/git_log.md",
|
||||
"lines_changed": "3"
|
||||
},
|
||||
{
|
||||
"name": "jc/parsers/git_log.py",
|
||||
"lines_changed": "7"
|
||||
}
|
||||
]
|
||||
},
|
||||
"message": "add timestamp docs and examples"
|
||||
@@ -142,6 +190,28 @@ Examples:
|
||||
"jc/parsers/git_log.py",
|
||||
"jc/utils.py",
|
||||
"man/jc.1"
|
||||
],
|
||||
"file_stats": [
|
||||
{
|
||||
"name": "docs/parsers/git_log.md",
|
||||
"lines_changed": "3"
|
||||
},
|
||||
{
|
||||
"name": "docs/utils.md",
|
||||
"lines_changed": "7"
|
||||
},
|
||||
{
|
||||
"name": "jc/parsers/git_log.py",
|
||||
"lines_changed": "1"
|
||||
},
|
||||
{
|
||||
"name": "jc/utils.py",
|
||||
"lines_changed": "12"
|
||||
},
|
||||
{
|
||||
"name": "man/jc.1",
|
||||
"lines_changed": "14"
|
||||
}
|
||||
]
|
||||
},
|
||||
"message": "add calculated timestamp"
|
||||
@@ -172,4 +242,6 @@ Returns:
|
||||
### Parser Information
|
||||
Compatibility: linux, darwin, cygwin, win32, aix, freebsd
|
||||
|
||||
Version 1.4 by Kelly Brazil (kellyjonbrazil@gmail.com)
|
||||
Source: [`jc/parsers/git_log.py`](https://github.com/kellyjonbrazil/jc/blob/master/jc/parsers/git_log.py)
|
||||
|
||||
Version 1.5 by Kelly Brazil (kellyjonbrazil@gmail.com)
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
[Home](https://kellyjonbrazil.github.io/jc/)
|
||||
<a id="jc.parsers.git_log_s"></a>
|
||||
|
||||
# jc.parsers.git\_log\_s
|
||||
# jc.parsers.git_log_s
|
||||
|
||||
jc - JSON Convert `git log` command output streaming parser
|
||||
|
||||
@@ -56,6 +56,12 @@ Schema:
|
||||
"deletions": integer,
|
||||
"files": [
|
||||
string
|
||||
],
|
||||
"file_stats": [
|
||||
{
|
||||
"name": string,
|
||||
"lines_changed": integer
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -82,7 +88,6 @@ Examples:
|
||||
### parse
|
||||
|
||||
```python
|
||||
@add_jc_meta
|
||||
def parse(data: Iterable[str],
|
||||
raw: bool = False,
|
||||
quiet: bool = False,
|
||||
@@ -108,4 +113,6 @@ Returns:
|
||||
### Parser Information
|
||||
Compatibility: linux, darwin, cygwin, win32, aix, freebsd
|
||||
|
||||
Version 1.4 by Kelly Brazil (kellyjonbrazil@gmail.com)
|
||||
Source: [`jc/parsers/git_log_s.py`](https://github.com/kellyjonbrazil/jc/blob/master/jc/parsers/git_log_s.py)
|
||||
|
||||
Version 1.5 by Kelly Brazil (kellyjonbrazil@gmail.com)
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
[Home](https://kellyjonbrazil.github.io/jc/)
|
||||
<a id="jc.parsers.git_ls_remote"></a>
|
||||
|
||||
# jc.parsers.git\_ls\_remote
|
||||
# jc.parsers.git_ls_remote
|
||||
|
||||
jc - JSON Convert `git ls-remote` command output parser
|
||||
|
||||
@@ -71,7 +71,7 @@ Examples:
|
||||
```python
|
||||
def parse(data: str,
|
||||
raw: bool = False,
|
||||
quiet: bool = False) -> Union[JSONDictType, List[JSONDictType]]
|
||||
quiet: bool = False) -> Union[Dict[str, Any], List[Dict[str, Any]]]
|
||||
```
|
||||
|
||||
Main text parsing function
|
||||
@@ -89,4 +89,6 @@ Returns:
|
||||
### 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)
|
||||
|
||||
@@ -142,4 +142,6 @@ Returns:
|
||||
### 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)
|
||||
|
||||
@@ -132,4 +132,6 @@ Returns:
|
||||
### 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)
|
||||
|
||||
@@ -100,4 +100,6 @@ Returns:
|
||||
### 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)
|
||||
|
||||
@@ -60,4 +60,6 @@ Returns:
|
||||
### 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)
|
||||
|
||||
@@ -91,4 +91,6 @@ Returns:
|
||||
### 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)
|
||||
|
||||
@@ -340,4 +340,6 @@ Returns:
|
||||
### 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)
|
||||
|
||||
@@ -87,4 +87,6 @@ Returns:
|
||||
### 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
115
docs/parsers/host.md
Normal 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)
|
||||
@@ -97,4 +97,6 @@ Returns:
|
||||
### 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)
|
||||
|
||||
336
docs/parsers/http_headers.md
Normal file
336
docs/parsers/http_headers.md
Normal 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)
|
||||
@@ -128,4 +128,8 @@ Returns:
|
||||
### Parser Information
|
||||
Compatibility: linux, darwin, aix, freebsd
|
||||
|
||||
Version 1.6 by Kelly Brazil (kellyjonbrazil@gmail.com)
|
||||
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)
|
||||
|
||||
@@ -222,7 +222,7 @@ Examples:
|
||||
```python
|
||||
def parse(data: str,
|
||||
raw: bool = False,
|
||||
quiet: bool = False) -> List[JSONDictType]
|
||||
quiet: bool = False) -> List[Dict[str, Any]]
|
||||
```
|
||||
|
||||
Main text parsing function
|
||||
@@ -240,4 +240,6 @@ Returns:
|
||||
### Parser Information
|
||||
Compatibility: linux, aix, freebsd, darwin
|
||||
|
||||
Version 2.3 by Kelly Brazil (kellyjonbrazil@gmail.com)
|
||||
Source: [`jc/parsers/ifconfig.py`](https://github.com/kellyjonbrazil/jc/blob/master/jc/parsers/ifconfig.py)
|
||||
|
||||
Version 2.4 by Kelly Brazil (kellyjonbrazil@gmail.com)
|
||||
|
||||
@@ -96,4 +96,6 @@ Returns:
|
||||
### Parser Information
|
||||
Compatibility: linux, darwin, cygwin, win32, aix, freebsd
|
||||
|
||||
Version 2.0 by Kelly Brazil (kellyjonbrazil@gmail.com)
|
||||
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)
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
[Home](https://kellyjonbrazil.github.io/jc/)
|
||||
<a id="jc.parsers.ini_dup"></a>
|
||||
|
||||
# jc.parsers.ini\_dup
|
||||
# jc.parsers.ini_dup
|
||||
|
||||
jc - JSON Convert INI with duplicate key file parser
|
||||
|
||||
@@ -22,12 +22,12 @@ contained in lists/arrays.
|
||||
|
||||
Usage (cli):
|
||||
|
||||
$ cat foo.ini | jc --ini
|
||||
$ cat foo.ini | jc --ini-dup
|
||||
|
||||
Usage (module):
|
||||
|
||||
import jc
|
||||
result = jc.parse('ini', ini_file_output)
|
||||
result = jc.parse('ini_dup', ini_file_output)
|
||||
|
||||
Schema:
|
||||
|
||||
@@ -67,7 +67,7 @@ Examples:
|
||||
fruit = peach
|
||||
color = green
|
||||
|
||||
$ cat example.ini | jc --ini -p
|
||||
$ cat example.ini | jc --ini-dup -p
|
||||
{
|
||||
"foo": [
|
||||
"fiz"
|
||||
@@ -118,4 +118,6 @@ Returns:
|
||||
### Parser Information
|
||||
Compatibility: linux, darwin, cygwin, win32, aix, freebsd
|
||||
|
||||
Version 1.0 by Kelly Brazil (kellyjonbrazil@gmail.com)
|
||||
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)
|
||||
|
||||
@@ -182,4 +182,6 @@ Returns:
|
||||
### 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)
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
[Home](https://kellyjonbrazil.github.io/jc/)
|
||||
<a id="jc.parsers.iostat_s"></a>
|
||||
|
||||
# jc.parsers.iostat\_s
|
||||
# jc.parsers.iostat_s
|
||||
|
||||
jc - JSON Convert `iostat` command output streaming parser
|
||||
|
||||
@@ -108,7 +108,6 @@ Examples:
|
||||
### parse
|
||||
|
||||
```python
|
||||
@add_jc_meta
|
||||
def parse(data, raw=False, quiet=False, ignore_exceptions=False)
|
||||
```
|
||||
|
||||
@@ -130,4 +129,6 @@ Returns:
|
||||
### 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)
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
[Home](https://kellyjonbrazil.github.io/jc/)
|
||||
<a id="jc.parsers.ip_address"></a>
|
||||
|
||||
# jc.parsers.ip\_address
|
||||
# jc.parsers.ip_address
|
||||
|
||||
jc - JSON Convert IP Address string parser
|
||||
|
||||
@@ -552,4 +552,8 @@ Returns:
|
||||
### Parser Information
|
||||
Compatibility: linux, darwin, cygwin, win32, aix, freebsd
|
||||
|
||||
Version 1.3 by Kelly Brazil (kellyjonbrazil@gmail.com)
|
||||
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.5 by Kelly Brazil (kellyjonbrazil@gmail.com)
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
[Home](https://kellyjonbrazil.github.io/jc/)
|
||||
<a id="jc.parsers.ip_route"></a>
|
||||
|
||||
# jc.parsers.ip\_route
|
||||
# jc.parsers.ip_route
|
||||
|
||||
jc - JSON Convert `ip route` command output parser
|
||||
|
||||
@@ -71,4 +71,6 @@ Returns:
|
||||
### 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)
|
||||
|
||||
461
docs/parsers/ipconfig.md
Normal file
461
docs/parsers/ipconfig.md
Normal file
@@ -0,0 +1,461 @@
|
||||
[Home](https://kellyjonbrazil.github.io/jc/)
|
||||
<a id="jc.parsers.ipconfig"></a>
|
||||
|
||||
# jc.parsers.ipconfig
|
||||
|
||||
jc - JSON Convert `ipconfig` Windows command output parser
|
||||
|
||||
Usage (cli):
|
||||
|
||||
$ ipconfig /all | jc --ipconfig
|
||||
$ ipconfig | jc --ipconfig
|
||||
$ jc ipconfig /all
|
||||
|
||||
Usage (module):
|
||||
|
||||
import jc
|
||||
result = jc.parse('ipconfig', ipconfig_command_output)
|
||||
|
||||
Schema:
|
||||
|
||||
{
|
||||
"host_name": string,
|
||||
"primary_dns_suffix": string,
|
||||
"node_type": string,
|
||||
"ip_routing_enabled": boolean,
|
||||
"wins_proxy_enabled": boolean,
|
||||
"dns_suffix_search_list": [
|
||||
string
|
||||
],
|
||||
"adapters": [
|
||||
{
|
||||
"name_long": string,
|
||||
"name": string,
|
||||
"type": string,
|
||||
"connection_specific_dns_suffix": string,
|
||||
"connection_specific_dns_suffix_search_list": [
|
||||
string
|
||||
]
|
||||
"description": string,
|
||||
"physical_address": string,
|
||||
"dhcp_enabled": boolean,
|
||||
"autoconfiguration_enabled": boolean,
|
||||
"ipv6_addresses": [
|
||||
{
|
||||
"address": string,
|
||||
"status": string,
|
||||
},
|
||||
],
|
||||
"temporary_ipv6_addresses": [
|
||||
{
|
||||
"address": string,
|
||||
"status": string,
|
||||
},
|
||||
],
|
||||
"link_local_ipv6_addresses": [
|
||||
{
|
||||
"address": string,
|
||||
"status": string,
|
||||
"prefix_length": integer,
|
||||
}
|
||||
],
|
||||
"ipv4_addresses": [
|
||||
{
|
||||
"address": string, # [2]
|
||||
"subnet_mask": string,
|
||||
"status": string,
|
||||
"autoconfigured": boolean # [1]
|
||||
}
|
||||
],
|
||||
"default_gateways": [
|
||||
string
|
||||
],
|
||||
"dhcp_server": null,
|
||||
"dhcpv6_iaid": string,
|
||||
"dhcpv6_client_duid": string,
|
||||
"dns_servers": [
|
||||
string
|
||||
],
|
||||
"primary_wins_server": string,
|
||||
"lease_expires": string,
|
||||
"lease_expires_epoch": integer, # [0]
|
||||
"lease_expires_iso": string,
|
||||
"lease_obtained": string,
|
||||
"lease_obtained_epoch": integer, # [0]
|
||||
"lease_obtained_iso": string,
|
||||
"netbios_over_tcpip": boolean,
|
||||
"media_state": string,
|
||||
"extras": [
|
||||
<string>: string
|
||||
]
|
||||
}
|
||||
],
|
||||
"extras": []
|
||||
}
|
||||
|
||||
Notes:
|
||||
[0] - The epoch calculated timestamp field is naive. (i.e. based on
|
||||
the local time of the system the parser is run on)
|
||||
[1] - 'autoconfigured' under 'ipv4_address' is only providing
|
||||
indication if the ipv4 address was labeled as "Autoconfiguration
|
||||
IPv4 Address" vs "IPv4 Address". It does not infer any
|
||||
information from other fields
|
||||
[2] - Windows XP uses 'IP Address' instead of 'IPv4 Address'. Both
|
||||
values are parsed to the 'ipv4_address' object for consistency
|
||||
|
||||
Examples:
|
||||
|
||||
$ ipconfig /all | jc --ipconfig -p
|
||||
{
|
||||
"host_name": "DESKTOP-WIN11-HOME",
|
||||
"primary_dns_suffix": null,
|
||||
"node_type": "Hybrid",
|
||||
"ip_routing_enabled": false,
|
||||
"wins_proxy_enabled": false,
|
||||
"dns_suffix_search_list": [
|
||||
"localdomain"
|
||||
],
|
||||
"adapters": [
|
||||
{
|
||||
"name_long": "Ethernet adapter Ethernet",
|
||||
"name": "Ethernet",
|
||||
"type": "Ethernet",
|
||||
"connection_specific_dns_suffix": null,
|
||||
"connection_specific_dns_suffix_search_list": [],
|
||||
"description": "Intel(R) I211 Gigabit Network Connection",
|
||||
"physical_address": "24-4B-FE-AB-43-C3",
|
||||
"dhcp_enabled": true,
|
||||
"autoconfiguration_enabled": true,
|
||||
"ipv6_addresses": [],
|
||||
"temporary_ipv6_addresses": [],
|
||||
"link_local_ipv6_addresses": [],
|
||||
"ipv4_addresses": [],
|
||||
"default_gateways": [],
|
||||
"dhcp_server": null,
|
||||
"dhcpv6_iaid": null,
|
||||
"dhcpv6_client_duid": null,
|
||||
"dns_servers": [],
|
||||
"primary_wins_server": null,
|
||||
"lease_expires": null,
|
||||
"lease_obtained": null,
|
||||
"netbios_over_tcpip": null,
|
||||
"media_state": "Media disconnected",
|
||||
"extras": []
|
||||
},
|
||||
{
|
||||
"name_long": "Ethernet adapter Ethernet 2",
|
||||
"name": "Ethernet 2",
|
||||
"type": "Ethernet",
|
||||
"connection_specific_dns_suffix": null,
|
||||
"connection_specific_dns_suffix_search_list": [],
|
||||
"description": "Realtek PCIe 2.5GbE Family Controller",
|
||||
"physical_address": "24-4B-FE-57-3D-F2",
|
||||
"dhcp_enabled": true,
|
||||
"autoconfiguration_enabled": true,
|
||||
"ipv6_addresses": [],
|
||||
"temporary_ipv6_addresses": [],
|
||||
"link_local_ipv6_addresses": [],
|
||||
"ipv4_addresses": [],
|
||||
"default_gateways": [],
|
||||
"dhcp_server": null,
|
||||
"dhcpv6_iaid": null,
|
||||
"dhcpv6_client_duid": null,
|
||||
"dns_servers": [],
|
||||
"primary_wins_server": null,
|
||||
"lease_expires": null,
|
||||
"lease_obtained": null,
|
||||
"netbios_over_tcpip": null,
|
||||
"media_state": "Media disconnected",
|
||||
"extras": []
|
||||
},
|
||||
{
|
||||
"name_long": "Unknown adapter OpenVPN Data Channel Offload for NordVPN",
|
||||
"name": "OpenVPN Data Channel Offload for NordVPN",
|
||||
"type": "Unknown",
|
||||
"connection_specific_dns_suffix": null,
|
||||
"connection_specific_dns_suffix_search_list": [],
|
||||
"description": "OpenVPN Data Channel Offload",
|
||||
"physical_address": null,
|
||||
"dhcp_enabled": true,
|
||||
"autoconfiguration_enabled": true,
|
||||
"ipv6_addresses": [],
|
||||
"temporary_ipv6_addresses": [],
|
||||
"link_local_ipv6_addresses": [],
|
||||
"ipv4_addresses": [],
|
||||
"default_gateways": [],
|
||||
"dhcp_server": null,
|
||||
"dhcpv6_iaid": null,
|
||||
"dhcpv6_client_duid": null,
|
||||
"dns_servers": [],
|
||||
"primary_wins_server": null,
|
||||
"lease_expires": null,
|
||||
"lease_obtained": null,
|
||||
"netbios_over_tcpip": null,
|
||||
"media_state": "Media disconnected",
|
||||
"extras": []
|
||||
},
|
||||
{
|
||||
"name_long": "Unknown adapter Local Area Connection",
|
||||
"name": "Local Area Connection",
|
||||
"type": "Unknown",
|
||||
"connection_specific_dns_suffix": null,
|
||||
"connection_specific_dns_suffix_search_list": [],
|
||||
"description": "TAP-NordVPN Windows Adapter V9",
|
||||
"physical_address": "00-FF-4C-F4-5E-49",
|
||||
"dhcp_enabled": true,
|
||||
"autoconfiguration_enabled": true,
|
||||
"ipv6_addresses": [],
|
||||
"temporary_ipv6_addresses": [],
|
||||
"link_local_ipv6_addresses": [],
|
||||
"ipv4_addresses": [],
|
||||
"default_gateways": [],
|
||||
"dhcp_server": null,
|
||||
"dhcpv6_iaid": null,
|
||||
"dhcpv6_client_duid": null,
|
||||
"dns_servers": [],
|
||||
"primary_wins_server": null,
|
||||
"lease_expires": null,
|
||||
"lease_obtained": null,
|
||||
"netbios_over_tcpip": null,
|
||||
"media_state": "Media disconnected",
|
||||
"extras": []
|
||||
},
|
||||
{
|
||||
"name_long": "Wireless LAN adapter Local Area Connection* 1",
|
||||
"name": "Local Area Connection* 1",
|
||||
"type": "Wireless LAN",
|
||||
"connection_specific_dns_suffix": null,
|
||||
"connection_specific_dns_suffix_search_list": [],
|
||||
"description": "Microsoft Wi-Fi Direct Virtual Adapter",
|
||||
"physical_address": "A8-7E-EA-5A-7F-DE",
|
||||
"dhcp_enabled": true,
|
||||
"autoconfiguration_enabled": true,
|
||||
"ipv6_addresses": [],
|
||||
"temporary_ipv6_addresses": [],
|
||||
"link_local_ipv6_addresses": [],
|
||||
"ipv4_addresses": [],
|
||||
"default_gateways": [],
|
||||
"dhcp_server": null,
|
||||
"dhcpv6_iaid": null,
|
||||
"dhcpv6_client_duid": null,
|
||||
"dns_servers": [],
|
||||
"primary_wins_server": null,
|
||||
"lease_expires": null,
|
||||
"lease_obtained": null,
|
||||
"netbios_over_tcpip": null,
|
||||
"media_state": "Media disconnected",
|
||||
"extras": []
|
||||
},
|
||||
{
|
||||
"name_long": "Wireless LAN adapter Local Area Connection* 2",
|
||||
"name": "Local Area Connection* 2",
|
||||
"type": "Wireless LAN",
|
||||
"connection_specific_dns_suffix": null,
|
||||
"connection_specific_dns_suffix_search_list": [],
|
||||
"description": "Microsoft Wi-Fi Direct Virtual Adapter #2",
|
||||
"physical_address": "AA-7E-EA-F3-64-C3",
|
||||
"dhcp_enabled": true,
|
||||
"autoconfiguration_enabled": true,
|
||||
"ipv6_addresses": [],
|
||||
"temporary_ipv6_addresses": [],
|
||||
"link_local_ipv6_addresses": [],
|
||||
"ipv4_addresses": [],
|
||||
"default_gateways": [],
|
||||
"dhcp_server": null,
|
||||
"dhcpv6_iaid": null,
|
||||
"dhcpv6_client_duid": null,
|
||||
"dns_servers": [],
|
||||
"primary_wins_server": null,
|
||||
"lease_expires": null,
|
||||
"lease_obtained": null,
|
||||
"netbios_over_tcpip": null,
|
||||
"media_state": "Media disconnected",
|
||||
"extras": []
|
||||
},
|
||||
{
|
||||
"name_long": "Ethernet adapter VMware Network Adapter VMnet1",
|
||||
"name": "VMware Network Adapter VMnet1",
|
||||
"type": "Ethernet",
|
||||
"connection_specific_dns_suffix": null,
|
||||
"connection_specific_dns_suffix_search_list": [],
|
||||
"description": "VMware Virtual Ethernet Adapter for VMnet1",
|
||||
"physical_address": "00-50-56-CC-27-73",
|
||||
"dhcp_enabled": true,
|
||||
"autoconfiguration_enabled": true,
|
||||
"ipv6_addresses": [],
|
||||
"temporary_ipv6_addresses": [],
|
||||
"link_local_ipv6_addresses": [
|
||||
{
|
||||
"address": "fe80::f47d:9c7f:69dc:591e",
|
||||
"prefix_length": 8,
|
||||
"status": "Preferred"
|
||||
}
|
||||
],
|
||||
"ipv4_addresses": [
|
||||
{
|
||||
"address": "192.168.181.1",
|
||||
"subnet_mask": "255.255.255.0",
|
||||
"status": "Preferred",
|
||||
"autoconfigured": false
|
||||
}
|
||||
],
|
||||
"default_gateways": [],
|
||||
"dhcp_server": "192.168.181.254",
|
||||
"dhcpv6_iaid": "771772502",
|
||||
"dhcpv6_client_duid": "00-01-00-01-2C-CF-19-EB-24-4B-FE-5B-9B-E6",
|
||||
"dns_servers": [],
|
||||
"primary_wins_server": null,
|
||||
"lease_expires": "2024-09-19T18:01:29",
|
||||
"lease_obtained": "2024-09-19T08:31:29",
|
||||
"netbios_over_tcpip": true,
|
||||
"media_state": null,
|
||||
"extras": []
|
||||
},
|
||||
{
|
||||
"name_long": "Ethernet adapter VMware Network Adapter VMnet8",
|
||||
"name": "VMware Network Adapter VMnet8",
|
||||
"type": "Ethernet",
|
||||
"connection_specific_dns_suffix": null,
|
||||
"connection_specific_dns_suffix_search_list": [],
|
||||
"description": "VMware Virtual Ethernet Adapter for VMnet8",
|
||||
"physical_address": "00-50-56-C9-A3-78",
|
||||
"dhcp_enabled": true,
|
||||
"autoconfiguration_enabled": true,
|
||||
"ipv6_addresses": [],
|
||||
"temporary_ipv6_addresses": [],
|
||||
"link_local_ipv6_addresses": [
|
||||
{
|
||||
"address": "fe80::4551:bf0d:59dd:a4f0",
|
||||
"prefix_length": 10,
|
||||
"status": "Preferred"
|
||||
}
|
||||
],
|
||||
"ipv4_addresses": [
|
||||
{
|
||||
"address": "192.168.213.1",
|
||||
"subnet_mask": "255.255.255.0",
|
||||
"status": "Preferred",
|
||||
"autoconfigured": false
|
||||
}
|
||||
],
|
||||
"default_gateways": [],
|
||||
"dhcp_server": "192.168.213.254",
|
||||
"dhcpv6_iaid": "788549718",
|
||||
"dhcpv6_client_duid": "00-01-00-01-2C-CF-19-EB-24-4B-FE-5B-9B-E6",
|
||||
"dns_servers": [],
|
||||
"primary_wins_server": "192.168.213.2",
|
||||
"lease_expires": "2024-09-19T18:01:29",
|
||||
"lease_obtained": "2024-09-19T08:31:29",
|
||||
"netbios_over_tcpip": true,
|
||||
"media_state": null,
|
||||
"extras": []
|
||||
},
|
||||
{
|
||||
"name_long": "Wireless LAN adapter Wi-Fi",
|
||||
"name": "Wi-Fi",
|
||||
"type": "Wireless LAN",
|
||||
"connection_specific_dns_suffix": "localdomain",
|
||||
"connection_specific_dns_suffix_search_list": [],
|
||||
"description": "Intel(R) Wi-Fi 6 AX200 160MHz",
|
||||
"physical_address": "A8-7E-EA-55-26-B0",
|
||||
"dhcp_enabled": true,
|
||||
"autoconfiguration_enabled": true,
|
||||
"ipv6_addresses": [
|
||||
{
|
||||
"address": "fd63:cc9c:65eb:3f95:57c2:aa:10d8:db08",
|
||||
"status": "Preferred"
|
||||
}
|
||||
],
|
||||
"temporary_ipv6_addresses": [
|
||||
{
|
||||
"address": "fd63:cc9c:65eb:3f95:8928:348e:d692:b7ef",
|
||||
"status": "Preferred"
|
||||
}
|
||||
],
|
||||
"link_local_ipv6_addresses": [
|
||||
{
|
||||
"address": "fe80::4fae:1380:5a1b:8b6b",
|
||||
"prefix_length": 11,
|
||||
"status": "Preferred"
|
||||
}
|
||||
],
|
||||
"ipv4_addresses": [
|
||||
{
|
||||
"address": "192.168.1.169",
|
||||
"subnet_mask": "255.255.255.0",
|
||||
"status": "Preferred",
|
||||
"autoconfigured": false
|
||||
}
|
||||
],
|
||||
"default_gateways": [
|
||||
"192.168.1.1"
|
||||
],
|
||||
"dhcp_server": "192.168.1.1",
|
||||
"dhcpv6_iaid": "162037482",
|
||||
"dhcpv6_client_duid": "00-01-00-01-2C-CF-19-EB-24-4B-FE-5B-9B-E6",
|
||||
"dns_servers": [
|
||||
"192.168.1.1"
|
||||
],
|
||||
"primary_wins_server": null,
|
||||
"lease_expires": "2024-09-20T08:31:30",
|
||||
"lease_obtained": "2024-09-19T08:31:30",
|
||||
"netbios_over_tcpip": true,
|
||||
"media_state": null,
|
||||
"extras": []
|
||||
},
|
||||
{
|
||||
"name_long": "Ethernet adapter Bluetooth Network Connection",
|
||||
"name": "Bluetooth Network Connection",
|
||||
"type": "Ethernet",
|
||||
"connection_specific_dns_suffix": null,
|
||||
"connection_specific_dns_suffix_search_list": [],
|
||||
"description": "Bluetooth Device (Personal Area Network)",
|
||||
"physical_address": "A8-7E-EA-43-23-14",
|
||||
"dhcp_enabled": true,
|
||||
"autoconfiguration_enabled": true,
|
||||
"ipv6_addresses": [],
|
||||
"temporary_ipv6_addresses": [],
|
||||
"link_local_ipv6_addresses": [],
|
||||
"ipv4_addresses": [],
|
||||
"default_gateways": [],
|
||||
"dhcp_server": null,
|
||||
"dhcpv6_iaid": null,
|
||||
"dhcpv6_client_duid": null,
|
||||
"dns_servers": [],
|
||||
"primary_wins_server": null,
|
||||
"lease_expires": null,
|
||||
"lease_obtained": null,
|
||||
"netbios_over_tcpip": null,
|
||||
"media_state": "Media disconnected",
|
||||
"extras": []
|
||||
}
|
||||
],
|
||||
"extras": []
|
||||
}
|
||||
|
||||
<a id="jc.parsers.ipconfig.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:
|
||||
|
||||
Parsed dictionary. The raw and processed data structures are the same.
|
||||
|
||||
### Parser Information
|
||||
Compatibility: windows
|
||||
|
||||
Source: [`jc/parsers/ipconfig.py`](https://github.com/kellyjonbrazil/jc/blob/master/jc/parsers/ipconfig.py)
|
||||
|
||||
Version 1.0 by joehacksalot (joehacksalot@gmail.com)
|
||||
@@ -5,7 +5,7 @@
|
||||
|
||||
jc - JSON Convert `iptables` command output parser
|
||||
|
||||
Supports `-vLn` and `--line-numbers` for all tables.
|
||||
Supports `-vLnx` and `--line-numbers` for all tables.
|
||||
|
||||
Usage (cli):
|
||||
|
||||
@@ -25,12 +25,15 @@ Schema:
|
||||
[
|
||||
{
|
||||
"chain": string,
|
||||
"default_policy": string,
|
||||
"default_packets": integer,
|
||||
"default_bytes": integer,
|
||||
"rules": [
|
||||
{
|
||||
"num" integer,
|
||||
"pkts": integer,
|
||||
"bytes": integer, # converted based on suffix
|
||||
"target": string,
|
||||
"target": string, # Null if blank
|
||||
"prot": string,
|
||||
"opt": string, # "--" = Null
|
||||
"in": string,
|
||||
@@ -49,6 +52,9 @@ Examples:
|
||||
[
|
||||
{
|
||||
"chain": "PREROUTING",
|
||||
"default_policy": "DROP",
|
||||
"default_packets": 0,
|
||||
"default_bytes": 0,
|
||||
"rules": [
|
||||
{
|
||||
"num": 1,
|
||||
@@ -108,6 +114,9 @@ Examples:
|
||||
[
|
||||
{
|
||||
"chain": "PREROUTING",
|
||||
"default_policy": "DROP",
|
||||
"default_packets": "0",
|
||||
"default_bytes": "0",
|
||||
"rules": [
|
||||
{
|
||||
"num": "1",
|
||||
@@ -186,4 +195,6 @@ Returns:
|
||||
### Parser Information
|
||||
Compatibility: linux
|
||||
|
||||
Version 1.8 by Kelly Brazil (kellyjonbrazil@gmail.com)
|
||||
Source: [`jc/parsers/iptables.py`](https://github.com/kellyjonbrazil/jc/blob/master/jc/parsers/iptables.py)
|
||||
|
||||
Version 1.12 by Kelly Brazil (kellyjonbrazil@gmail.com)
|
||||
|
||||
@@ -1,37 +0,0 @@
|
||||
[Home](https://kellyjonbrazil.github.io/jc/)
|
||||
<a id="jc.parsers.iso_datetime"></a>
|
||||
|
||||
# jc.parsers.iso\_datetime
|
||||
|
||||
jc - JSON Convert ISO 8601 Datetime string parser
|
||||
|
||||
This parser has been renamed to datetime-iso (cli) or datetime_iso (module).
|
||||
|
||||
This parser will be removed in a future version, so please start using
|
||||
the new parser name.
|
||||
|
||||
<a id="jc.parsers.iso_datetime.parse"></a>
|
||||
|
||||
### parse
|
||||
|
||||
```python
|
||||
def parse(data, raw=False, quiet=False)
|
||||
```
|
||||
|
||||
This parser is deprecated and calls datetime_iso. Please use datetime_iso
|
||||
directly. This parser will be removed in the future.
|
||||
|
||||
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
|
||||
|
||||
Version 1.1 by Kelly Brazil (kellyjonbrazil@gmail.com)
|
||||
@@ -1,7 +1,7 @@
|
||||
[Home](https://kellyjonbrazil.github.io/jc/)
|
||||
<a id="jc.parsers.iw_scan"></a>
|
||||
|
||||
# jc.parsers.iw\_scan
|
||||
# jc.parsers.iw_scan
|
||||
|
||||
jc - JSON Convert `iw dev <device> scan` command output parser
|
||||
|
||||
@@ -144,4 +144,6 @@ Returns:
|
||||
### Parser Information
|
||||
Compatibility: linux
|
||||
|
||||
Version 0.7 by Kelly Brazil (kellyjonbrazil@gmail.com)
|
||||
Source: [`jc/parsers/iw_scan.py`](https://github.com/kellyjonbrazil/jc/blob/master/jc/parsers/iw_scan.py)
|
||||
|
||||
Version 0.75 by Kelly Brazil (kellyjonbrazil@gmail.com)
|
||||
|
||||
@@ -90,7 +90,7 @@ Examples:
|
||||
```python
|
||||
def parse(data: str,
|
||||
raw: bool = False,
|
||||
quiet: bool = False) -> List[JSONDictType]
|
||||
quiet: bool = False) -> List[Dict[str, Any]]
|
||||
```
|
||||
|
||||
Main text parsing function
|
||||
@@ -108,4 +108,6 @@ Returns:
|
||||
### Parser Information
|
||||
Compatibility: linux
|
||||
|
||||
Version 1.1 by Thomas Vincent (vrince@gmail.com)
|
||||
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)
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
[Home](https://kellyjonbrazil.github.io/jc/)
|
||||
<a id="jc.parsers.jar_manifest"></a>
|
||||
|
||||
# jc.parsers.jar\_manifest
|
||||
# jc.parsers.jar_manifest
|
||||
|
||||
jc - JSON Convert Java `MANIFEST.MF` file parser
|
||||
|
||||
@@ -100,4 +100,6 @@ Returns:
|
||||
### 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)
|
||||
|
||||
@@ -116,4 +116,6 @@ Returns:
|
||||
### 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)
|
||||
|
||||
@@ -70,4 +70,8 @@ Returns:
|
||||
### Parser Information
|
||||
Compatibility: linux, darwin, cygwin, win32, aix, freebsd
|
||||
|
||||
Version 1.0 by Kelly Brazil (kellyjonbrazil@gmail.com)
|
||||
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)
|
||||
|
||||
@@ -79,4 +79,6 @@ Returns:
|
||||
### Parser Information
|
||||
Compatibility: linux, darwin, cygwin, win32, aix, freebsd
|
||||
|
||||
Version 2.0 by Kelly Brazil (kellyjonbrazil@gmail.com)
|
||||
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
91
docs/parsers/kv_dup.md
Normal 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)
|
||||
@@ -127,4 +127,6 @@ Returns:
|
||||
### 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)
|
||||
|
||||
@@ -140,4 +140,6 @@ Returns:
|
||||
### 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)
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
[Home](https://kellyjonbrazil.github.io/jc/)
|
||||
<a id="jc.parsers.ls_s"></a>
|
||||
|
||||
# jc.parsers.ls\_s
|
||||
# jc.parsers.ls_s
|
||||
|
||||
jc - JSON Convert `ls` and `vdir` command output streaming parser
|
||||
|
||||
@@ -77,7 +77,6 @@ Examples:
|
||||
### parse
|
||||
|
||||
```python
|
||||
@add_jc_meta
|
||||
def parse(data, raw=False, quiet=False, ignore_exceptions=False)
|
||||
```
|
||||
|
||||
@@ -99,4 +98,6 @@ Returns:
|
||||
### 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)
|
||||
|
||||
@@ -69,7 +69,7 @@ Examples:
|
||||
```python
|
||||
def parse(data: str,
|
||||
raw: bool = False,
|
||||
quiet: bool = False) -> List[JSONDictType]
|
||||
quiet: bool = False) -> List[Dict[str, Any]]
|
||||
```
|
||||
|
||||
Main text parsing function
|
||||
@@ -86,4 +86,6 @@ Returns:
|
||||
### 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)
|
||||
|
||||
63
docs/parsers/lsb_release.md
Normal file
63
docs/parsers/lsb_release.md
Normal 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)
|
||||
@@ -22,46 +22,53 @@ Schema:
|
||||
|
||||
[
|
||||
{
|
||||
"name": string,
|
||||
"maj_min": string,
|
||||
"rm": boolean,
|
||||
"size": string,
|
||||
"ro": boolean,
|
||||
"type": string,
|
||||
"mountpoint": string,
|
||||
"kname": string,
|
||||
"fstype": string,
|
||||
"label": string,
|
||||
"uuid": string,
|
||||
"partlabel": string,
|
||||
"partuuid": string,
|
||||
"ra": integer,
|
||||
"model": string,
|
||||
"serial": string,
|
||||
"state": string,
|
||||
"owner": string,
|
||||
"group": string,
|
||||
"mode": string,
|
||||
"alignment": integer,
|
||||
"min_io": integer,
|
||||
"opt_io": integer,
|
||||
"phy_sec": integer,
|
||||
"log_sec": integer,
|
||||
"rota": boolean,
|
||||
"sched": string,
|
||||
"rq_size": integer,
|
||||
"disc_aln": integer,
|
||||
"disc_gran": string,
|
||||
"disc_max": string,
|
||||
"disc_zero": boolean,
|
||||
"wsame": string,
|
||||
"wwn": string,
|
||||
"rand": boolean,
|
||||
"pkname": string,
|
||||
"hctl": string,
|
||||
"tran": string,
|
||||
"rev": string,
|
||||
"vendor": string
|
||||
"name": string,
|
||||
"maj_min": string,
|
||||
"rm": boolean,
|
||||
"size": string,
|
||||
"size_bytes": integer
|
||||
"ro": boolean,
|
||||
"type": string,
|
||||
"mountpoint": string,
|
||||
"mountpoints": [
|
||||
string
|
||||
],
|
||||
"kname": string,
|
||||
"fstype": string,
|
||||
"label": string,
|
||||
"uuid": string,
|
||||
"partlabel": string,
|
||||
"partuuid": string,
|
||||
"ra": integer,
|
||||
"model": string,
|
||||
"serial": string,
|
||||
"state": string,
|
||||
"owner": string,
|
||||
"group": string,
|
||||
"mode": string,
|
||||
"alignment": integer,
|
||||
"min_io": integer,
|
||||
"opt_io": integer,
|
||||
"phy_sec": integer,
|
||||
"log_sec": integer,
|
||||
"rota": boolean,
|
||||
"sched": string,
|
||||
"rq_size": integer,
|
||||
"disc_aln": integer,
|
||||
"disc_gran": string,
|
||||
"disc_gran_bytes": integer,
|
||||
"disc_max": string,
|
||||
"disc_max_bytes": integer,
|
||||
"disc_zero": boolean,
|
||||
"wsame": string,
|
||||
"wsame_bytes": integer,
|
||||
"wwn": string,
|
||||
"rand": boolean,
|
||||
"pkname": string,
|
||||
"hctl": string,
|
||||
"tran": string,
|
||||
"rev": string,
|
||||
"vendor": string
|
||||
}
|
||||
]
|
||||
|
||||
@@ -74,6 +81,7 @@ Examples:
|
||||
"maj_min": "8:0",
|
||||
"rm": false,
|
||||
"size": "20G",
|
||||
"size_bytes": 20000000000,
|
||||
"ro": false,
|
||||
"type": "disk",
|
||||
"mountpoint": null
|
||||
@@ -83,6 +91,7 @@ Examples:
|
||||
"maj_min": "8:1",
|
||||
"rm": false,
|
||||
"size": "1G",
|
||||
"size_bytes": 1000000000
|
||||
"ro": false,
|
||||
"type": "part",
|
||||
"mountpoint": "/boot"
|
||||
@@ -100,6 +109,7 @@ Examples:
|
||||
"maj_min": "8:0",
|
||||
"rm": false,
|
||||
"size": "20G",
|
||||
"size_bytes": 20000000000,
|
||||
"ro": false,
|
||||
"type": "disk",
|
||||
"mountpoint": null,
|
||||
@@ -126,9 +136,12 @@ Examples:
|
||||
"rq_size": 128,
|
||||
"disc_aln": 0,
|
||||
"disc_gran": "0B",
|
||||
"disc_gran_bytes": 0,
|
||||
"disc_max": "0B",
|
||||
"disc_max_bytes": 0,
|
||||
"disc_zero": false,
|
||||
"wsame": "32M",
|
||||
"wsame_bytes": 32000000,
|
||||
"wwn": null,
|
||||
"rand": true,
|
||||
"pkname": null,
|
||||
@@ -142,6 +155,7 @@ Examples:
|
||||
"maj_min": "8:1",
|
||||
"rm": false,
|
||||
"size": "1G",
|
||||
"size_bytes": 1000000000
|
||||
"ro": false,
|
||||
"type": "part",
|
||||
"mountpoint": "/boot",
|
||||
@@ -168,9 +182,12 @@ Examples:
|
||||
"rq_size": 128,
|
||||
"disc_aln": 0,
|
||||
"disc_gran": "0B",
|
||||
"disc_gran_bytes": 0,
|
||||
"disc_max": "0B",
|
||||
"disc_max_bytes": 0,
|
||||
"disc_zero": false,
|
||||
"wsame": "32M",
|
||||
"wsame_bytes": 32000000,
|
||||
"wwn": null,
|
||||
"rand": true,
|
||||
"pkname": "sda",
|
||||
@@ -192,6 +209,7 @@ Examples:
|
||||
"maj_min": "8:0",
|
||||
"rm": "0",
|
||||
"size": "20G",
|
||||
"size_bytes": 20000000000,
|
||||
"ro": "0",
|
||||
"type": "disk",
|
||||
"mountpoint": null,
|
||||
@@ -218,9 +236,12 @@ Examples:
|
||||
"rq_size": "128",
|
||||
"disc_aln": "0",
|
||||
"disc_gran": "0B",
|
||||
"disc_gran_bytes": 0,
|
||||
"disc_max": "0B",
|
||||
"disc_max_bytes": 0,
|
||||
"disc_zero": "0",
|
||||
"wsame": "32M",
|
||||
"wsame_bytes": 32000000,
|
||||
"wwn": null,
|
||||
"rand": "1",
|
||||
"pkname": null,
|
||||
@@ -234,6 +255,7 @@ Examples:
|
||||
"maj_min": "8:1",
|
||||
"rm": "0",
|
||||
"size": "1G",
|
||||
"size_bytes": 1000000000
|
||||
"ro": "0",
|
||||
"type": "part",
|
||||
"mountpoint": "/boot",
|
||||
@@ -260,9 +282,12 @@ Examples:
|
||||
"rq_size": "128",
|
||||
"disc_aln": "0",
|
||||
"disc_gran": "0B",
|
||||
"disc_gran_bytes": 0,
|
||||
"disc_max": "0B",
|
||||
"disc_max_bytes": 0,
|
||||
"disc_zero": "0",
|
||||
"wsame": "32M",
|
||||
"wsame_bytes": 32000000,
|
||||
"wwn": null,
|
||||
"rand": "1",
|
||||
"pkname": "sda",
|
||||
@@ -297,4 +322,6 @@ Returns:
|
||||
### Parser Information
|
||||
Compatibility: linux
|
||||
|
||||
Version 1.9 by Kelly Brazil (kellyjonbrazil@gmail.com)
|
||||
Source: [`jc/parsers/lsblk.py`](https://github.com/kellyjonbrazil/jc/blob/master/jc/parsers/lsblk.py)
|
||||
|
||||
Version 1.10 by Kelly Brazil (kellyjonbrazil@gmail.com)
|
||||
|
||||
@@ -148,4 +148,6 @@ Returns:
|
||||
### 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)
|
||||
|
||||
@@ -142,4 +142,6 @@ Returns:
|
||||
### 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)
|
||||
|
||||
@@ -53,7 +53,6 @@ Schema:
|
||||
"sdevice_id_int": integer,
|
||||
"rev": string,
|
||||
"physlot": string,
|
||||
"physlot_int": integer,
|
||||
"progif": string,
|
||||
"progif_int": integer
|
||||
}
|
||||
@@ -89,7 +88,6 @@ Examples:
|
||||
"sdevice_id": "07e0",
|
||||
"sdevice_id_int": 2016,
|
||||
"physlot": "37",
|
||||
"physlot_int": 55,
|
||||
"progif": "01",
|
||||
"progif_int": 1
|
||||
},
|
||||
@@ -127,7 +125,7 @@ Examples:
|
||||
```python
|
||||
def parse(data: str,
|
||||
raw: bool = False,
|
||||
quiet: bool = False) -> List[JSONDictType]
|
||||
quiet: bool = False) -> List[Dict[str, Any]]
|
||||
```
|
||||
|
||||
Main text parsing function
|
||||
@@ -145,4 +143,6 @@ Returns:
|
||||
### Parser Information
|
||||
Compatibility: linux
|
||||
|
||||
Version 1.0 by Kelly Brazil (kellyjonbrazil@gmail.com)
|
||||
Source: [`jc/parsers/lspci.py`](https://github.com/kellyjonbrazil/jc/blob/master/jc/parsers/lspci.py)
|
||||
|
||||
Version 1.1 by Kelly Brazil (kellyjonbrazil@gmail.com)
|
||||
|
||||
@@ -330,4 +330,6 @@ Returns:
|
||||
### 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)
|
||||
|
||||
@@ -87,4 +87,6 @@ Returns:
|
||||
### 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)
|
||||
|
||||
@@ -249,4 +249,6 @@ Returns:
|
||||
### 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)
|
||||
|
||||
@@ -98,4 +98,6 @@ Returns:
|
||||
### Parser Information
|
||||
Compatibility: linux, darwin, freebsd, aix
|
||||
|
||||
Version 1.8 by Kelly Brazil (kellyjonbrazil@gmail.com)
|
||||
Source: [`jc/parsers/mount.py`](https://github.com/kellyjonbrazil/jc/blob/master/jc/parsers/mount.py)
|
||||
|
||||
Version 1.11 by Kelly Brazil (kellyjonbrazil@gmail.com)
|
||||
|
||||
@@ -137,4 +137,6 @@ Returns:
|
||||
### Parser Information
|
||||
Compatibility: linux
|
||||
|
||||
Source: [`jc/parsers/mpstat.py`](https://github.com/kellyjonbrazil/jc/blob/master/jc/parsers/mpstat.py)
|
||||
|
||||
Version 1.1 by Kelly Brazil (kellyjonbrazil@gmail.com)
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
[Home](https://kellyjonbrazil.github.io/jc/)
|
||||
<a id="jc.parsers.mpstat_s"></a>
|
||||
|
||||
# jc.parsers.mpstat\_s
|
||||
# jc.parsers.mpstat_s
|
||||
|
||||
jc - JSON Convert `mpstat` command output streaming parser
|
||||
|
||||
@@ -100,7 +100,6 @@ Examples:
|
||||
### parse
|
||||
|
||||
```python
|
||||
@add_jc_meta
|
||||
def parse(data: Iterable[str],
|
||||
raw: bool = False,
|
||||
quiet: bool = False,
|
||||
@@ -125,4 +124,6 @@ Returns:
|
||||
### Parser Information
|
||||
Compatibility: linux
|
||||
|
||||
Source: [`jc/parsers/mpstat_s.py`](https://github.com/kellyjonbrazil/jc/blob/master/jc/parsers/mpstat_s.py)
|
||||
|
||||
Version 1.1 by Kelly Brazil (kellyjonbrazil@gmail.com)
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user