47 lines
1.6 KiB
Python
47 lines
1.6 KiB
Python
"""GTI Fiscal Agent installation preflight (READ-ONLY): python agent/scripts/preflight.py [--env-file FILE] [--json]
|
|
|
|
Prints PREFLIGHT=PASS|FAIL and the blockers; exit code 0 on PASS, 2 on FAIL. Secrets are never printed.
|
|
"""
|
|
import argparse
|
|
import json
|
|
import os
|
|
import sys
|
|
from pathlib import Path
|
|
|
|
AGENT_ROOT = Path(__file__).resolve().parents[1]
|
|
sys.path.insert(0, str(AGENT_ROOT / "src"))
|
|
from gti_fiscal_agent.preflight import run_preflight # noqa: E402
|
|
|
|
|
|
def load_env(path):
|
|
if path and Path(path).exists():
|
|
for line in Path(path).read_text(encoding="utf-8").splitlines():
|
|
line = line.strip()
|
|
if line and not line.startswith("#") and "=" in line:
|
|
k, _, v = line.partition("=")
|
|
os.environ.setdefault(k.strip(), v.strip())
|
|
|
|
|
|
def main(argv=None):
|
|
ap = argparse.ArgumentParser()
|
|
ap.add_argument("--env-file")
|
|
ap.add_argument("--json", action="store_true")
|
|
a = ap.parse_args(argv)
|
|
load_env(a.env_file or os.environ.get("GTI_AGENT_ENV_FILE") or AGENT_ROOT.parent / ".env")
|
|
os.environ.setdefault("AGENT_STATE_DB", str(AGENT_ROOT / "agent_state.sqlite"))
|
|
os.environ.setdefault("AGENT_LOG_PATH", str(AGENT_ROOT / "logs" / "agent.log"))
|
|
res = run_preflight(os.environ)
|
|
if a.json:
|
|
print(json.dumps(res, ensure_ascii=False, indent=1, default=str))
|
|
else:
|
|
for c in res["checks"]:
|
|
print(f" [{c['status']:<4}] {c['name']:<24} {c['detail']}")
|
|
print(f"PREFLIGHT={res['PREFLIGHT']}")
|
|
for b in res["blockers"]:
|
|
print(f"BLOCKER: {b}")
|
|
raise SystemExit(0 if res["PREFLIGHT"] == "PASS" else 2)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|