#!/usr/bin/env python3 import glob import os import shutil import subprocess import sys import tempfile os.environ["PYTHONUNBUFFERED"] = "y" sys.path.append(os.path.join(os.path.dirname(__file__), "..", "..")) import version from scripts.lib.zulip_tools import ( DEPLOYMENTS_DIR, ENDC, FAIL, get_deployment_version, is_invalid_upgrade, make_deploy_path, overwrite_symlink, ) if len(sys.argv) != 2: print(FAIL + f"Usage: {sys.argv[0]} " + ENDC) sys.exit(1) tarball_path = sys.argv[1] deploy_path = make_deploy_path() extract_path = tempfile.mkdtemp() subprocess.check_call(["tar", "-xf", tarball_path, "-C", extract_path]) new_version = get_deployment_version(extract_path) current_version = version.ZULIP_VERSION if is_invalid_upgrade(current_version, new_version): print( FAIL + "Your current version is very old. Please first upgrade to version " f"1.4.3 and then upgrade to {new_version}." + ENDC ) shutil.rmtree(extract_path) sys.exit(1) shutil.move(glob.glob(os.path.join(extract_path, "zulip-server-*"))[0], deploy_path) os.rmdir(extract_path) overwrite_symlink("/etc/zulip/settings.py", os.path.join(deploy_path, "zproject/prod_settings.py")) overwrite_symlink(deploy_path, os.path.join(DEPLOYMENTS_DIR, "next")) print(deploy_path) sys.exit(0)