Files

55 lines
1.6 KiB
Python

#!/usr/bin/env python3
"""Forge Log Analyzer - generates JSON report."""
import sys
import json
from pathlib import Path
from datetime import datetime
import re
def analyze_forge_log(filepath):
"""Analyze a forge log file and return key metrics."""
content = Path(filepath).read_text()
filename = Path(filepath).name
duration_match = re.match(r'forge-(\d{4}-\d{2}-\d{2}-\d{6})\.txt', filename)
metrics = {
'file': str(filepath),
'filename': filename,
'lines': len(content.split('\n')),
'words': len(content.split()),
'chars': len(content),
}
if duration_match:
ts_str = duration_match.group(1)
try:
dt = datetime.strptime(ts_str, '%Y-%m-%d-%H%M%S')
metrics['session_time'] = dt.strftime('%Y-%m-%d %H:%M:%S')
except:
pass
return metrics
def main():
outputs_dir = Path('/root/.hermes/wizard-outputs')
forge_logs = sorted(outputs_dir.glob('forge-*.txt'))
results = {
'generated_at': datetime.now().isoformat(),
'total_files': len(forge_logs),
'files_analyzed': len(forge_logs[:10]),
'analysis': [analyze_forge_log(log) for log in forge_logs[:10]]
}
chars = [m['chars'] for m in results['analysis']]
results['total_lines'] = sum(m['lines'] for m in results['analysis'])
results['total_chars'] = sum(chars)
results['avg_file_chars'] = sum(chars) / len(chars) if chars else 0
# Output as JSON
print(json.dumps(results, indent=2))
return 0
if __name__ == '__main__':
sys.exit(main())