This commit is contained in:
Marc Beninca 2021-10-10 01:18:03 +02:00 committed by Marc Beninca
parent 82f5290c18
commit 6afb15d260
2 changed files with 38 additions and 3 deletions

View file

@ -1,8 +1,12 @@
import io
import os
import tarfile
import package
FILES = 'files'
PACKAGE = 'desc'
class Catalog:
def __init__(self, binary):
@ -12,6 +16,17 @@ class Catalog:
def load(self):
f = io.BytesIO(self.binary)
archive = tarfile.open(fileobj=f)
m = {}
packages = {}
for member in archive.getmembers():
print(member)
directory, *file = member.name.split(os.sep)
if file:
d = m[directory]
d[file[0]] = archive.extractfile(member).read()
if len(d) == 2:
p = package.Package(d[PACKAGE], d[FILES])
packages[p.name] = p
else:
m[directory] = {}
archive.close()
self.packages = packages

View file

@ -1,3 +1,23 @@
import os
CHARSET = 'u8'
KEY = '%'
SEPARATOR = f'{os.linesep}{os.linesep}'
class Package:
def __init__(self):
pass
def __init__(self, package, files):
p = package.decode(CHARSET).strip()
f = files.decode(CHARSET).strip()
text = f'{p}{SEPARATOR}{f}'
for item in text.split(SEPARATOR):
line, *lines = item.split(os.linesep)
key = line.split(KEY)[1].lower()
if len(lines) == 1:
value = lines[0]
else:
value = lines
setattr(self, key, value)
print()
print(key)
print(value)