#!/usr/bin/env python3
"""
Downloads and installs workspace packages via Pnpm.
"""
import argparse
import os
import shutil
import subprocess
import sys
if __name__ == "__main__":
parser = argparse.ArgumentParser(description=__doc__)
group = parser.add_mutually_exclusive_group(required=True)
group.add_argument(
"--package-dir",
help="Path to the workspace member package",
)
group.add_argument(
"--root-dir",
help="Path to the workspace root",
)
parser.add_argument(
"node_modules_out_path",
help="Path to output `node_modules`",
)
args = parser.parse_args()
if args.root_dir:
cwd = args.root_dir
else:
cwd = None
cmd = ["pnpm", "install", "--frozen-lockfile"]
exit_code = subprocess.call(cmd, cwd=cwd)
if exit_code == 0:
src = "node_modules"
if cwd:
src = os.path.join(cwd, src)
shutil.copytree(
src,
os.path.join(args.node_modules_out_path, "node_modules"),
symlinks=True,
)
sys.exit(exit_code)