mirror of https://github.com/pyodide/pyodide.git
43 lines
1.5 KiB
Python
43 lines
1.5 KiB
Python
from pathlib import Path
|
|
|
|
import typer
|
|
|
|
from pyodide_build._py_compile import _py_compile_archive, _py_compile_archive_dir
|
|
|
|
|
|
def main(
|
|
path: Path = typer.Argument(
|
|
..., help="Path to the input wheel or a folder with wheels or zip files."
|
|
),
|
|
silent: bool = typer.Option(False, help="Silent mode, do not print anything."),
|
|
keep: bool = typer.Option(False, help="Keep the original wheel / zip file."),
|
|
compression_level: int = typer.Option(
|
|
6, help="Compression level to use for the created zip file"
|
|
),
|
|
) -> None:
|
|
"""Compile .py files to .pyc in a wheel, a zip file, or a folder with wheels or zip files.
|
|
|
|
If the provided folder contains the `pyodide-lock.json` file, it will be
|
|
rewritten with the updated wheel / zip file paths and sha256 checksums.
|
|
"""
|
|
if not path.exists():
|
|
typer.echo(f"Error: {path} does not exist")
|
|
raise typer.Exit(1)
|
|
|
|
if path.is_file():
|
|
if path.suffix not in [".whl", ".zip"]:
|
|
typer.echo(
|
|
f"Error: only .whl and .zip files are supported, got {path.name}"
|
|
)
|
|
raise typer.Exit(1)
|
|
|
|
_py_compile_archive(
|
|
path, verbose=not silent, keep=keep, compression_level=compression_level
|
|
)
|
|
elif path.is_dir():
|
|
_py_compile_archive_dir(
|
|
path, verbose=not silent, keep=keep, compression_level=compression_level
|
|
)
|
|
else:
|
|
typer.echo(f"{path=} is not a file or a directory")
|