#! /usr/bin/env python3 import os import shutil import subprocess import sys target_name = sys.argv[1] def rm(path: str): file_exists = os.path.exists(path) is_link = os.path.islink(path) is_dir = os.path.isdir(path) if (file_exists or is_link) and not is_dir: os.remove(path) elif os.path.isdir(path): shutil.rmtree(path) def mkdir_p(path: str): if not os.path.exists(path): os.mkdir(path) def run(args: list[str]): if subprocess.run(args).returncode != 0: sys.exit(1) dmg_dir = f'dist/darwin-arm64-release/{target_name}' dmg = f'{dmg_dir}.dmg' rm(dmg) rm(dmg_dir) mkdir_p(dmg_dir) shutil.copytree(f'dist/darwin-arm64-release/{target_name}.app', f'{dmg_dir}/{target_name}.app') os.symlink('/Applications', f'{dmg_dir}/Applications') run(['hdiutil', 'create', '-srcfolder', dmg_dir, dmg]) rm(dmg_dir)