Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
690 changes: 542 additions & 148 deletions hermes_cli/main.py

Large diffs are not rendered by default.

40 changes: 40 additions & 0 deletions hermes_entry.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
"""Dependency-light console entry for ``hermes``.

Runs stdlib-only update-marker recovery *before* importing ``hermes_cli.main``,
so a wiped ``python-dotenv`` (or other probed package) cannot prevent recovery
from starting (#57828 / #58004 review).
"""

from __future__ import annotations

import sys


def main(argv: list[str] | None = None) -> object:
if argv is not None:
# Tests may pass argv; keep sys.argv consistent for downstream CLI.
sys.argv = [sys.argv[0], *argv]

# UTF-8 stdio on Windows — same guard as every other Hermes entry point.
try:
import hermes_bootstrap # noqa: F401
except ModuleNotFoundError:
pass
else:
try:
hermes_bootstrap.harden_import_path()
except Exception:
pass

# Marker recovery must not import hermes_cli.main / env_loader / dotenv.
from hermes_update_recovery import maybe_recover

maybe_recover()

from hermes_cli.main import main as cli_main

return cli_main()


if __name__ == "__main__":
raise SystemExit(main() or 0)
Loading
Loading