43 lines
1.6 KiB
Python
43 lines
1.6 KiB
Python
"""Resolve HERMES_HOME for standalone skill scripts.
|
|
|
|
Skill scripts may run outside the Hermes process (e.g. system Python,
|
|
nix env, CI) where ``hermes_constants`` is not importable. This module
|
|
provides the same ``get_hermes_home()`` and ``display_hermes_home()``
|
|
contracts as ``hermes_constants`` without requiring it on ``sys.path``.
|
|
|
|
When ``hermes_constants`` IS available it is used directly so that any
|
|
future enhancements (profile resolution, Docker detection, etc.) are
|
|
picked up automatically. The fallback path replicates the core logic
|
|
from ``hermes_constants.py`` using only the stdlib.
|
|
|
|
All scripts under ``google-workspace/scripts/`` should import from here
|
|
instead of duplicating the ``HERMES_HOME = Path(os.getenv(...))`` pattern.
|
|
"""
|
|
|
|
from __future__ import annotations
|
|
|
|
import os
|
|
from pathlib import Path
|
|
|
|
try:
|
|
from hermes_constants import display_hermes_home as display_hermes_home
|
|
from hermes_constants import get_hermes_home as get_hermes_home
|
|
except (ModuleNotFoundError, ImportError):
|
|
|
|
def get_hermes_home() -> Path:
|
|
"""Return the Hermes home directory (default: ~/.hermes).
|
|
|
|
Mirrors ``hermes_constants.get_hermes_home()``."""
|
|
val = os.environ.get("HERMES_HOME", "").strip()
|
|
return Path(val) if val else Path.home() / ".hermes"
|
|
|
|
def display_hermes_home() -> str:
|
|
"""Return a user-friendly ``~/``-shortened display string.
|
|
|
|
Mirrors ``hermes_constants.display_hermes_home()``."""
|
|
home = get_hermes_home()
|
|
try:
|
|
return "~/" + str(home.relative_to(Path.home()))
|
|
except ValueError:
|
|
return str(home)
|