41 lines
1.4 KiB
Python
41 lines
1.4 KiB
Python
"""Agent preflight: COMPANY_CONTEXT=PASS/FAIL for one Firebird database (READ-ONLY).
|
|
|
|
python agent/scripts/preflight_company_context.py [--database <FDB>]
|
|
|
|
Configuration (environment or the local ignored .env): COMPANY_CODE / COMPANY_CNPJ (company selection when C000004 is ambiguous),
|
|
COMPANY_CRT_SOURCE = EMISSOR | C000004 (explicit choice when the two CRT sources disagree). The full CNPJ is never printed.
|
|
"""
|
|
import argparse
|
|
import json
|
|
import os
|
|
import sys
|
|
from pathlib import Path
|
|
|
|
ROOT = Path(__file__).resolve().parents[2]
|
|
sys.path.insert(0, str(ROOT / "agent" / "src"))
|
|
from gti_fiscal_agent.company_context import preflight_company_context, preflight_report # noqa: E402
|
|
|
|
|
|
def load_dotenv(path):
|
|
if path.exists():
|
|
for line in path.read_text(encoding="utf-8").splitlines():
|
|
if "=" in line and not line.startswith("#"):
|
|
k, _, v = line.partition("=")
|
|
os.environ.setdefault(k.strip(), v.strip())
|
|
|
|
|
|
def main(argv=None):
|
|
ap = argparse.ArgumentParser()
|
|
ap.add_argument("--database")
|
|
a = ap.parse_args(argv)
|
|
load_dotenv(ROOT / ".env")
|
|
if a.database:
|
|
os.environ["FIREBIRD_DATABASE_PATH"] = a.database
|
|
report = preflight_report(preflight_company_context(os.environ))
|
|
print(json.dumps(report, ensure_ascii=False, indent=1))
|
|
raise SystemExit(0 if report["COMPANY_CONTEXT"] == "PASS" else 2)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|