amprolla

devuan's apt repo merger
git clone git://parazyd.org/amprolla.git
Log | Files | Refs | README | LICENSE

commit fe689ce0c36c11c7f5c5e00b645a9ca82f3e4d07
parent 4316ce594f8e9d5d35c174b5daae7f33a02672e6
Author: parazyd <parazyd@dyne.org>
Date:   Fri, 26 May 2017 15:22:15 +0200

no regex

Diffstat:
Mlib/package.py | 2+-
Mlib/parse.py | 33++++++++++++++++++++++++++++-----
2 files changed, 29 insertions(+), 6 deletions(-)

diff --git a/lib/package.py b/lib/package.py @@ -3,7 +3,7 @@ from gzip import open as gzip_open from lib.parse import (parse_packages, parse_dependencies) from lib.config import packages_keys -def write_packages(packages, filename, sort=False): +def write_packages(packages, filename, sort=True): """ Writes `packages` to a file (per debian Packages format) If sort=True, the packages are sorted by name. diff --git a/lib/parse.py b/lib/parse.py @@ -17,14 +17,37 @@ def get_time(date): def get_date(relfile): - match = re.search('Date: .+', relfile) - if match: - line = relfile[match.start():match.end()] - relfile = line.split(': ')[1] - return relfile + date = None + contents = relfile.split('\n') + for line in contents: + if line.startswith('Date: '): + date = line.split(': ')[1] + break + return date def parse_release(reltext): + """ + Parses a Release file and returns a dict of the files we need + key = filename, value = sha256 checksum + """ + hashes = {} + + contents = reltext.split('\n') + + sha256 = False + for line in contents: + if sha256 is True and line != '': + filename = line.split()[2] + checksum = line.split()[0] + hashes[filename] = checksum + elif line.startswith('SHA256:'): + sha256 = True + + return hashes + + +def parse_release_re(reltext): _hash = {} match = re.search('SHA256:+', reltext) if match: