Ejemplo n.º 1
0
def main():
    logging.basicConfig(level=logging.DEBUG, format='%(levelname)s [%(name)s] %(message)s')
    source = sys.argv[1]
    outdir = sys.argv[2]

    added, removed = gitutils.update_changed_artifacts([source], ['master'], [], outdir)
    logger.debug("Results: %d artifacts added, %d artifacts removed", added, removed)

    if added or removed:
        gitutils.delete_old_artifacts(outdir, 1)

        create_index(outdir, os.path.join(outdir, "addons.xml"))
        md5sum = hashlib.md5()
        with open(os.path.join(outdir, "addons.xml.gz"), 'rb') as f:
            md5sum.update(f.read())
        with open(os.path.join(outdir, "addons.xml.gz.md5"), 'wb') as f:
            f.write(md5sum.hexdigest())
Ejemplo n.º 2
0
def update_all_targets():
    remote_name = config.get('source_repo', 'remote_name')
    outdir = config.get('general', 'destination')
    version_to_keep = config.getint('general', 'version_to_keep')
    source_locations = config.get('source_repo', 'locations').replace('\n', '').split(',')

    if not outdir:
        logger.fatal("No destination specified.")
        return

    if config.getboolean('debug', 'fetch_remotes'):
        for path in source_locations:
            git.Repo(path).remotes[remote_name].fetch()

    current_targets = list(read_targets())

    # Delete targets that have been removed since last update
    previous_targets = [name for name in os.listdir(outdir) if not name.startswith('.')]
    removed_targets = set(previous_targets) - set([t.name for t in current_targets])
    for target in removed_targets:
        logger.debug("Deleting unknown target %s", target)
        shutil.rmtree(os.path.join(outdir, target))

    # Now update the active ones
    for target in current_targets:
        refs = [remote_name + '/' + branch for branch in target.branches]
        dest = os.path.join(outdir, target.name)
        logger.debug("============================ %s ============================", target.name)
        logger.debug("Branches: %s", target.branches)
        logger.debug("Min. versions: %s", target.min_versions)
        logger.debug("Destination: %s", dest)
        try:
            os.makedirs(dest)
        except OSError:
            pass

        added, removed = gitutils.update_changed_artifacts(source_locations, refs, target.min_versions, dest)
        logger.debug("Results: %d artifacts added, %d artifacts removed", added, removed)

        logger.debug("Purging old artifact version... To keep: %d", version_to_keep)
        gitutils.delete_old_artifacts(dest, version_to_keep)