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 ```
21 lines
791 B
Python
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()
|