URI: 
       tpep8/pylint fixes, safety checks in write_packages() and write_release() - amprolla - devuan's apt repo merger
  HTML git clone git://parazyd.org/amprolla.git
   DIR Log
   DIR Files
   DIR Refs
   DIR README
   DIR LICENSE
       ---
   DIR commit 6be10ca7af5168dcfbc39b64c50fdcaee251ca75
   DIR parent 1d9670ade4cc7c28dfd1c6de9bc14ca099be0c9d
  HTML Author: parazyd <parazyd@dyne.org>
       Date:   Mon,  5 Jun 2017 22:46:46 +0200
       
       pep8/pylint fixes, safety checks in write_packages() and write_release()
       
       Diffstat:
         M README.md                           |       6 ++++--
         M amprolla_init.py                    |       6 +++---
         M amprolla_merge.py                   |      15 +++++++--------
         M lib/config.py                       |       9 ++++-----
         M lib/package.py                      |      11 ++++++-----
         M lib/parse.py                        |       2 +-
         M lib/release.py                      |      10 ++++++----
       
       7 files changed, 31 insertions(+), 28 deletions(-)
       ---
   DIR diff --git a/README.md b/README.md
       t@@ -1,6 +1,8 @@
        amprolla
        ========
        
       +<img src="contrib/amprolla.png" width="64">
       +
        amprolla is an apt repository merger originally intended for use with
        the [Devuan](https://devuan.org) infrastructure. This version is the
        third iteration of the software. The original version of amprolla was
       t@@ -10,10 +12,10 @@ finished - therefore this version has emerged.
        Dependencies
        ------------
        
       -### Devuan
       +### Devuan Ascii/Debian Stretch
        
        ```
       -gnupg2 python3-requests, python3-gnupg
       +gnupg2 python3-requests python3-gnupg
        ```
        
        ### Gentoo:
   DIR diff --git a/amprolla_init.py b/amprolla_init.py
       t@@ -67,9 +67,9 @@ def main():
                    for k in release_contents:
                        # if k.endswith('/binary-armhf/Packages.gz'):
                        # if k.endswith('Packages.gz'):
       -                    remote = join(url[0], k)
       -                    local = join(url[1], k)
       -                    download(remote, local)
       +                remote = join(url[0], k)
       +                local = join(url[1], k)
       +                download(remote, local)
        
        
        if __name__ == '__main__':
   DIR diff --git a/amprolla_merge.py b/amprolla_merge.py
       t@@ -7,7 +7,7 @@ Amprolla main module
        
        from sys import argv
        from os.path import basename, join
       -from time import time
       +# from time import time
        
        from lib.package import (write_packages, load_packages_file,
                                 merge_packages_many)
       t@@ -64,7 +64,7 @@ def merge(packages_list):
            """
            Merges the Packages/Sources files given in the package list
            """
       -    t1 = time()
       +    # t1 = time()
        
            all_repos = []
            print('Loading packages: %s' % packages_list)
       t@@ -81,7 +81,6 @@ def merge(packages_list):
            if debian:
                all_repos.append({'name': 'debian', 'packages': debian})
        
       -
            if basename(packages_list[0]) == 'Packages.gz':
                print('Merging packages')
                src = False
       t@@ -102,8 +101,8 @@ def merge(packages_list):
            else:
                write_packages(new_pkgs, new_out)
        
       -    t2 = time()
       -    print('time:', t2-t1)
       +    # t2 = time()
       +    # print('time:', t2-t1)
        
        
        def main(packages_file):
       t@@ -113,7 +112,7 @@ def main(packages_file):
            # print(packages_file)
            to_merge = prepare_merge_dict()
        
       -    #tt1 = time()
       +    # tt1 = time()
            for suite in to_merge:
                pkg_list = []
                for rep in to_merge[suite]:
       t@@ -124,8 +123,8 @@ def main(packages_file):
        
                merge(pkg_list)
        
       -    #tt2 = time()
       -    #print('total time:', tt2-tt1)
       +    # tt2 = time()
       +    # print('total time:', tt2-tt1)
        
        
        if __name__ == '__main__':
   DIR diff --git a/lib/config.py b/lib/config.py
       t@@ -7,7 +7,7 @@ amprolla configuration file
        from hashlib import md5, sha1, sha256
        
        spooldir = './spool'
       -signingkey = 'B876CB44FA1B0274'
       +signingkey = 'CA608125'
        mergedir = './merged'
        mergesubdir = 'dists'
        banpkgs = {'systemd', 'systemd-sysv'}
       t@@ -83,15 +83,15 @@ categories = ['main', 'contrib', 'non-free']
        
        arches = [
            'source',
       -    # 'binary-all',
       +    'binary-all',
            # 'binary-alpha',
       -    # 'binary-amd64',
       +    'binary-amd64',
            # 'binary-arm64',
            # 'binary-armel',
            'binary-armhf',
            # 'binary-hppa',
            # 'binary-hurd-i386',
       -    # 'binary-i386',
       +    'binary-i386',
            # 'binary-ia64',
            # 'binary-kfreebsd-amd64',
            # 'binary-kfreebsd-i386',
       t@@ -175,7 +175,6 @@ packages_keys = [
            'Npp-File',
            'Npp-Mimetype',
            'Npp-Name',
       -    'Origin',
            'Original-Maintainer',
            'Original-Source-Maintainer',
            'Package-Type',
   DIR diff --git a/lib/package.py b/lib/package.py
       t@@ -26,12 +26,13 @@ def write_packages(packages, filename, sort=True, sources=False):
            if sources:
                bsnm = 'Sources.gz'
            rl = filename.replace(bsnm, 'Release')
       -    if not os.path.isfile(rl):
       -        copyfile(rl.replace(mergedir, join(spooldir, 'devuan')), rl)
       +    sprl = rl.replace(mergedir, join(spooldir, 'devuan'))
       +    if not os.path.isfile(rl) and os.path.isfile(sprl):
       +        copyfile(sprl, rl)
        
            gzf = gzip_open(filename, 'w')
            xzf = lzma_open(filename.replace('.gz', '.xz'), 'w')
       -    f = open(filename.replace('.gz', ''), 'w')
       +    f = open(filename.replace('.gz', ''), 'wb')
        
            pkg_items = packages.items()
            if sort:
       t@@ -48,10 +49,10 @@ def write_packages(packages, filename, sort=True, sources=False):
                        s = '%s: %s\n' % (key, pkg_contents[key])
                        gzf.write(s.encode('utf-8'))
                        xzf.write(s.encode('utf-8'))
       -                f.write(s)
       +                f.write(s.encode('utf-8'))
                gzf.write(b'\n')
                xzf.write(b'\n')
       -        f.write('\n')
       +        f.write(b'\n')
        
            gzf.close()
            xzf.close()
   DIR diff --git a/lib/parse.py b/lib/parse.py
       t@@ -48,6 +48,7 @@ def parse_release(reltext):
        
            return hashes
        
       +
        def parse_release_head(reltext):
            """
            Parses the header of the release file to grab potentially needed
       t@@ -71,7 +72,6 @@ def parse_release_head(reltext):
            return metadata
        
        
       -
        def parse_release_re(reltext):
            """
            Parses a Release file using regular expressions and returns a dict
   DIR diff --git a/lib/release.py b/lib/release.py
       t@@ -5,7 +5,7 @@ Release file functions and helpers
        """
        
        from datetime import datetime, timedelta
       -from os.path import getsize
       +from os.path import getsize, isfile
        import gnupg
        
        from lib.config import release_keys, checksums, signingkey
       t@@ -43,14 +43,16 @@ def write_release(oldrel, newrel, filelist, r):
            for csum in checksums:
                new.write('%s:\n' % csum['name'])
                for f in filelist:
       -            cont = open(f, 'rb').read()
       -            new.write(' %s %8s %s\n' % (csum['f'](cont).hexdigest(),
       -                                        getsize(f), f.replace(r+'/', '')))
       +            if isfile(f):
       +                cont = open(f, 'rb').read()
       +                new.write(' %s %8s %s\n' % (csum['f'](cont).hexdigest(),
       +                                            getsize(f), f.replace(r+'/', '')))
        
            new.close()
        
            sign_release(newrel)
        
       +
        def sign_release(infile):
            """
            Signs both the clearsign and the detached signature of a Release file