mirror of https://github.com/pyodide/pyodide.git
51 lines
1.3 KiB
Python
Executable File
51 lines
1.3 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
import argparse
|
|
import sys
|
|
|
|
from . import buildall
|
|
from . import buildpkg
|
|
from . import pywasmcross
|
|
from . import serve
|
|
from . import mkpkg
|
|
|
|
|
|
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),
|
|
("pywasmcross", pywasmcross),
|
|
("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():
|
|
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()
|