pyodide/pyodide-build/pyodide_build/cli/config.py

64 lines
1.6 KiB
Python
Raw Normal View History

import typer
from ..build_env import get_build_environment_vars, init_environment
app = typer.Typer(help="Manage config variables used in pyodide")
# A dictionary of config variables {key: env_var_in_makefile}
PYODIDE_CONFIGS = {
"emscripten_version": "PYODIDE_EMSCRIPTEN_VERSION",
"python_version": "PYVERSION",
"rustflags": "RUSTFLAGS",
"cmake_toolchain_file": "CMAKE_TOOLCHAIN_FILE",
"pyo3_config_file": "PYO3_CONFIG_FILE",
"rust_toolchain": "RUST_TOOLCHAIN",
"cflags": "SIDE_MODULE_CFLAGS",
"cxxflags": "SIDE_MODULE_CXXFLAGS",
"ldflags": "SIDE_MODULE_LDFLAGS",
"meson_cross_file": "MESON_CROSS_FILE",
}
@app.callback(no_args_is_help=True)
def callback() -> None:
return
def _get_configs() -> dict[str, str]:
init_environment(quiet=True)
configs: dict[str, str] = get_build_environment_vars()
configs_filtered = {k: configs[v] for k, v in PYODIDE_CONFIGS.items()}
return configs_filtered
@app.command("list")
def list_config():
"""
List config variables used in pyodide
"""
configs = _get_configs()
for k, v in configs.items():
typer.echo(f"{k}={v}")
@app.command("get")
def get_config(
config_var: str = typer.Argument(
..., help="A config variable to get. Use `list` to see all possible values."
),
) -> None:
"""
Get a value of a single config variable used in pyodide
"""
configs = _get_configs()
if config_var not in configs:
typer.echo(f"Config variable {config_var} not found.")
typer.Exit(1)
typer.echo(configs[config_var])