amprolla

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

commit dcaa731f87ed924751ac5e25c5d6cc4a00f39e59
parent 152f4c434ca99792325707014be3e195a8d9cc88
Author: parazyd <parazyd@dyne.org>
Date:   Thu,  1 Jun 2017 00:46:55 +0200

rename amprolla-init to amprolla_init.py and make it a valid module

Diffstat:
Damprolla-init | 63---------------------------------------------------------------
Aamprolla_init.py | 74++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 74 insertions(+), 63 deletions(-)

diff --git a/amprolla-init b/amprolla-init @@ -1,63 +0,0 @@ -#!/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] - - urls = [] - - for i in config.suites: - for j in config.suites[i]: - baseurl = join(repodata['host'], repodata['dists']) - suite = j - if repodata['aliases'] is True: - if j in config.aliases[repodata['name']]: - suite = config.aliases[repodata['name']][j] - elif repodata['skipmissing'] is True: - continue - skips = ['jessie-security', 'ascii-security'] # XXX: hack - if repo == 'debian' and j in skips: - continue - pair = (join(baseurl, suite), - join(baseurl.replace(repodata['host'], - config.spooldir), suite)) - urls.append(pair) - - return urls - - -for dist in config.repos: - dlurls = pop_dirs(dist) - for url in dlurls: - for file in config.mainrepofiles: - 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) diff --git a/amprolla_init.py b/amprolla_init.py @@ -0,0 +1,74 @@ +#!/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] + + urls = [] + + for i in config.suites: + for j in config.suites[i]: + baseurl = join(repodata['host'], repodata['dists']) + suite = j + if repodata['aliases'] is True: + if j in config.aliases[repodata['name']]: + suite = config.aliases[repodata['name']][j] + elif repodata['skipmissing'] is True: + continue + skips = ['jessie-security', 'ascii-security'] # hack + if repo == 'debian' and j in skips: + continue + pair = (join(baseurl, suite), + join(baseurl.replace(repodata['host'], + config.spooldir), suite)) + urls.append(pair) + + return urls + + +def main(): + """ + Loops through all repositories, and downloads their *Release* files, along + with all the files listed within those Release files. + """ + for dist in config.repos: + dlurls = pop_dirs(dist) + for url in dlurls: + for file in config.mainrepofiles: + 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(): + 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) + + +if __name__ == '__main__': + main()