mirror of
https://github.com/kellyjonbrazil/jc.git
synced 2025-06-19 00:17:51 +02:00
added zipinfo.py nested version
This commit is contained in:
@ -20,48 +20,61 @@ Usage (module):
|
|||||||
|
|
||||||
Schema:
|
Schema:
|
||||||
|
|
||||||
[
|
{
|
||||||
{
|
"archive": [
|
||||||
"flags": string,
|
{
|
||||||
"zipversion": float,
|
"name": string,
|
||||||
"zipunder": string
|
"size": integer,
|
||||||
"size": integer,
|
"size_unit": string,
|
||||||
"type": string,
|
"number_entries": integer,
|
||||||
"method": string,
|
"number_files": integer,
|
||||||
"date": string,
|
"bytes_uncompressed": integer,
|
||||||
"time": string,
|
"bytes_compressed": integer,
|
||||||
"filename": string
|
"contents": [
|
||||||
"archive": string,
|
{
|
||||||
"bytes_compressed": integer,
|
"flags": string,
|
||||||
"bytes_uncompressed": integer,
|
"zipversion": float,
|
||||||
"number_entries": integer,
|
"zipunder": string
|
||||||
"number_files": integer,
|
"size": integer,
|
||||||
"size_unit": string,
|
"type": string,
|
||||||
}
|
"method": string,
|
||||||
]
|
"date": string,
|
||||||
|
"time": string,
|
||||||
|
"filename": string
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
Examples:
|
Examples:
|
||||||
|
|
||||||
$ zipinfo log4j-core-2.16.0.jar | jc --zipinfo -p
|
$ zipinfo log4j-core-2.16.0.jar | jc --zipinfo -p
|
||||||
[
|
|
||||||
{
|
{
|
||||||
"flags": "-rw-r--r--",
|
"archive": [
|
||||||
"zipversion": "2.0",
|
{
|
||||||
"zipunder": "unx",
|
"name": "log4j-core-2.16.0.jar",
|
||||||
"size": "1789565",
|
"size": "1789565",
|
||||||
"type": "bl",
|
"size_unit": "bytes,",
|
||||||
"method": "defN",
|
"number_entries": "1218",
|
||||||
"date": "21-Dec-12",
|
"number_files": "1218",
|
||||||
"time": "23:35",
|
"bytes_uncompressed": "3974141",
|
||||||
"filename": "META-INF/MANIFEST.MF",
|
"bytes_compressed": "1515455",
|
||||||
"archive": "log4j-core-2.16.0.jar",
|
"contents": [
|
||||||
"bytes_compressed": "1515455",
|
{
|
||||||
"bytes_uncompressed": "3974141",
|
"flags": "-rw-r--r--",
|
||||||
"number_entries": "1218",
|
"zipversion": "2.0",
|
||||||
"number_files": "1218",
|
"zipunder": "unx",
|
||||||
"size_unit": "bytes,"
|
"size": "19810",
|
||||||
},
|
"type": "bl",
|
||||||
|
"method": "defN",
|
||||||
|
"date": "21-Dec-12",
|
||||||
|
"time": "23:35",
|
||||||
|
"filename": "META-INF/MANIFEST.MF"
|
||||||
|
},
|
||||||
...
|
...
|
||||||
|
|
||||||
"""
|
"""
|
||||||
import jc.utils
|
import jc.utils
|
||||||
import jc.parsers.universal
|
import jc.parsers.universal
|
||||||
@ -122,13 +135,12 @@ def parse(data, raw=False, quiet=False):
|
|||||||
|
|
||||||
if jc.utils.has_data(data):
|
if jc.utils.has_data(data):
|
||||||
|
|
||||||
archive_info = {}
|
archive_info = []
|
||||||
contents_list = []
|
|
||||||
|
|
||||||
# 1st line
|
# 1st line
|
||||||
line = datalist.pop(0)
|
line = datalist.pop(0)
|
||||||
parsed_line = line.split()
|
parsed_line = line.split()
|
||||||
archive = parsed_line[1]
|
name = parsed_line[1]
|
||||||
|
|
||||||
# 2nd line
|
# 2nd line
|
||||||
line = datalist.pop(0)
|
line = datalist.pop(0)
|
||||||
@ -144,22 +156,20 @@ def parse(data, raw=False, quiet=False):
|
|||||||
bytes_uncompressed = parsed_line[2]
|
bytes_uncompressed = parsed_line[2]
|
||||||
bytes_compressed = parsed_line[5]
|
bytes_compressed = parsed_line[5]
|
||||||
|
|
||||||
archive_info = {'archive': archive,
|
|
||||||
'bytes_compressed': bytes_compressed,
|
|
||||||
'bytes_uncompressed': bytes_uncompressed,
|
|
||||||
'number_entries': number_entries,
|
|
||||||
'number_files': number_files,
|
|
||||||
'size': size,
|
|
||||||
'size_unit': size_unit}
|
|
||||||
|
|
||||||
# Add header row for parsing
|
# Add header row for parsing
|
||||||
datalist[:0] = ['flags zipversion zipunder size type method date time filename']
|
datalist[:0] = ['flags zipversion zipunder size type method date time filename']
|
||||||
|
|
||||||
contents_list = jc.parsers.universal.simple_table_parse(datalist)
|
contents_list = jc.parsers.universal.simple_table_parse(datalist)
|
||||||
|
|
||||||
for line in contents_list:
|
archive_info.append({'name': name,
|
||||||
line.update(archive_info)
|
'size': size,
|
||||||
|
'size_unit': size_unit,
|
||||||
|
'number_entries': number_entries,
|
||||||
|
'number_files': number_files,
|
||||||
|
'bytes_uncompressed': bytes_uncompressed,
|
||||||
|
'bytes_compressed': bytes_compressed,
|
||||||
|
'contents': contents_list})
|
||||||
|
|
||||||
|
raw_output['archive'] = archive_info
|
||||||
|
|
||||||
raw_output = contents_list
|
|
||||||
|
|
||||||
return raw_output if raw else _process(raw_output)
|
return raw_output if raw else _process(raw_output)
|
||||||
|
2
tests/fixtures/rhel-8/zipinfo.json
vendored
2
tests/fixtures/rhel-8/zipinfo.json
vendored
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user