#!/usr/bin/env python3 # vim:fileencoding=utf-8 # License: GPL v3 Copyright: 2017, Kovid Goyal import glob import os import shlex import shutil import subprocess import sys import tempfile import atexit if False: dmg = sys.argv[-1] mp = tempfile.mkdtemp() atexit.register(os.rmdir, mp) subprocess.check_call(f'hdiutil attach {dmg} -mountpoint {mp}'.split()) try: os.chdir(mp) for app in glob.glob('*.app'): d = os.path.join('/Applications', app) if os.path.exists(d): shutil.rmtree(d) subprocess.check_call(f'ditto -v {app} {d}'.split()) finally: os.chdir('/') subprocess.check_call(f'hdiutil detach {mp}'.split()) # EOF_REMOTE HOST = 'ox' base = os.path.dirname(os.path.abspath(__file__)) if True: sys.path.insert(0, base) from kitty.constants import str_version dmg = f'kitty-{str_version}.dmg' def run(what): ret = subprocess.run(shlex.split(what)) if ret.returncode != 0: raise SystemExit(ret.returncode) with open(__file__, 'rb') as f: script = f.read().decode('utf-8') script = script[:script.find('# EOF_REMOTE')].replace('if False:', 'if True:', 1) with tempfile.NamedTemporaryFile(prefix='install-dmg-', suffix='.py') as f: cmd = 'python ../bypy macos program --dont-strip' if 'sign' in sys.argv: cmd += ' --sign-installers --notarize' if 'skip_tests' in sys.argv: cmd += ' --skip-tests' run(cmd) f.write(script.encode('utf-8')) f.flush() run(f'scp bypy/b/macos/dist/{dmg} {f.name} {HOST}:/tmp') run(f'ssh {HOST} python3 /tmp/{os.path.basename(f.name)} /tmp/{dmg}')