1
0
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:
Matt J
2021-12-20 14:29:50 -08:00
parent 46faac1a12
commit bc520fcbcd
2 changed files with 63 additions and 53 deletions

View File

@ -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)

File diff suppressed because one or more lines are too long