circuitpython-build-tools/circuitpython_build_tools/scripts/circuitpython_mpy_cross.py
Jeff Epler 9524f770b3 Add circuitpython-mpy-cross
This wraps the process of building or downloading mpy-cross for a specified
version, then running it with specified arguments.

e.g.,
```
$ circuitpython-mpy-cross --circuitpython-version 9.x -- --version
CircuitPython 9.0.0-alpha.2 on 2023-10-27; mpy-cross emitting mpy v6.1
```
2024-06-16 11:40:19 -05:00

21 lines
791 B
Python

import subprocess
import click
from ..target_versions import VERSIONS
from ..build import mpy_cross
@click.command(context_settings={"ignore_unknown_options": True})
@click.option("--circuitpython-version", type=click.Choice([version["name"] for version in VERSIONS]))
@click.option("--quiet/--no-quiet", "quiet", type=bool, default=True)
@click.argument("mpy-cross-args", nargs=-1, required=True)
def main(circuitpython_version, quiet, mpy_cross_args):
version_info, = [v for v in VERSIONS if v["name"] == circuitpython_version]
mpy_cross_exe = str(mpy_cross(version_info, quiet))
try:
subprocess.check_call([mpy_cross_exe, *mpy_cross_args])
except subprocess.CalledProcessError as e:
raise SystemExit(e.returncode)
if __name__ == '__main__':
main()