71 lines
2.2 KiB
Python
71 lines
2.2 KiB
Python
#!/usr/bin/env python3
|
|
"""
|
|
Environment verification script for Hermes snippet lane.
|
|
Measures and records actual system state as JSON.
|
|
"""
|
|
import os
|
|
import sys
|
|
import json
|
|
import subprocess
|
|
from datetime import datetime, timezone
|
|
|
|
def measure_environment():
|
|
"""Measure actual environment state."""
|
|
results = {
|
|
"timestamp_utc": datetime.now(timezone.utc).isoformat(),
|
|
"python_version": sys.version,
|
|
"python_path": sys.executable,
|
|
"working_directory": os.getcwd(),
|
|
"directories": {},
|
|
"environment_vars": {},
|
|
"check_result": "unknown"
|
|
}
|
|
|
|
# Check required directories
|
|
dirs_to_check = [
|
|
"/root/.hermes/profiles/spark",
|
|
"/root/.hermes/wizard-outputs",
|
|
"/root/troupe-standup",
|
|
"/root/troupe-standup/wizard-work/spark"
|
|
]
|
|
|
|
all_dirs_exist = True
|
|
for dir_path in dirs_to_check:
|
|
exists = os.path.isdir(dir_path)
|
|
results["directories"][dir_path] = {"exists": exists}
|
|
if not exists:
|
|
all_dirs_exist = False
|
|
|
|
# Check key environment variables
|
|
env_vars_to_check = ["FORGE_TOKEN", "PATH"]
|
|
for var in env_vars_to_check:
|
|
results["environment_vars"][var] = var in os.environ
|
|
|
|
# Check git availability
|
|
try:
|
|
git_result = subprocess.run(["git", "--version"], capture_output=True, text=True)
|
|
results["git_available"] = git_result.returncode == 0
|
|
results["git_version"] = git_result.stdout.strip() if git_result.returncode == 0 else None
|
|
except Exception:
|
|
results["git_available"] = False
|
|
results["git_version"] = None
|
|
|
|
# Check troupe-standup git repo
|
|
results["troupe_is_git_repo"] = os.path.isdir("/root/troupe-standup/.git")
|
|
|
|
results["check_result"] = "PASS" if all_dirs_exist and results.get("git_available", False) else "FAIL"
|
|
|
|
return results
|
|
|
|
if __name__ == "__main__":
|
|
results = measure_environment()
|
|
|
|
# Write to file
|
|
output_path = "/root/.hermes/wizard-outputs/spark/environment_check_result.json"
|
|
with open(output_path, "w") as f:
|
|
json.dump(results, f, indent=2)
|
|
|
|
print(json.dumps(results, indent=2))
|
|
|
|
# Exit 0 on PASS, 1 on FAIL
|
|
sys.exit(0 if results["check_result"] == "PASS" else 1) |