From 55bf2271d7cbeeebc02e28a28ae3374aca19d339 Mon Sep 17 00:00:00 2001 From: Helmut Grohne Date: Fri, 12 Jul 2013 15:12:09 +0200 Subject: importpkg: split process_package to process_control --- importpkg.py | 32 +++++++++++++++++--------------- 1 file changed, 17 insertions(+), 15 deletions(-) (limited to 'importpkg.py') diff --git a/importpkg.py b/importpkg.py index 6e22b54..5929455 100755 --- a/importpkg.py +++ b/importpkg.py @@ -61,6 +61,22 @@ def get_hashes(tar): hashes[hashobj.name] = hashvalue yield (elem.name, elem.size, hashes) +def process_control(control_contents): + control = deb822.Packages(control_contents) + package = control["package"].encode("ascii") + try: + source = control["source"].encode("ascii").split()[0] + except KeyError: + source = package + version = control["version"].encode("ascii") + architecture = control["architecture"].encode("ascii") + + depends = set(dep[0]["name"].encode("ascii") + for dep in control.relations.get("depends", ()) + if len(dep) == 1) + return dict(package=package, source=source, version=version, + architecture=architecture, depends=depends) + def process_package(filelike): af = ArReader(filelike) af.read_magic() @@ -82,21 +98,7 @@ def process_package(filelike): if state != "control": raise ValueError("duplicate control file") state = "control_file" - control = tf.extractfile(elem).read() - control = deb822.Packages(control) - package = control["package"].encode("ascii") - try: - source = control["source"].encode("ascii").split()[0] - except KeyError: - source = package - version = control["version"].encode("ascii") - architecture = control["architecture"].encode("ascii") - - depends = control.relations.get("depends", []) - depends = set(dep[0]["name"].encode("ascii") - for dep in depends if len(dep) == 1) - yield dict(package=package, source=source, version=version, - architecture=architecture, depends=depends) + yield process_control(tf.extractfile(elem).read()) break continue elif name == "data.tar.gz": -- cgit v1.2.3 From 69c7a945120e95b5a389c2708994e907c7ca82e0 Mon Sep 17 00:00:00 2001 From: Helmut Grohne Date: Fri, 12 Jul 2013 15:24:09 +0200 Subject: importpkg: simplify state logic --- importpkg.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) (limited to 'importpkg.py') diff --git a/importpkg.py b/importpkg.py index 5929455..56e03ae 100755 --- a/importpkg.py +++ b/importpkg.py @@ -81,12 +81,11 @@ def process_package(filelike): af = ArReader(filelike) af.read_magic() state = "start" - while state not in ("finished", "skipped"): + while True: try: name = af.read_entry() except EOFError: - if state != "finished": - raise ValueError("data.tar not found") + raise ValueError("data.tar not found") if name == "control.tar.gz": if state != "start": raise ValueError("unexpected control.tar.gz") @@ -119,8 +118,8 @@ def process_package(filelike): print("warning: skipping filename with encoding error") continue # skip files with non-utf8 encoding for now yield dict(name=name, size=size, hashes=hashes) - state = "finished" yield "commit" + break def main(): yaml.safe_dump_all(process_package(sys.stdin), sys.stdout) -- cgit v1.2.3