1
0
mirror of https://github.com/kellyjonbrazil/jc.git synced 2025-06-17 00:07:37 +02:00

update schema and docs

This commit is contained in:
Kelly Brazil
2022-09-13 13:42:06 -07:00
parent de6307dc38
commit cb684fa6de
3 changed files with 198 additions and 63 deletions

View File

@ -0,0 +1,133 @@
[Home](https://kellyjonbrazil.github.io/jc/)
<a id="jc.parsers.proc_interrupts"></a>
# jc.parsers.proc\_interrupts
jc - JSON Convert `/proc/interrupts` file parser
Usage (cli):
$ cat /proc/interrupts | jc --proc
or
$ jc /proc/interrupts
or
$ cat /proc/interrupts | jc --proc-interrupts
Usage (module):
import jc
result = jc.parse('proc', proc_interrupts_file)
or
import jc
result = jc.parse('proc_interrupts', proc_interrupts_file)
Schema:
[
{
"irq": string,
"cpu_num": integer,
"interrupts": [
integer
],
"type": string,
"device": [
string
]
}
]
Examples:
$ cat /proc/interrupts | jc --proc -p
[
{
"irq": "0",
"cpu_num": 2,
"interrupts": [
18,
0
],
"type": "IO-APIC",
"device": [
"2-edge",
"timer"
]
},
{
"irq": "1",
"cpu_num": 2,
"interrupts": [
0,
73
],
"type": "IO-APIC",
"device": [
"1-edge",
"i8042"
]
},
...
]
$ proc_interrupts | jc --proc_interrupts -p -r
[
{
"irq": "0",
"cpu_num": 2,
"interrupts": [
"18",
"0"
],
"type": "IO-APIC",
"device": [
"2-edge",
"timer"
]
},
{
"irq": "1",
"cpu_num": 2,
"interrupts": [
"0",
"73"
],
"type": "IO-APIC",
"device": [
"1-edge",
"i8042"
]
},
...
]
<a id="jc.parsers.proc_interrupts.parse"></a>
### parse
```python
def parse(data: str, raw: bool = False, quiet: bool = False) -> List[Dict]
```
Main text parsing function
Parameters:
data: (string) text data to parse
raw: (boolean) unprocessed output if True
quiet: (boolean) suppress warning messages if True
Returns:
List of Dictionaries. Raw or processed structured data.
### Parser Information
Compatibility: linux
Version 1.0 by Kelly Brazil (kellyjonbrazil@gmail.com)

View File

@ -26,14 +26,15 @@ Schema:
[ [
{ {
"module": string, "irq": string,
"size": integer, "cpu_num": integer,
"used": integer, "interrupts": [
"used_by": [ integer
string
], ],
"status": string, "type": string,
"location": string "device": [
string
]
} }
] ]
@ -42,30 +43,30 @@ Examples:
$ cat /proc/interrupts | jc --proc -p $ cat /proc/interrupts | jc --proc -p
[ [
{ {
"module": "binfmt_misc", "irq": "0",
"size": 24576, "cpu_num": 2,
"used": 1, "interrupts": [
"used_by": [], 18,
"status": "Live", 0
"location": "0xffffffffc0ab4000"
},
{
"module": "vsock_loopback",
"size": 16384,
"used": 0,
"used_by": [],
"status": "Live",
"location": "0xffffffffc0a14000"
},
{
"module": "vmw_vsock_virtio_transport_common",
"size": 36864,
"used": 1,
"used_by": [
"vsock_loopback"
], ],
"status": "Live", "type": "IO-APIC",
"location": "0xffffffffc0a03000" "device": [
"2-edge",
"timer"
]
},
{
"irq": "1",
"cpu_num": 2,
"interrupts": [
0,
73
],
"type": "IO-APIC",
"device": [
"1-edge",
"i8042"
]
}, },
... ...
] ]
@ -73,30 +74,30 @@ Examples:
$ proc_interrupts | jc --proc_interrupts -p -r $ proc_interrupts | jc --proc_interrupts -p -r
[ [
{ {
"module": "binfmt_misc", "irq": "0",
"size": "24576", "cpu_num": 2,
"used": "1", "interrupts": [
"used_by": [], "18",
"status": "Live", "0"
"location": "0xffffffffc0ab4000"
},
{
"module": "vsock_loopback",
"size": "16384",
"used": "0",
"used_by": [],
"status": "Live",
"location": "0xffffffffc0a14000"
},
{
"module": "vmw_vsock_virtio_transport_common",
"size": "36864",
"used": "1",
"used_by": [
"vsock_loopback"
], ],
"status": "Live", "type": "IO-APIC",
"location": "0xffffffffc0a03000" "device": [
"2-edge",
"timer"
]
},
{
"irq": "1",
"cpu_num": 2,
"interrupts": [
"0",
"73"
],
"type": "IO-APIC",
"device": [
"1-edge",
"i8042"
]
}, },
... ...
] ]
@ -130,12 +131,8 @@ def _process(proc_data: List[Dict]) -> List[Dict]:
List of Dictionaries. Structured to conform to the schema. List of Dictionaries. Structured to conform to the schema.
""" """
int_list = {'size', 'used'}
for entry in proc_data: for entry in proc_data:
for key in entry: entry['interrupts'] = [int(x) for x in entry['interrupts']]
if key in int_list:
entry[key] = jc.utils.convert_to_int(entry[key])
return proc_data return proc_data
@ -188,22 +185,22 @@ def parse(
interrupts.append(split_line.pop(0)) interrupts.append(split_line.pop(0))
interrupt_type = split_line.pop(0) interrupt_type = split_line.pop(0)
interrupt_info = split_line device = split_line
else: else:
for _ in range(cpu_num): for _ in range(cpu_num):
interrupts.append(split_line.pop(0)) interrupts.append(split_line.pop(0))
interrupt_type = ' '.join(split_line) interrupt_type = ' '.join(split_line)
interrupt_info = [] device = []
raw_output.append( raw_output.append(
{ {
'irq': irq, 'irq': irq,
'cpu_num': cpu_num, 'cpu_num': cpu_num,
'interrupts': interrupts, 'interrupts': interrupts,
'interrupt_type': interrupt_type, 'type': interrupt_type,
'interrupt_info': interrupt_info or None 'device': device or None
} }
) )

View File

@ -1,4 +1,4 @@
.TH jc 1 2022-09-09 1.21.2 "JSON Convert" .TH jc 1 2022-09-13 1.21.2 "JSON Convert"
.SH NAME .SH NAME
\fBjc\fP \- JSON Convert JSONifies the output of many CLI tools, file-types, and strings \fBjc\fP \- JSON Convert JSONifies the output of many CLI tools, file-types, and strings
.SH SYNOPSIS .SH SYNOPSIS
@ -450,6 +450,11 @@ PLIST file parser
\fB--proc-filesystems\fP \fB--proc-filesystems\fP
`/proc/filesystems` file parser `/proc/filesystems` file parser
.TP
.B
\fB--proc-interrupts\fP
`/proc/interrupts` file parser
.TP .TP
.B .B
\fB--proc-meminfo\fP \fB--proc-meminfo\fP