def main(args: Optional[Sequence[str]] = None): """ Executes things in order """ setup_logging() args = parse_args(args) now = datetime.utcnow() with doing("Parsing remote configuration"): wp_config = parse_wp_config(args.source) with TemporaryDirectory() as d: work_location = parse_location(d) with doing("Saving settings"): dump_settings(args, wp_config, now, join(d, "settings.json")) with doing("Copying database"): db = create_from_source(wp_config, args.source) db.dump_to_file(join(d, "dump.sql")) with doing("Copying files"): copy_files(args.source, work_location.child("wordpress")) with doing("Writing archive"): args.backup_dir.ensure_exists_as_dir() archive_location = make_dump_file_name(args, wp_config, now) archive_location.archive_local_dir(d) doing.logger.info("Wrote archive %s", archive_location) return archive_location
def main(argv: Optional[Sequence[Text]] = None): args = parse_args(argv) setup_logging() rep = [ *zip( (x.encode(args.charset) for x in args.before), (x.encode(args.charset) for x in args.after), ) ] with open(args.input, "rb") as i, open(args.output, "wb") as o: for line in i: o.write(walk(line, rep))
def main(args: Optional[Sequence[str]] = None): """ Executes things in order """ setup_logging() args = parse_args(args) gen = args.settings_generator origin_source = parse_location(gen.get_source(args.origin)) origin_backup_dir = gen.get_backup_dir(args.origin) with doing(f"Backing up {args.origin} to {origin_backup_dir}"): origin_archive = snapshot([f"{origin_source}", origin_backup_dir]) target_backup_dir = gen.get_backup_dir(args.target) target_source = parse_location(gen.get_source(args.target)) with doing(f"Checking if {args.target} ({target_source}) already exists"): target_exists = target_source.exists() if target_exists: with doing(f"Backing up {args.target} to {target_backup_dir}"): snapshot([f"{target_source}", target_backup_dir]) if target_exists: with doing(f"Reading wp_config from {args.target}"): wp_config = parse_wp_config(target_source) else: with doing(f"Generating wp_config for {args.target}"): wp_config = gen.get_wp_config(args.target) patch = apply_wp_config(gen.get_patch(args.origin, args.target), wp_config, target_source) with NamedTemporaryFile(mode="w", encoding="utf-8") as pf: json.dump(patch, pf) pf.flush() with doing(f"Overriding {args.target} with {args.origin}"): restore(["-p", pf.name, f"{origin_archive}"]) if hasattr(gen, "post_exec"): with doing("Running post-exec hook"): gen.post_exec(args.origin, args.target)
def main(args: Optional[Sequence[str]] = None): """ Executes things in order """ setup_logging() args = parse_args(args) snap: Location = args.snapshot with TemporaryDirectory() as d: with doing("Extracting archive"): snap.extract_archive_to_dir(d) with doing("Reading configuration"): config = patch_config(read_config(join(d, "settings.json")), args.patch, args.allow_in_place) dump = join(d, "dump.sql") if config["replace_in_dump"]: with doing("Patch the SQL dump"): new_dump = join(d, "dump_patched.sql") patch_sql_dump(dump, new_dump, make_replace_map(config["replace_in_dump"])) dump = new_dump if config["php_define"]: with doing("Patch wp-config.php"): set_wp_config_values(config["php_define"], join(d, "wordpress", "wp-config.php")) with doing("Restoring files"): remote = get_remote(config) restore_files(join(d, "wordpress"), remote) if config["git"]: with doing("Cloning Git repos"): for repo in config["git"]: location = remote.child(repo["location"]) location.set_git_repo(repo["repo"], repo["version"]) doing.logger.info("Cloned %s@%s to %s", repo["repo"], repo["version"], location) if config["owner"]: with doing("Changing files owner"): remote.chown(config["owner"]) with doing("Reading WP config"): wp_config = get_wp_config(config) if config["mysql_root"]: mysql_root = config["mysql_root"] with doing("Ensuring that DB and user exist"): ensure_db_exists(wp_config, mysql_root, remote) with doing("Restoring DB"): db = create_from_source(wp_config, remote) restore_db(db, dump) if config["setup_queries"]: with doing("Running setup queries"): run_queries(db, config["setup_queries"]) if config["outer_files"]: with doing("Creating outer files"): install_outer_files(config["outer_files"], remote) if config["post_install"]: with doing("Running post install scripts"): run_post_install(config["post_install"], remote) if config["dns"]: with doing("Configuring DNS"): configure_dns(config["dns"])