2018-09-20 16:49:50 +00:00
|
|
|
#!/usr/bin/env python3
|
|
|
|
import argparse
|
2021-12-20 19:26:27 +00:00
|
|
|
import os
|
2022-02-21 22:27:03 +00:00
|
|
|
import pathlib
|
2021-04-15 16:54:26 +00:00
|
|
|
import sys
|
2018-09-20 16:49:50 +00:00
|
|
|
|
2022-02-21 22:27:03 +00:00
|
|
|
from . import buildall, buildpkg, mkpkg, serve
|
2021-12-20 19:26:27 +00:00
|
|
|
from .common import get_make_environment_vars
|
2018-09-20 16:49:50 +00:00
|
|
|
|
|
|
|
|
2021-04-15 16:54:26 +00:00
|
|
|
def make_parser() -> argparse.ArgumentParser:
|
|
|
|
"""Create an argument parser with argparse"""
|
|
|
|
|
2020-06-28 18:24:40 +00:00
|
|
|
main_parser = argparse.ArgumentParser(prog="pyodide")
|
2021-04-15 16:54:26 +00:00
|
|
|
main_parser.description = "A command line interface (CLI) for pyodide_build"
|
2020-06-28 18:24:40 +00:00
|
|
|
subparsers = main_parser.add_subparsers(help="action")
|
2018-09-20 16:49:50 +00:00
|
|
|
|
2020-06-28 18:24:40 +00:00
|
|
|
for command_name, module in (
|
|
|
|
("buildpkg", buildpkg),
|
|
|
|
("buildall", buildall),
|
|
|
|
("serve", serve),
|
|
|
|
("mkpkg", mkpkg),
|
|
|
|
):
|
2021-04-15 16:54:26 +00:00
|
|
|
if "sphinx" in sys.modules and command_name in [
|
|
|
|
"buildpkg",
|
|
|
|
"buildall",
|
|
|
|
"pywasmcross",
|
|
|
|
]:
|
|
|
|
# Likely building documentation, skip private API
|
|
|
|
continue
|
2022-03-08 05:51:20 +00:00
|
|
|
parser = module.make_parser(subparsers.add_parser(command_name))
|
|
|
|
parser.set_defaults(func=module.main)
|
2021-04-15 16:54:26 +00:00
|
|
|
return main_parser
|
|
|
|
|
|
|
|
|
|
|
|
def main():
|
2021-12-20 19:26:27 +00:00
|
|
|
if not os.environ.get("__LOADED_PYODIDE_ENV"):
|
2022-03-10 04:34:25 +00:00
|
|
|
from sys import version_info
|
|
|
|
|
2021-12-20 19:26:27 +00:00
|
|
|
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"]
|
2022-03-10 04:34:25 +00:00
|
|
|
PYVERSION = f"python{version_info.major}.{version_info.minor}"
|
|
|
|
pythonpath = [
|
|
|
|
f"{HOSTINSTALLDIR}/lib/{PYVERSION}/site-packages/",
|
|
|
|
f"{PYODIDE_ROOT}/pyodide-build/",
|
|
|
|
]
|
|
|
|
os.environ["PYTHONPATH"] = ":".join(pythonpath)
|
2021-12-20 19:26:27 +00:00
|
|
|
os.environ["BASH_ENV"] = ""
|
|
|
|
os.environ["__LOADED_PYODIDE_ENV"] = "1"
|
|
|
|
|
2021-04-15 16:54:26 +00:00
|
|
|
main_parser = make_parser()
|
2018-09-20 16:49:50 +00:00
|
|
|
|
|
|
|
args = main_parser.parse_args()
|
2020-06-28 18:24:40 +00:00
|
|
|
if hasattr(args, "func"):
|
2019-01-15 15:09:09 +00:00
|
|
|
# run the selected action
|
|
|
|
args.func(args)
|
|
|
|
else:
|
|
|
|
main_parser.print_help()
|
2018-09-20 16:49:50 +00:00
|
|
|
|
|
|
|
|
2020-06-28 18:24:40 +00:00
|
|
|
if __name__ == "__main__":
|
2018-09-20 16:49:50 +00:00
|
|
|
main()
|