import os from pathlib import Path from shutil import copytree, rmtree CURRENT_DIR = Path(__file__).parent STATIC_OUTPUT_DIR = CURRENT_DIR / "anime/static" FRONTEND_DIR = CURRENT_DIR / "frontend" DIST_DIR = FRONTEND_DIR / "dist" class DirChanger: """Class for changing current directory and returning back after exit.""" def __init__(self, path: Path): self.path = path def __enter__(self): os.chdir(self.path) def __exit__(self, *args): os.chdir(CURRENT_DIR) def build(): """ Build frontend and copy it to the static directory. This script is useful for packaging the application. """ print("Starting building frontend ...") with DirChanger(CURRENT_DIR / "frontend"): ret_status = os.system("pnpm build") if ret_status != 0: raise Exception("Frontend build failed.") print("Frontend build finished.") rmtree(STATIC_OUTPUT_DIR, ignore_errors=True) copytree(symlinks=True, src=DIST_DIR, dst=STATIC_OUTPUT_DIR) if __name__ == "__main__": build()