import json
import sys
from pathlib import Path

project = Path(__file__).resolve().parents[4]
sys.path.insert(0, str(project / 'tools' / 'dev'))
from common import DEV, isolated_environment, new_run, source_state, state_digest
from checks import execute, prepare_godot

run = new_run('line89-analysis')
before = source_state()
environment = isolated_environment(run)
environment['BIGEGG_DEV_SEED'] = '1709'
godot, _ = prepare_godot(run, environment, None, 60)
environment['BIGEGG_DEV_SCENE'] = 'res://tools/dev/runs/line89-analysis/probe.tscn'
result = execute([godot, '--headless', '--path', str(project), '--script',
                  str(DEV / 'run_scene.gd')], environment, run / 'output.log',
                 60, 'LINE89 ANALYSIS: COMPLETE')
result['production_sources_unchanged'] = state_digest(before) == state_digest(source_state())
(run / 'report.json').write_text(json.dumps(result, ensure_ascii=False, indent=2), encoding='utf-8')
summary = {key: result[key] for key in ['status', 'seconds', 'timed_out', 'log', 'production_sources_unchanged']}
summary['errors'] = list(dict.fromkeys(result['errors']))[:8]
print(json.dumps(summary, ensure_ascii=False, indent=2))
sys.exit(0 if result['status'] == 'PASS' else 1)
