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())
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)