def update_repo(repo, force=False): ctx.ui.info(_('* Updating repository: %s') % repo) index = Index() if ctx.repodb.has_repo(repo): repouri = ctx.repodb.get_repo(repo).indexuri.get_uri() try: index.read_uri_of_repo(repouri, repo) except pisi.file.AlreadyHaveException, e: ctx.ui.info(_('No updates available for repository %s.') % repo) if force: ctx.ui.info(_('Updating database at any rate as requested')) index.read_uri_of_repo(repouri, repo, force=force) else: return try: index.check_signature(repouri, repo) except pisi.file.NoSignatureFound, e: ctx.ui.warning(e)
def rebuild_repo(repo): ctx.ui.info(_('* Rebuilding \'%s\' named repo... ') % repo, noln=True) if ctx.repodb.has_repo(repo): repouri = URI(ctx.repodb.get_repo(repo).indexuri.get_uri()) indexname = repouri.filename() index = Index() indexpath = pisi.util.join_path(ctx.config.index_dir(), repo, indexname) tmpdir = os.path.join(ctx.config.tmp_dir(), 'index') pisi.util.clean_dir(tmpdir) pisi.util.check_dir(tmpdir) try: index.read_uri(indexpath, tmpdir, force=True) # don't look for sha1sum there except IOError, e: ctx.ui.warning( _("Input/Output error while reading %s: %s") % (indexpath, unicode(e))) return ctx.txn_proc(lambda txn: index.update_db(repo, txn=txn)) ctx.ui.info(_('OK.'))
def index(dirs=None, output='pisi-index.xml', skip_sources=False, skip_signing=False, non_recursive=False): """accumulate PISI XML files in a directory""" index = Index() index.distribution = None if not dirs: dirs = ['.'] for repo_dir in dirs: repo_dir = str(repo_dir) ctx.ui.info(_('* Building index of PISI files under %s') % repo_dir) index.index(repo_dir, skip_sources, non_recursive) if skip_signing: index.write(output, sha1sum=True, compress=File.bz2, sign=None) else: index.write(output, sha1sum=True, compress=File.bz2, sign=File.detached) ctx.ui.info(_('* Index file written'))