61 lines
2.0 KiB
Python
61 lines
2.0 KiB
Python
"""Entry point wrapper for Medeia-Macina CLI.
|
|
|
|
This file is intentionally backwards-compatible. When installed from the
|
|
packaged distribution the preferred entry is `medeia_macina.cli_entry.main`.
|
|
When running from the repository (or in legacy installs) the module will
|
|
attempt to import `MedeiaCLI` from the top-level `CLI` module.
|
|
"""
|
|
import sys
|
|
from pathlib import Path
|
|
|
|
|
|
def _run_packaged_entry(argv=None) -> int:
|
|
"""Try to delegate to the packaged entry (`medeia_macina.cli_entry:main`)."""
|
|
try:
|
|
from medeia_macina.cli_entry import main as _main
|
|
|
|
return int(_main(argv) or 0)
|
|
except Exception:
|
|
return -1
|
|
|
|
|
|
def _run_legacy_entry() -> None:
|
|
"""Legacy behaviour: make repo root importable and run CLI.
|
|
|
|
This supports running directly from the source tree where `CLI.py` is
|
|
available as a top-level module.
|
|
"""
|
|
root_dir = Path(__file__).resolve().parent
|
|
if str(root_dir) not in sys.path:
|
|
sys.path.insert(0, str(root_dir))
|
|
|
|
try:
|
|
from CLI import MedeiaCLI
|
|
except Exception as exc: # pragma: no cover - user environment issues
|
|
raise ImportError(
|
|
"Could not import 'MedeiaCLI' from top-level 'CLI'. "
|
|
"If you installed the package into a virtualenv, activate it and run: \n"
|
|
" pip install -e .\n"
|
|
"or re-run the project bootstrap to ensure an up-to-date install."
|
|
) from exc
|
|
|
|
if __name__ == "__main__":
|
|
MedeiaCLI().run()
|
|
|
|
|
|
# Backward-compatibility: try to expose `MedeiaCLI` at import-time when the
|
|
# project is being used from a development checkout (so modules that import
|
|
# the top-level `medeia_entry` can still access the CLI class).
|
|
try:
|
|
from CLI import MedeiaCLI as MedeiaCLI # type: ignore
|
|
except Exception:
|
|
# It's okay if the legacy top-level CLI isn't importable in installed packages.
|
|
pass
|
|
|
|
if __name__ == "__main__":
|
|
rc = _run_packaged_entry(sys.argv[1:])
|
|
if rc >= 0:
|
|
raise SystemExit(rc)
|
|
# Fall back to legacy import when packaged entry couldn't be invoked.
|
|
_run_legacy_entry()
|