78 lines
2.1 KiB
Python
78 lines
2.1 KiB
Python
#!/usr/bin/env python3
|
|
"""
|
|
Hermes Environment Validator
|
|
Verifies the runtime environment is correctly configured for the Troupe stack.
|
|
"""
|
|
|
|
import os
|
|
import sys
|
|
from pathlib import Path
|
|
|
|
|
|
def validate_environment() -> tuple:
|
|
"""Run all environment validations and return (results, all_passed)."""
|
|
results = []
|
|
all_passed = True
|
|
|
|
# 1. Check current working directory
|
|
cwd = os.getcwd()
|
|
cwd_pass = cwd == '/root'
|
|
results.append(('cwd_correct', cwd_pass, cwd))
|
|
if not cwd_pass:
|
|
all_passed = False
|
|
|
|
# 2. Check scratch directory exists
|
|
scratch = os.environ.get('TMPDIR', '/tmp')
|
|
scratch_path = Path(scratch)
|
|
scratch_pass = scratch_path.exists()
|
|
results.append(('scratch_exists', scratch_pass, scratch))
|
|
if not scratch_pass:
|
|
all_passed = False
|
|
|
|
# 3. Check Hermes profile directory
|
|
profile_dir = Path('/root/.hermes/profiles/spark')
|
|
profile_pass = profile_dir.exists()
|
|
results.append(('profile_exists', profile_pass, str(profile_dir)))
|
|
if not profile_pass:
|
|
all_passed = False
|
|
|
|
# 4. Check skills directory
|
|
skills_dir = Path('/root/.hermes/skills')
|
|
skills_pass = skills_dir.exists()
|
|
results.append(('skills_exists', skills_pass, str(skills_dir)))
|
|
if not skills_pass:
|
|
all_passed = False
|
|
|
|
# 5. Check Python version (3.x required)
|
|
python_pass = sys.version_info.major >= 3
|
|
results.append(('python_version', python_pass, f"Python {sys.version_info.major}.{sys.version_info.minor}"))
|
|
if not python_pass:
|
|
all_passed = False
|
|
|
|
return results, all_passed
|
|
|
|
|
|
def main():
|
|
"""Main entry point."""
|
|
results, all_passed = validate_environment()
|
|
|
|
print("=" * 60)
|
|
print("HERMES ENVIRONMENT VALIDATION REPORT")
|
|
print("=" * 60)
|
|
|
|
for name, passed, detail in results:
|
|
status = "✓ PASS" if passed else "✗ FAIL"
|
|
print(f"{name:30s}: {status} ({detail})")
|
|
|
|
print("=" * 60)
|
|
|
|
if all_passed:
|
|
print("RESULT: ALL VALIDATIONS PASSED")
|
|
return 0
|
|
else:
|
|
print("RESULT: SOME VALIDATIONS FAILED")
|
|
return 1
|
|
|
|
|
|
if __name__ == "__main__":
|
|
sys.exit(main()) |