mirror of
https://github.com/kellyjonbrazil/jc.git
synced 2025-06-17 00:07:37 +02:00
add rpm -qai parser
This commit is contained in:
53
EXAMPLES.md
53
EXAMPLES.md
@ -2479,6 +2479,59 @@ route -ee | jc --route -p # or: jc -p route -ee
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
```
|
```
|
||||||
|
### rpm -qai
|
||||||
|
```bash
|
||||||
|
rpm_qai | jc --rpm_qai -p # or: jc -p rpm -qai
|
||||||
|
```
|
||||||
|
```json
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"name": "make",
|
||||||
|
"epoch": 1,
|
||||||
|
"version": "3.82",
|
||||||
|
"release": "24.el7",
|
||||||
|
"architecture": "x86_64",
|
||||||
|
"install_date": "Wed 16 Oct 2019 09:21:42 AM PDT",
|
||||||
|
"group": "Development/Tools",
|
||||||
|
"size": 1160660,
|
||||||
|
"license": "GPLv2+",
|
||||||
|
"signature": "RSA/SHA256, Thu 22 Aug 2019 02:34:59 PM PDT, Key ID 24c6a8a7f4a80eb5",
|
||||||
|
"source_rpm": "make-3.82-24.el7.src.rpm",
|
||||||
|
"build_date": "Thu 08 Aug 2019 05:47:25 PM PDT",
|
||||||
|
"build_host": "x86-01.bsys.centos.org",
|
||||||
|
"relocations": "(not relocatable)",
|
||||||
|
"packager": "CentOS BuildSystem <http://bugs.centos.org>",
|
||||||
|
"vendor": "CentOS",
|
||||||
|
"url": "http://www.gnu.org/software/make/",
|
||||||
|
"summary": "A GNU tool which simplifies the build process for users",
|
||||||
|
"description": "A GNU tool for controlling the generation of executables and other non-source files of a program from the program's source files. Make allows users to build and install packages without any significant knowledge about the details of the build process. The details about how the program should be built are provided for make in the program's makefile.",
|
||||||
|
"build_epoch": 1565311645,
|
||||||
|
"build_epoch_utc": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "kbd-legacy",
|
||||||
|
"version": "1.15.5",
|
||||||
|
"release": "15.el7",
|
||||||
|
"architecture": "noarch",
|
||||||
|
"install_date": "Thu 15 Aug 2019 10:53:08 AM PDT",
|
||||||
|
"group": "System Environment/Base",
|
||||||
|
"size": 503608,
|
||||||
|
"license": "GPLv2+",
|
||||||
|
"signature": "RSA/SHA256, Mon 12 Nov 2018 07:17:49 AM PST, Key ID 24c6a8a7f4a80eb5",
|
||||||
|
"source_rpm": "kbd-1.15.5-15.el7.src.rpm",
|
||||||
|
"build_date": "Tue 30 Oct 2018 03:40:00 PM PDT",
|
||||||
|
"build_host": "x86-01.bsys.centos.org",
|
||||||
|
"relocations": "(not relocatable)",
|
||||||
|
"packager": "CentOS BuildSystem <http://bugs.centos.org>",
|
||||||
|
"vendor": "CentOS",
|
||||||
|
"url": "http://ftp.altlinux.org/pub/people/legion/kbd",
|
||||||
|
"summary": "Legacy data for kbd package",
|
||||||
|
"description": "The kbd-legacy package contains original keymaps for kbd package. Please note that kbd-legacy is not helpful without kbd.",
|
||||||
|
"build_epoch": 1540939200,
|
||||||
|
"build_epoch_utc": null
|
||||||
|
}
|
||||||
|
]
|
||||||
|
```
|
||||||
### /etc/shadow file
|
### /etc/shadow file
|
||||||
```bash
|
```bash
|
||||||
cat /etc/shadow | jc --shadow -p
|
cat /etc/shadow | jc --shadow -p
|
||||||
|
@ -174,6 +174,7 @@ The JSON output can be compact (default) or pretty formatted with the `-p` optio
|
|||||||
- `--pip-show` enables the `pip show` command parser ([documentation](https://kellyjonbrazil.github.io/jc/docs/parsers/pip_show))
|
- `--pip-show` enables the `pip show` command parser ([documentation](https://kellyjonbrazil.github.io/jc/docs/parsers/pip_show))
|
||||||
- `--ps` enables the `ps` command parser ([documentation](https://kellyjonbrazil.github.io/jc/docs/parsers/ps))
|
- `--ps` enables the `ps` command parser ([documentation](https://kellyjonbrazil.github.io/jc/docs/parsers/ps))
|
||||||
- `--route` enables the `route` command parser ([documentation](https://kellyjonbrazil.github.io/jc/docs/parsers/route))
|
- `--route` enables the `route` command parser ([documentation](https://kellyjonbrazil.github.io/jc/docs/parsers/route))
|
||||||
|
- `--rpm_qai` enables the `rpm -qai` command parser ([documentation](https://kellyjonbrazil.github.io/jc/docs/parsers/rpm_qai))
|
||||||
- `--shadow` enables the `/etc/shadow` file parser ([documentation](https://kellyjonbrazil.github.io/jc/docs/parsers/shadow))
|
- `--shadow` enables the `/etc/shadow` file parser ([documentation](https://kellyjonbrazil.github.io/jc/docs/parsers/shadow))
|
||||||
- `--ss` enables the `ss` command parser ([documentation](https://kellyjonbrazil.github.io/jc/docs/parsers/ss))
|
- `--ss` enables the `ss` command parser ([documentation](https://kellyjonbrazil.github.io/jc/docs/parsers/ss))
|
||||||
- `--stat` enables the `stat` command parser ([documentation](https://kellyjonbrazil.github.io/jc/docs/parsers/stat))
|
- `--stat` enables the `stat` command parser ([documentation](https://kellyjonbrazil.github.io/jc/docs/parsers/stat))
|
||||||
|
191
docs/parsers/rpm_qai.md
Normal file
191
docs/parsers/rpm_qai.md
Normal file
@ -0,0 +1,191 @@
|
|||||||
|
|
||||||
|
# jc.parsers.rpm_qai
|
||||||
|
jc - JSON CLI output utility `rpm -qai` command output parser
|
||||||
|
|
||||||
|
Works with `rpm -qi [package]` or `rpm -qai`.
|
||||||
|
|
||||||
|
The `build_epoch` calculated timestamp field is naive (i.e. based on the local time of the system the parser is run on)
|
||||||
|
|
||||||
|
The `build_epoch_utc` calculated timestamp field is timezone-aware and is only available if the timezone field is UTC.
|
||||||
|
|
||||||
|
Usage (cli):
|
||||||
|
|
||||||
|
$ rpm -qai | jc --rpm_qai
|
||||||
|
|
||||||
|
or
|
||||||
|
|
||||||
|
$ jc rpm -qai
|
||||||
|
|
||||||
|
Usage (module):
|
||||||
|
|
||||||
|
import jc.parsers.rpm_qai
|
||||||
|
result = jc.parsers.rpm_qai.parse(rpm_qai_command_output)
|
||||||
|
|
||||||
|
Compatibility:
|
||||||
|
|
||||||
|
'linux'
|
||||||
|
|
||||||
|
Examples:
|
||||||
|
|
||||||
|
$ rpm_qai | jc --rpm_qai -p
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"name": "make",
|
||||||
|
"epoch": 1,
|
||||||
|
"version": "3.82",
|
||||||
|
"release": "24.el7",
|
||||||
|
"architecture": "x86_64",
|
||||||
|
"install_date": "Wed 16 Oct 2019 09:21:42 AM PDT",
|
||||||
|
"group": "Development/Tools",
|
||||||
|
"size": 1160660,
|
||||||
|
"license": "GPLv2+",
|
||||||
|
"signature": "RSA/SHA256, Thu 22 Aug 2019 02:34:59 PM PDT, Key ID 24c6a8a7f4a80eb5",
|
||||||
|
"source_rpm": "make-3.82-24.el7.src.rpm",
|
||||||
|
"build_date": "Thu 08 Aug 2019 05:47:25 PM PDT",
|
||||||
|
"build_host": "x86-01.bsys.centos.org",
|
||||||
|
"relocations": "(not relocatable)",
|
||||||
|
"packager": "CentOS BuildSystem <http://bugs.centos.org>",
|
||||||
|
"vendor": "CentOS",
|
||||||
|
"url": "http://www.gnu.org/software/make/",
|
||||||
|
"summary": "A GNU tool which simplifies the build process for users",
|
||||||
|
"description": "A GNU tool for controlling the generation of executables and other non-source files of a program from the program's source files. Make allows users to build and install packages without any significant knowledge about the details of the build process. The details about how the program should be built are provided for make in the program's makefile.",
|
||||||
|
"build_epoch": 1565311645,
|
||||||
|
"build_epoch_utc": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "kbd-legacy",
|
||||||
|
"version": "1.15.5",
|
||||||
|
"release": "15.el7",
|
||||||
|
"architecture": "noarch",
|
||||||
|
"install_date": "Thu 15 Aug 2019 10:53:08 AM PDT",
|
||||||
|
"group": "System Environment/Base",
|
||||||
|
"size": 503608,
|
||||||
|
"license": "GPLv2+",
|
||||||
|
"signature": "RSA/SHA256, Mon 12 Nov 2018 07:17:49 AM PST, Key ID 24c6a8a7f4a80eb5",
|
||||||
|
"source_rpm": "kbd-1.15.5-15.el7.src.rpm",
|
||||||
|
"build_date": "Tue 30 Oct 2018 03:40:00 PM PDT",
|
||||||
|
"build_host": "x86-01.bsys.centos.org",
|
||||||
|
"relocations": "(not relocatable)",
|
||||||
|
"packager": "CentOS BuildSystem <http://bugs.centos.org>",
|
||||||
|
"vendor": "CentOS",
|
||||||
|
"url": "http://ftp.altlinux.org/pub/people/legion/kbd",
|
||||||
|
"summary": "Legacy data for kbd package",
|
||||||
|
"description": "The kbd-legacy package contains original keymaps for kbd package. Please note that kbd-legacy is not helpful without kbd.",
|
||||||
|
"build_epoch": 1540939200,
|
||||||
|
"build_epoch_utc": null
|
||||||
|
},
|
||||||
|
...
|
||||||
|
]
|
||||||
|
|
||||||
|
$ rpm -qai | jc --rpm_qai -p -r
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"name": "make",
|
||||||
|
"epoch": "1",
|
||||||
|
"version": "3.82",
|
||||||
|
"release": "24.el7",
|
||||||
|
"architecture": "x86_64",
|
||||||
|
"install_date": "Wed 16 Oct 2019 09:21:42 AM PDT",
|
||||||
|
"group": "Development/Tools",
|
||||||
|
"size": "1160660",
|
||||||
|
"license": "GPLv2+",
|
||||||
|
"signature": "RSA/SHA256, Thu 22 Aug 2019 02:34:59 PM PDT, Key ID 24c6a8a7f4a80eb5",
|
||||||
|
"source_rpm": "make-3.82-24.el7.src.rpm",
|
||||||
|
"build_date": "Thu 08 Aug 2019 05:47:25 PM PDT",
|
||||||
|
"build_host": "x86-01.bsys.centos.org",
|
||||||
|
"relocations": "(not relocatable)",
|
||||||
|
"packager": "CentOS BuildSystem <http://bugs.centos.org>",
|
||||||
|
"vendor": "CentOS",
|
||||||
|
"url": "http://www.gnu.org/software/make/",
|
||||||
|
"summary": "A GNU tool which simplifies the build process for users",
|
||||||
|
"description": "A GNU tool for controlling the generation of executables and other..."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "kbd-legacy",
|
||||||
|
"version": "1.15.5",
|
||||||
|
"release": "15.el7",
|
||||||
|
"architecture": "noarch",
|
||||||
|
"install_date": "Thu 15 Aug 2019 10:53:08 AM PDT",
|
||||||
|
"group": "System Environment/Base",
|
||||||
|
"size": "503608",
|
||||||
|
"license": "GPLv2+",
|
||||||
|
"signature": "RSA/SHA256, Mon 12 Nov 2018 07:17:49 AM PST, Key ID 24c6a8a7f4a80eb5",
|
||||||
|
"source_rpm": "kbd-1.15.5-15.el7.src.rpm",
|
||||||
|
"build_date": "Tue 30 Oct 2018 03:40:00 PM PDT",
|
||||||
|
"build_host": "x86-01.bsys.centos.org",
|
||||||
|
"relocations": "(not relocatable)",
|
||||||
|
"packager": "CentOS BuildSystem <http://bugs.centos.org>",
|
||||||
|
"vendor": "CentOS",
|
||||||
|
"url": "http://ftp.altlinux.org/pub/people/legion/kbd",
|
||||||
|
"summary": "Legacy data for kbd package",
|
||||||
|
"description": "The kbd-legacy package contains original keymaps for kbd package..."
|
||||||
|
},
|
||||||
|
...
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
## info
|
||||||
|
```python
|
||||||
|
info()
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
## process
|
||||||
|
```python
|
||||||
|
process(proc_data)
|
||||||
|
```
|
||||||
|
|
||||||
|
Final processing to conform to the schema.
|
||||||
|
|
||||||
|
Parameters:
|
||||||
|
|
||||||
|
proc_data: (List of Dictionaries) raw structured data to process
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
|
||||||
|
List of Dictionaries. Structured data with the following schema:
|
||||||
|
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"name": string,
|
||||||
|
"epoch": integer,
|
||||||
|
"version": string,
|
||||||
|
"release": string,
|
||||||
|
"architecture": string,
|
||||||
|
"install_date": string,
|
||||||
|
"group": string,
|
||||||
|
"size": integer,
|
||||||
|
"license": string,
|
||||||
|
"signature": string,
|
||||||
|
"source_rpm": string,
|
||||||
|
"build_date": string,
|
||||||
|
"build_epoch": integer, # naive timestamp
|
||||||
|
"build_epoch_utc": integer, # Aware timestamp if timezone is UTC
|
||||||
|
"build_host": string,
|
||||||
|
"relocations": string,
|
||||||
|
"packager": string,
|
||||||
|
"vendor": string,
|
||||||
|
"url": string,
|
||||||
|
"summary": string,
|
||||||
|
"description": string
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
## parse
|
||||||
|
```python
|
||||||
|
parse(data, raw=False, quiet=False)
|
||||||
|
```
|
||||||
|
|
||||||
|
Main text parsing function
|
||||||
|
|
||||||
|
Parameters:
|
||||||
|
|
||||||
|
data: (string) text data to parse
|
||||||
|
raw: (boolean) output preprocessed JSON if True
|
||||||
|
quiet: (boolean) suppress warning messages if True
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
|
||||||
|
List of Dictionaries. Raw or processed structured data.
|
||||||
|
|
@ -88,6 +88,7 @@ parsers = [
|
|||||||
'pip-show',
|
'pip-show',
|
||||||
'ps',
|
'ps',
|
||||||
'route',
|
'route',
|
||||||
|
'rpm_qai',
|
||||||
'shadow',
|
'shadow',
|
||||||
'ss',
|
'ss',
|
||||||
'stat',
|
'stat',
|
||||||
|
255
jc/parsers/rpm_qai.py
Normal file
255
jc/parsers/rpm_qai.py
Normal file
@ -0,0 +1,255 @@
|
|||||||
|
"""jc - JSON CLI output utility `rpm -qai` command output parser
|
||||||
|
|
||||||
|
Works with `rpm -qi [package]` or `rpm -qai`.
|
||||||
|
|
||||||
|
The `build_epoch` calculated timestamp field is naive (i.e. based on the local time of the system the parser is run on)
|
||||||
|
|
||||||
|
The `build_epoch_utc` calculated timestamp field is timezone-aware and is only available if the timezone field is UTC.
|
||||||
|
|
||||||
|
Usage (cli):
|
||||||
|
|
||||||
|
$ rpm -qai | jc --rpm_qai
|
||||||
|
|
||||||
|
or
|
||||||
|
|
||||||
|
$ jc rpm -qai
|
||||||
|
|
||||||
|
Usage (module):
|
||||||
|
|
||||||
|
import jc.parsers.rpm_qai
|
||||||
|
result = jc.parsers.rpm_qai.parse(rpm_qai_command_output)
|
||||||
|
|
||||||
|
Compatibility:
|
||||||
|
|
||||||
|
'linux'
|
||||||
|
|
||||||
|
Examples:
|
||||||
|
|
||||||
|
$ rpm_qai | jc --rpm_qai -p
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"name": "make",
|
||||||
|
"epoch": 1,
|
||||||
|
"version": "3.82",
|
||||||
|
"release": "24.el7",
|
||||||
|
"architecture": "x86_64",
|
||||||
|
"install_date": "Wed 16 Oct 2019 09:21:42 AM PDT",
|
||||||
|
"group": "Development/Tools",
|
||||||
|
"size": 1160660,
|
||||||
|
"license": "GPLv2+",
|
||||||
|
"signature": "RSA/SHA256, Thu 22 Aug 2019 02:34:59 PM PDT, Key ID 24c6a8a7f4a80eb5",
|
||||||
|
"source_rpm": "make-3.82-24.el7.src.rpm",
|
||||||
|
"build_date": "Thu 08 Aug 2019 05:47:25 PM PDT",
|
||||||
|
"build_host": "x86-01.bsys.centos.org",
|
||||||
|
"relocations": "(not relocatable)",
|
||||||
|
"packager": "CentOS BuildSystem <http://bugs.centos.org>",
|
||||||
|
"vendor": "CentOS",
|
||||||
|
"url": "http://www.gnu.org/software/make/",
|
||||||
|
"summary": "A GNU tool which simplifies the build process for users",
|
||||||
|
"description": "A GNU tool for controlling the generation of executables and other non-source files of a program from the program's source files. Make allows users to build and install packages without any significant knowledge about the details of the build process. The details about how the program should be built are provided for make in the program's makefile.",
|
||||||
|
"build_epoch": 1565311645,
|
||||||
|
"build_epoch_utc": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "kbd-legacy",
|
||||||
|
"version": "1.15.5",
|
||||||
|
"release": "15.el7",
|
||||||
|
"architecture": "noarch",
|
||||||
|
"install_date": "Thu 15 Aug 2019 10:53:08 AM PDT",
|
||||||
|
"group": "System Environment/Base",
|
||||||
|
"size": 503608,
|
||||||
|
"license": "GPLv2+",
|
||||||
|
"signature": "RSA/SHA256, Mon 12 Nov 2018 07:17:49 AM PST, Key ID 24c6a8a7f4a80eb5",
|
||||||
|
"source_rpm": "kbd-1.15.5-15.el7.src.rpm",
|
||||||
|
"build_date": "Tue 30 Oct 2018 03:40:00 PM PDT",
|
||||||
|
"build_host": "x86-01.bsys.centos.org",
|
||||||
|
"relocations": "(not relocatable)",
|
||||||
|
"packager": "CentOS BuildSystem <http://bugs.centos.org>",
|
||||||
|
"vendor": "CentOS",
|
||||||
|
"url": "http://ftp.altlinux.org/pub/people/legion/kbd",
|
||||||
|
"summary": "Legacy data for kbd package",
|
||||||
|
"description": "The kbd-legacy package contains original keymaps for kbd package. Please note that kbd-legacy is not helpful without kbd.",
|
||||||
|
"build_epoch": 1540939200,
|
||||||
|
"build_epoch_utc": null
|
||||||
|
},
|
||||||
|
...
|
||||||
|
]
|
||||||
|
|
||||||
|
$ rpm -qai | jc --rpm_qai -p -r
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"name": "make",
|
||||||
|
"epoch": "1",
|
||||||
|
"version": "3.82",
|
||||||
|
"release": "24.el7",
|
||||||
|
"architecture": "x86_64",
|
||||||
|
"install_date": "Wed 16 Oct 2019 09:21:42 AM PDT",
|
||||||
|
"group": "Development/Tools",
|
||||||
|
"size": "1160660",
|
||||||
|
"license": "GPLv2+",
|
||||||
|
"signature": "RSA/SHA256, Thu 22 Aug 2019 02:34:59 PM PDT, Key ID 24c6a8a7f4a80eb5",
|
||||||
|
"source_rpm": "make-3.82-24.el7.src.rpm",
|
||||||
|
"build_date": "Thu 08 Aug 2019 05:47:25 PM PDT",
|
||||||
|
"build_host": "x86-01.bsys.centos.org",
|
||||||
|
"relocations": "(not relocatable)",
|
||||||
|
"packager": "CentOS BuildSystem <http://bugs.centos.org>",
|
||||||
|
"vendor": "CentOS",
|
||||||
|
"url": "http://www.gnu.org/software/make/",
|
||||||
|
"summary": "A GNU tool which simplifies the build process for users",
|
||||||
|
"description": "A GNU tool for controlling the generation of executables and other..."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "kbd-legacy",
|
||||||
|
"version": "1.15.5",
|
||||||
|
"release": "15.el7",
|
||||||
|
"architecture": "noarch",
|
||||||
|
"install_date": "Thu 15 Aug 2019 10:53:08 AM PDT",
|
||||||
|
"group": "System Environment/Base",
|
||||||
|
"size": "503608",
|
||||||
|
"license": "GPLv2+",
|
||||||
|
"signature": "RSA/SHA256, Mon 12 Nov 2018 07:17:49 AM PST, Key ID 24c6a8a7f4a80eb5",
|
||||||
|
"source_rpm": "kbd-1.15.5-15.el7.src.rpm",
|
||||||
|
"build_date": "Tue 30 Oct 2018 03:40:00 PM PDT",
|
||||||
|
"build_host": "x86-01.bsys.centos.org",
|
||||||
|
"relocations": "(not relocatable)",
|
||||||
|
"packager": "CentOS BuildSystem <http://bugs.centos.org>",
|
||||||
|
"vendor": "CentOS",
|
||||||
|
"url": "http://ftp.altlinux.org/pub/people/legion/kbd",
|
||||||
|
"summary": "Legacy data for kbd package",
|
||||||
|
"description": "The kbd-legacy package contains original keymaps for kbd package..."
|
||||||
|
},
|
||||||
|
...
|
||||||
|
]
|
||||||
|
"""
|
||||||
|
import jc.utils
|
||||||
|
|
||||||
|
|
||||||
|
class info():
|
||||||
|
version = '1.0'
|
||||||
|
description = '`rpm -qai` command parser'
|
||||||
|
author = 'Kelly Brazil'
|
||||||
|
author_email = 'kellyjonbrazil@gmail.com'
|
||||||
|
# details = 'enter any other details here'
|
||||||
|
|
||||||
|
# compatible options: linux, darwin, cygwin, win32, aix, freebsd
|
||||||
|
compatible = ['linux']
|
||||||
|
magic_commands = ['rpm -qai', 'rpm -qia', 'rpm -qi']
|
||||||
|
|
||||||
|
|
||||||
|
__version__ = info.version
|
||||||
|
|
||||||
|
|
||||||
|
def process(proc_data):
|
||||||
|
"""
|
||||||
|
Final processing to conform to the schema.
|
||||||
|
|
||||||
|
Parameters:
|
||||||
|
|
||||||
|
proc_data: (List of Dictionaries) raw structured data to process
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
|
||||||
|
List of Dictionaries. Structured data with the following schema:
|
||||||
|
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"name": string,
|
||||||
|
"epoch": integer,
|
||||||
|
"version": string,
|
||||||
|
"release": string,
|
||||||
|
"architecture": string,
|
||||||
|
"install_date": string,
|
||||||
|
"group": string,
|
||||||
|
"size": integer,
|
||||||
|
"license": string,
|
||||||
|
"signature": string,
|
||||||
|
"source_rpm": string,
|
||||||
|
"build_date": string,
|
||||||
|
"build_epoch": integer, # naive timestamp
|
||||||
|
"build_epoch_utc": integer, # Aware timestamp if timezone is UTC
|
||||||
|
"build_host": string,
|
||||||
|
"relocations": string,
|
||||||
|
"packager": string,
|
||||||
|
"vendor": string,
|
||||||
|
"url": string,
|
||||||
|
"summary": string,
|
||||||
|
"description": string
|
||||||
|
}
|
||||||
|
]
|
||||||
|
"""
|
||||||
|
for entry in proc_data:
|
||||||
|
|
||||||
|
int_list = ['epoch', 'size']
|
||||||
|
for key in int_list:
|
||||||
|
if key in entry:
|
||||||
|
try:
|
||||||
|
entry[key] = int(entry[key])
|
||||||
|
except (ValueError):
|
||||||
|
entry[key] = None
|
||||||
|
|
||||||
|
if 'build_date' in entry:
|
||||||
|
timestamp = jc.utils.timestamp(entry['build_date'])
|
||||||
|
entry['build_epoch'] = timestamp.naive
|
||||||
|
entry['build_epoch_utc'] = timestamp.utc
|
||||||
|
|
||||||
|
return proc_data
|
||||||
|
|
||||||
|
|
||||||
|
def parse(data, raw=False, quiet=False):
|
||||||
|
"""
|
||||||
|
Main text parsing function
|
||||||
|
|
||||||
|
Parameters:
|
||||||
|
|
||||||
|
data: (string) text data to parse
|
||||||
|
raw: (boolean) output preprocessed JSON if True
|
||||||
|
quiet: (boolean) suppress warning messages if True
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
|
||||||
|
List of Dictionaries. Raw or processed structured data.
|
||||||
|
"""
|
||||||
|
if not quiet:
|
||||||
|
jc.utils.compatibility(__name__, info.compatible)
|
||||||
|
|
||||||
|
raw_output = []
|
||||||
|
entry_obj = {}
|
||||||
|
last_entry = None
|
||||||
|
this_entry = None
|
||||||
|
desc_entry = False
|
||||||
|
description = []
|
||||||
|
|
||||||
|
if jc.utils.has_data(data):
|
||||||
|
|
||||||
|
for line in filter(None, data.splitlines()):
|
||||||
|
split_line = line.split(': ', maxsplit=1)
|
||||||
|
|
||||||
|
if split_line[0].startswith('Name') and len(split_line) == 2:
|
||||||
|
this_entry = split_line[1].strip()
|
||||||
|
|
||||||
|
if this_entry != last_entry:
|
||||||
|
if entry_obj:
|
||||||
|
entry_obj['description'] = ' '.join(description)
|
||||||
|
raw_output.append(entry_obj)
|
||||||
|
entry_obj = {}
|
||||||
|
last_entry = this_entry
|
||||||
|
desc_entry = False
|
||||||
|
|
||||||
|
if len(split_line) == 2:
|
||||||
|
entry_obj[split_line[0].strip().lower().replace(' ', '_')] = split_line[1].strip()
|
||||||
|
|
||||||
|
if line.startswith('Description :'):
|
||||||
|
desc_entry = True
|
||||||
|
description = []
|
||||||
|
continue
|
||||||
|
|
||||||
|
if desc_entry:
|
||||||
|
description.append(line)
|
||||||
|
|
||||||
|
entry_obj['description'] = ' '.join(description)
|
||||||
|
raw_output.append(entry_obj)
|
||||||
|
|
||||||
|
if raw:
|
||||||
|
return raw_output
|
||||||
|
else:
|
||||||
|
return process(raw_output)
|
5
man/jc.1
5
man/jc.1
@ -262,6 +262,11 @@ Key/Value file parser
|
|||||||
\fB--route\fP
|
\fB--route\fP
|
||||||
`route` command parser
|
`route` command parser
|
||||||
|
|
||||||
|
.TP
|
||||||
|
.B
|
||||||
|
\fB--rpm_qai\fP
|
||||||
|
`rpm -qai` command parser
|
||||||
|
|
||||||
.TP
|
.TP
|
||||||
.B
|
.B
|
||||||
\fB--shadow\fP
|
\fB--shadow\fP
|
||||||
|
1
tests/fixtures/centos-7.7/rpm-qai.json
vendored
Normal file
1
tests/fixtures/centos-7.7/rpm-qai.json
vendored
Normal file
File diff suppressed because one or more lines are too long
9961
tests/fixtures/centos-7.7/rpm-qai.out
vendored
Normal file
9961
tests/fixtures/centos-7.7/rpm-qai.out
vendored
Normal file
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user