pyodide/pyodide-build/pyodide_build/__main__.py

63 lines
1.8 KiB
Python
Executable File

#!/usr/bin/env python3
import argparse
import pathlib
import os
import sys
from . import buildall
from . import buildpkg
from . import serve
from . import mkpkg
from .common import get_make_environment_vars
def make_parser() -> argparse.ArgumentParser:
"""Create an argument parser with argparse"""
main_parser = argparse.ArgumentParser(prog="pyodide")
main_parser.description = "A command line interface (CLI) for pyodide_build"
subparsers = main_parser.add_subparsers(help="action")
for command_name, module in (
("buildpkg", buildpkg),
("buildall", buildall),
("serve", serve),
("mkpkg", mkpkg),
):
if "sphinx" in sys.modules and command_name in [
"buildpkg",
"buildall",
"pywasmcross",
]:
# Likely building documentation, skip private API
continue
parser = module.make_parser(subparsers.add_parser(command_name)) # type: ignore
parser.set_defaults(func=module.main) # type: ignore
return main_parser
def main():
if not os.environ.get("__LOADED_PYODIDE_ENV"):
PYODIDE_ROOT = str(pathlib.Path(__file__).parents[2].resolve())
os.environ["PYODIDE_ROOT"] = PYODIDE_ROOT
os.environ.update(get_make_environment_vars())
HOSTINSTALLDIR = os.environ["HOSTINSTALLDIR"]
os.environ[
"PYTHONPATH"
] = f"{HOSTINSTALLDIR}/lib/python:{PYODIDE_ROOT}/pyodide-build/"
os.environ["BASH_ENV"] = ""
os.environ["__LOADED_PYODIDE_ENV"] = "1"
main_parser = make_parser()
args = main_parser.parse_args()
if hasattr(args, "func"):
# run the selected action
args.func(args)
else:
main_parser.print_help()
if __name__ == "__main__":
main()