import sys import os.path import getopt basedir = os.path.dirname(__file__) dbdir = os.path.join(basedir, 'db') libdir = os.path.join(basedir, 'lib') sys.path.append(libdir) import ldap import dblib metafile = os.path.join(basedir, 'meta.txt') def get_info(args): result = [] index = dblib.DB(metafile).uindex('name') if args: for arg in args: if arg in index: info = index[arg] result.append(info) else: for key in index: info = index[key] result.append(info) return result def debian_bugs(): url = 'ldap://bts2ldap.debian.net:10101' dn = 'dc=current,dc=bugs,dc=debian,dc=org' filter = '(debbugsPackage=wnpp)' server = ldap.initialize(url) entries = server.search_s(dn, ldap.SCOPE_SUBTREE, filter) result = {} for dn, entry in entries: id = entry['debbugsID'][0] status = entry['debbugsState'][0] result[id] = status return result def main(info, verbose): filename = os.path.join(dbdir, info.file) db = dblib.DB(filename) print 'Checking', info.file index = db.index('section') if 'bug' not in index: return bugs = index.bug for bug in bugs: dist = bug.dist id = bug.name bugrepr = '%s #%s' % (dist, id) if bug.dist == 'Debian': if id not in debian: print bugrepr, 'not in wnpp' continue status = debian[id] if status == 'done': print bugrepr, 'closed' elif verbose: print bugrepr, 'checked' print 'Querying Debian bugs...' debian = debian_bugs() print 'Done' if __name__ == '__main__': opts, args = getopt.getopt(sys.argv[1:], 'v') verbose = False for opt, value in opts: if opt == '-v': verbose = True infoset = get_info(args) for info in infoset: main(info, verbose)