def Main(): parser = ArgumentParser() parser.add_argument('-s', '--statedir', help='path to directory with repository state') parser.add_argument('-U', '--rules', default='rules.yaml', help='path to name transformation rules yaml') parser.add_argument('-l', '--logfile', help='path to log file') parser.add_argument('-t', '--tag', action='append', help='only process repositories with this tag') parser.add_argument('-r', '--repository', action='append', help='only process repositories with this name') parser.add_argument('-S', '--no-shadow', action='store_true', help='treat shadow repositories as normal') parser.add_argument('-o', '--output', help='path to output directory') options = parser.parse_args() if not options.statedir: raise RuntimeError("please set --statedir") if not options.tag and not options.repository: raise RuntimeError("please set --tag or --repository") logger = StderrLogger() if options.logfile: logger = FileLogger(options.logfile) tags = [tag.split(',') for tag in options.tag] if options.tag else [] nametrans = NameTransformer(options.rules) repoman = RepositoryManager(options.statedir, enable_shadow=not options.no_shadow) packages = repoman.Deserialize(nametrans, tags=tags, repositories=options.repository, logger=logger) RepologyOrg(options.output, packages, repoman.GetNames(tags=tags, repositories=options.repository), repoman.GetMetadata(), logger) unmatched = nametrans.GetUnmatchedRules() if len(unmatched): wlogger = logger.GetPrefixed("WARNING: ") wlogger.Log("unmatched rules detected!") for rule in unmatched: wlogger.Log(rule) return 0
def Main(): parser = ArgumentParser() parser.add_argument('-s', '--statedir', help='path to directory with repository state') parser.add_argument('-U', '--rules', default='rules.yaml', help='path to name transformation rules yaml') parser.add_argument('-l', '--logfile', help='path to log file') parser.add_argument('-t', '--tag', action='append', help='only process repositories with this tag') parser.add_argument('-r', '--repository', action='append', help='only process repositories with this name') parser.add_argument('-S', '--no-shadow', action='store_true', help='treat shadow repositories as normal') parser.add_argument('-m', '--maintainer', help='filter by maintainer') parser.add_argument('-c', '--category', help='filter by category') parser.add_argument('-n', '--little-repos', help='filter by number of repos') parser.add_argument('-N', '--many-repos', help='filter by number of repos') parser.add_argument('-i', '--in-repository', help='filter by presence in repository') parser.add_argument('-x', '--not-in-repository', help='filter by absence in repository') parser.add_argument('-O', '--outdated-in-repository', help='filter by outdatedness in repository') parser.add_argument('-o', '--output', help='path to output file') options = parser.parse_args() if not options.statedir: raise RuntimeError("please set --statedir") if not options.tag and not options.repository: raise RuntimeError("please set --tag or --repository") logger = StderrLogger() if options.logfile: logger = FileLogger(options.logfile) tags = [tag.split(',') for tag in options.tag] if options.tag else [] nametrans = NameTransformer(options.rules) repoman = RepositoryManager(options.statedir, enable_shadow=not options.no_shadow) packages = repoman.Deserialize(nametrans, tags=tags, repositories=options.repository, logger=logger) packages = FilterPackages( packages, options.maintainer, options.category, int(options.many_repos) if options.many_repos is not None else None, int(options.little_repos) if options.little_repos is not None else None, options.in_repository, options.not_in_repository, options.outdated_in_repository) template = Template() rp = ReportProducer(template, "table.html") rp.RenderToFile(options.output, packages, repoman.GetNames(tags=tags, repositories=options.repository), repositories=repoman.GetMetadata()) unmatched = nametrans.GetUnmatchedRules() if len(unmatched): wlogger = logger.GetPrefixed("WARNING: ") wlogger.Log("unmatched rules detected!") for rule in unmatched: wlogger.Log(rule) return 0