def dump(config, savedir, symlink=False): if 'active' in config and config['active'] in ('false', 'off', '0'): return if 'src' in config: src = config['src'] else: src = config['dir'] if 'ignore' in config: ignore = ignore_patterns( *[p.strip() for p in config['ignore'].split(',')]) else: ignore = None run_hook('pre-create-code', [config['project'], src], logger=logger, exit_on_error=True) makedirs_silent(savedir) dest = os.path.join(savedir, config['project']) if symlink: logger.info("symlink '%(src)s' to '%(dest)s'" % { 'src': src, 'dest': dest }) symlink_silent(src, dest) else: logger.info("copy '%(src)s' to '%(dest)s'" % { 'src': src, 'dest': dest }) copytree(src, dest, symlinks=True, ignore=ignore) run_hook('post-create-code', [config['project'], src], logger=logger)
def dump(config, savedir, symlink=False): if 'active' in config and config['active'] in ('false', 'off', '0'): return if 'src' in config: src = config['src'] else: src = config['dir'] if 'ignore' in config: ignore = ignore_patterns(*[p.strip() for p in config['ignore'].split(',')]) else: ignore = None run_hook('pre-create-code', [config['project'], src], logger=logger, exit_on_error=True) makedirs_silent(savedir) dest = os.path.join(savedir, config['project']) if symlink: logger.info("symlink '%(src)s' to '%(dest)s'" % {'src': src, 'dest': dest}) symlink_silent(src, dest) else: logger.info("copy '%(src)s' to '%(dest)s'" % {'src': src, 'dest': dest}) copytree(src, dest, symlinks=True, ignore=ignore) run_hook('post-create-code', [config['project'], src], logger=logger)
def dump(config, savedir, symlink=False): if 'active' in config and config['active'] in ('false', 'off', '0'): return dirs = get_dirs(config['dirs']) if 'ignore' in config: ignore = ignore_patterns(*[p.strip() for p in config['ignore'].split(',')]) else: ignore = None for src in dirs: if src.startswith('/'): dest = os.path.join(savedir, src[1:]) if src.endswith('/'): dest = dest[:-1] else: logger.error("'%s' is not an absolute path" % src) sys.exit(1) if symlink: makedirs_silent(os.path.dirname(dest)) logger.info("symlink '%(src)s' to '%(dest)s'" % {'src': src, 'dest': dest}) symlink_silent(src, dest) else: logger.info("copying '%(src)s' to '%(dest)s'" % {'src': src, 'dest': dest}) copytree(src, dest, symlinks=True, ignore=ignore, update_rights=True)
def create_update_archive(base, config): # FIXME: add version ? logger.debug("create '%(base)s' directory" % {'base': base}) makedirs_silent(base) configdst = os.path.join(base, 'deploy.cfg') logger.debug("writing full config to '%(configdst)s'" % {'configdst': configdst}) with open(configdst, 'wb') as configfile: config.write(configfile) return base
def create_update_archive(base, config): # FIXME: add version ? logger.debug("create '%(base)s' directory" % {"base": base}) makedirs_silent(base) configdst = os.path.join(base, "deploy.cfg") logger.debug("writing full config to '%(configdst)s'" % {"configdst": configdst}) with open(configdst, "wb") as configfile: config.write(configfile) return base
def dump(config, rawtables, savedir): if 'active' in config and config['active'] in ('false', 'off', '0'): return makedirs_silent(savedir) dump = config['dump'].split() jobs = [] for database, tables in get_tables(rawtables or config['names']).iteritems(): if not tables: # database without a table: dump all cmd = dump + [database] output = file(os.path.join(savedir, database + '.dump'), 'w+b') errors = file(os.path.join(savedir, database + '.dump.log'), 'w') jobs.append({'cmd': cmd, 'args': {'stdout': output, 'stderr': errors}}) else: for table in tables: cmd = [] + dump # clone dump # Enclose table name in doubl quote qtable = '.'.join(['"%s"' % e for e in table.split('.')]) cmd += ['-n'] if config['use_schema'] in ('true', 'yes', '1') \ else ['-t'] cmd += [qtable, database] output = file(os.path.join(savedir, database + '.' + table + '.dump'), 'w+b') errors = file(os.path.join(savedir, database + '.' + table + '.dump.log'), 'w') jobs.append({'cmd': cmd, 'args': {'stdout': output, 'stderr': errors}}) for job in jobs: logger.info("dumping ('%(cmd)s') to '%(dest)s'" % { 'cmd': ' '.join(job['cmd']), 'dest': job['args']['stdout'].name }) p = subprocess.Popen(job['cmd'], **job['args']) exitcode = p.wait() if exitcode != 0: logger.error("dump error, see '%(errors)s'" % {'errors': job['args']['stderr'].name}) sys.exit(1) else: os.remove(job['args']['stderr'].name) run_hook('post-create-database', [savedir], logger=logger, exit_on_error=True)