import sys import os.path basedir = os.path.dirname(__file__) dbdir = os.path.join(basedir, 'db') libdir = os.path.join(basedir, 'lib') sys.path.append(libdir) import dblib import distlib 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 main(info): filename = os.path.join(dbdir, info.file) db = dblib.DB(filename) projects = db.index('project', 'dist') dists = distlib.get_dists(info.dists) sorted = [] for project in projects: rows = projects[project] for dist in dists: if dist not in rows: continue assert len(rows[dist]) == 1 row = rows[dist][0] sorted.append(row) if db.rows != sorted: db.rows = sorted db.write() print 'Updated', info.file if __name__ == '__main__': args = sys.argv[1:] infoset = get_info(args) for info in infoset: main(info)