tadd notes, download files hashed in Release - amprolla - devuan's apt repo merger
 (HTM) git clone git://parazyd.org/amprolla.git
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit 4bf08220da984c30a0e94383befc606fadc293b9
 (DIR) parent a62802d37c2851b02ca789cc371a3b9fd7618ecb
 (HTM) Author: parazyd <parazyd@dyne.org>
       Date:   Sat, 27 May 2017 23:27:08 +0200
       
       add notes, download files hashed in Release
       
       Diffstat:
         M amprolla-init                       |      23 +++++++++++++++++++++++
         M lib/net.py                          |       2 +-
       
       2 files changed, 24 insertions(+), 1 deletion(-)
       ---
 (DIR) diff --git a/amprolla-init b/amprolla-init
       t@@ -1,12 +1,26 @@
        #!/usr/bin/env python3
       +"""
       +This module will download the initial Release files used to populate
       +the spooldir, along with all the files hashed inside the Release files
       +"""
        
        from os.path import join
        
        import lib.config as config
        from lib.net import download
       +from lib.parse import parse_release
        
        
        def pop_dirs(repo):
       +    """
       +    Crawls through the directories to come up with complete needed
       +    directory structure.
       +    Returns a list of tuples holding the remote and local locations
       +    of the files
       +    Example:
       +        (http://auto.mirror.devuan.org/devuan/dists/jessie/main/binary-armhf/Packages.gz,
       +         ./spool/devuan/dists/unstable/contrib/binary-armhf/Packages.gz)
       +    """
            print('Downloading %s directory structure' % repo)
            repodata = config.repos[repo]
        
       t@@ -31,6 +45,7 @@ def pop_dirs(repo):
        
            return urls
        
       +
        for dist in config.repos:
            dlurls = pop_dirs(dist)
            for url in dlurls:
       t@@ -38,3 +53,11 @@ for dist in config.repos:
                    remote = join(url[0], file)
                    local = join(url[1], file)
                    download(remote, local)
       +
       +        release_contents = open(join(url[1], 'Release')).read()
       +        release_contents = parse_release(release_contents)
       +        for k in release_contents.keys():
       +            if k.endswith('/binary-armhf/Packages.gz'):
       +                remote = join(url[0], k)
       +                local = join(url[1], k)
       +                download(remote, local)
 (DIR) diff --git a/lib/net.py b/lib/net.py
       t@@ -9,7 +9,7 @@ from .log import die, notice, warn, cleanexit
        
        
        def download(url, path):
       -    print("\tdownloading: %s\n\tto: %s" % (url, path))
       +    print("downloading: %s\nto: %s" % (url, path))
            r = requests.get(url, stream=True)
            if r.status_code == 404:
                warn("download of %s failed: not found!" % url)