#!/usr/bin/python2.7
from __future__ import print_function
import gzip
import glob
import pgdb

from debian.deb822 import Deb822

from univention.repong.repo_lib_cfg import repocfg
from univention.repong.const import RE_SRC

cfg = repocfg()
dbhdl = pgdb.connect(host=cfg.pgdbhost, database=cfg.pgdbname, user=cfg.pgdbuser, password=cfg.pgdbpw)
dbcur = dbhdl.cursor()


missing = set()
for filename in glob.glob('/mnt/build-storage/upstream/debian/dists/buster/*/*/Packages*.gz'):
	with gzip.open('/mnt/build-storage/upstream/debian/dists/buster/contrib/binary-all/Packages.gz') as fd:
		for pkg in Deb822.iter_paragraphs(fd):
			if 'Debian Games Team' in pkg['Maintainer']:
				continue
			if pkg.get('Section', '').endswith('games'):
				continue

			ver = pkg['Version']
			try:
				src = pkg['Source']
				m = RE_SRC.match(src)
				if m:
					src, ver = m.groups()
			except LookupError:
				src = pkg['Package']

			dbcur.execute("SELECT 1 FROM src_rev WHERE sourcepackagename=%s AND version=%s LIMIT 1", (src, ver))
			if dbcur.rowcount != 1:
				rec = (src, ver)
				missing.add(rec)

missing.discard(('gemrb', '0.8.5-1'))

for src, ver in sorted(missing):
	print('repo_admin.py -F -r 5.0 -p {}_{}.dsc'.format(src, ver.split(':', 1)[1] if ':' in ver else ver))
