Browse Source

PEP8 fixes

keep-around/e977c9e07f177e8bc2b51265de1bc93475397f61
Merlijn Wajer 6 years ago
parent
commit
5df8c5c98b
  1. 12
      amprolla-init
  2. 8
      lib/config.py
  3. 48
      lib/delta.py
  4. 9
      lib/fs.py
  5. 4
      lib/log.py
  6. 5
      lib/net.py

12
amprolla-init

@ -3,10 +3,7 @@
# see LICENSE file for copyright and license details
import os
#import re
import requests
import sys
import threading
import lib.config as config
import lib.delta as delta
@ -20,8 +17,10 @@ def popDirs():
notice("creating initial directory structure")
for i in range(0, len(paths)):
baseurl = "http://" + "/".join([config.repos[i]["host"], config.repos[i]["dists"]])
basepath = "/".join([config.amprolla["spooldir"], config.repos[i]["dists"]])
baseurl = "http://" + \
"/".join([config.repos[i]["host"], config.repos[i]["dists"]])
basepath = "/".join([config.amprolla["spooldir"],
config.repos[i]["dists"]])
for j in paths[config.repos[i]["name"]]:
suiteurl = "/".join([baseurl, j])
@ -38,7 +37,7 @@ def popDirs():
try:
with open(suitepath + "/Release", "rb") as frel:
rels = frel.read()
relmap = delta.parseRel(rels)
relmap = delta.parse_release(rels)
except IOError:
warn("no Release file for %s" % suitepath)
@ -55,6 +54,7 @@ def popDirs():
except TypeError:
warn("Typeerror")
def merge():
for i in config.amprolla["mergedsubdirs"]:
mdir = "/".join([config.amprolla["mergedir"], i])

8
lib/config.py

@ -6,13 +6,13 @@ amprolla = {
"spooldir": "./spool",
"sign_key": "fa1b0274",
"mergedir": "./merged",
"mergedsubdirs": [ "dists", "pool"],
"banpkgs": [ 'systemd', 'systemd-sysv' ]
"mergedsubdirs": ["dists", "pool"],
"banpkgs": ['systemd', 'systemd-sysv']
#"checksums": [ 'md5sum', 'sha1', 'sha256', 'sha512' ]
}
repos = {
## key name is priority, first is 0
# key name is priority, first is 0
0: {
"name": "DEVUAN",
"host": "packages.devuan.org",
@ -73,7 +73,7 @@ aliases = {
}
}
categories = [ 'main', 'contrib', 'non-free' ]
categories = ['main', 'contrib', 'non-free']
releases = {

48
lib/delta.py

@ -11,10 +11,12 @@ import time
import config
from log import notice
def getTime(date):
def get_time(date):
return time.mktime(time.strptime(date, "%a, %d %b %Y %H:%M:%S %Z"))
def getDate(relfile):
def get_date(relfile):
match = re.search('Date: .+', relfile)
if match:
line = relfile[match.start():match.end()]
@ -22,36 +24,36 @@ def getDate(relfile):
return relfile
def parseRel(reltext):
def parse_release(reltext):
hash = {}
match = re.search('SHA256:+', reltext)
if match:
line = reltext[match.start():-1]
for i in line.split('\n'):
if i == 'SHA256:' or i == '\n': # XXX: hack
if i == 'SHA256:' or i == '\n': # XXX: hack
continue
hash[(i.split()[2])] = i.split()[0]
return hash
def pkgParse(entry):
def parse_package(entry):
# for parsing a single package
values = re.split('\\n[A-Z].+?:', entry)[0:]
values[0] = values[0].split(':')[1]
keys = re.findall('\\n[A-Z].+?:', '\n'+entry)
keys = re.findall('\\n[A-Z].+?:', '\n' + entry)
both = zip(keys, values)
return {key.lstrip(): value for key, value in both}
def parsePkgs(pkgtext):
def parse_packages(pkgtext):
# this parses our package file into a hashmap
# key: package name, value: entire package paragraph as a hashmap
map = {}
# TODO: consider also this approach
#def parsePkgs(pkgfilepath):
#with gzip.open(pkgfilepath, "rb") as f:
# pkgs = f.read().split("\n\n")
# def parse_packages(pkgfilepath):
# with gzip.open(pkgfilepath, "rb") as f:
# pkgs = f.read().split("\n\n")
pkgs = pkgtext.split("\n\n")
for pkg in pkgs:
@ -59,11 +61,11 @@ def parsePkgs(pkgtext):
if m:
line = pkg[m.start():m.end()]
key = line.split(': ')[1]
map[key] = pkgParse(pkg)
map[key] = parse_package(pkg)
return map
def printPkg(map, pkgname):
def print_package(map, pkgname):
try:
pkg = ast.literal_eval(map[pkgname])
sin = []
@ -75,32 +77,32 @@ def printPkg(map, pkgname):
log.die("nonexistent package")
def dictCompare(d1, d2):
def compare_dict(d1, d2):
d1_keys = set(d1.keys())
d2_keys = set(d2.keys())
intersect_keys = d1_keys.intersection(d2_keys)
modified = {o : (d1[o], d2[o]) for o in intersect_keys if d1[o] != d2[o]}
modified = {o: (d1[o], d2[o]) for o in intersect_keys if d1[o] != d2[o]}
return modified
def compareRel(oldrel, newrel):
def compare_release(oldrel, newrel):
r = requests.get(newrel)
new = r.text
with open(oldrel, "rb") as f:
old = f.read()
oldtime = getTime(getDate(old))
newtime = getTime(getDate(new))
oldtime = get_time(get_date(old))
newtime = get_time(get_date(new))
if newtime > oldtime:
notice("Update available")
newhashes = parseRel(new)
oldhashes = parseRel(old)
changes = dictCompare(newhashes, oldhashes)
newhashes = parse_release(new)
oldhashes = parse_release(old)
changes = compare_dict(newhashes, oldhashes)
# k = pkg name, v = sha256
return changes
#relmap = compareRel("../spool/dists/jessie/updates/Release", "http://security.debian.org/dists/jessie/updates/Release")
#print relmap
#for k,v in relmap.iteritems():
# relmap = compare_release("../spool/dists/jessie/updates/Release", "http://security.debian.org/dists/jessie/updates/Release")
# print relmap
# for k,v in relmap.iteritems():
# print(k)

9
lib/fs.py

@ -4,6 +4,7 @@
import config
def crawl():
paths = {}
for i in range(0, len(config.repos)):
@ -12,22 +13,22 @@ def crawl():
sts = []
for j in config.suites:
for k in config.suites[j]:
if config.repos[i]["aliases"] == True:
if config.repos[i]["aliases"] is True:
if repo in config.aliases:
try:
suite = config.aliases[repo][k]
except:
if config.repos[i]["skipmissing"] == True:
if config.repos[i]["skipmissing"] is True:
continue
else:
suite = k
else:
suite = k
skips = [ "jessie-security", "ascii-security" ] ## XXX: HACK:
skips = ["jessie-security", "ascii-security"] # XXX: HACK:
if repo == "DEBIAN" and suite in skips:
continue
sts.append(suite)
paths[repo] = sts
return paths
#print(crawl())
# print(crawl())

4
lib/log.py

@ -4,18 +4,22 @@
import sys
def die(msg):
print("\033[1;31m[E] %s\033[0m" % msg)
sys.exit(1)
def notice(msg):
print("\033[1;32m(*) %s\033[0m" % msg)
return
def warn(msg):
print("\033[1;33m[W] %s\033[0m" % msg)
return
def cleanexit():
notice("exiting cleanly...")
sys.exit(0)

5
lib/net.py

@ -18,9 +18,10 @@ def download(url, path):
die("fail!")
with open(path, "wb") as f:
for chunk in r.iter_content(chunk_size=1024): # XXX: should be more on gbit servers
# XXX: should be more on gbit servers
for chunk in r.iter_content(chunk_size=1024):
if chunk:
f.write(chunk)
#f.flush()
# f.flush()
print("\033[1;32m . done\033[0m")
return

Loading…
Cancel
Save