#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""conferir-frescor.py — a skill `seed-ds` envelhece com o canon: este script compara o VERSAO.json do
pacote com o índice VIVO em https://ds.seed.eng.br e diz o que mudou desde a geração. Só biblioteca padrão.
Uso: python scripts/conferir-frescor.py          (sai 0 = igual; 1 = há canônico mais novo no ar; 2 = sem rede)"""
import json, pathlib, sys, urllib.request
AQUI = pathlib.Path(__file__).resolve().parent
versao = json.loads((AQUI.parent / 'VERSAO.json').read_text(encoding='utf-8'))
try:
    with urllib.request.urlopen('https://ds.seed.eng.br/10-publicacao/ia/indice-ia.json', timeout=20) as r:
        vivo = json.loads(r.read().decode('utf-8'))
    with urllib.request.urlopen('https://ds.seed.eng.br/10-publicacao/skill/seed-ds/VERSAO.json', timeout=20) as r:
        vivo.update({'versao_skill': json.load(r).get('versao_skill'), 'data_do_ds': versao['data_do_ds']})
except Exception as e:
    print('sem rede ou índice indisponível (%s) — use o retrato local, versão %s (canon de %s)' % (e, versao['versao_skill'], versao['data_do_ds']))
    sys.exit(2)
if vivo.get('versao_skill') and vivo['versao_skill'] != versao['versao_skill']:
    print('HÁ VERSÃO NOVA DA SKILL: instalada %s → publicada %s (canon de %s). Atualize: python scripts/atualizar.py (Claude Code) ou baixe em https://ds.seed.eng.br/skill/' % (versao['versao_skill'], vivo['versao_skill'], vivo.get('data_do_ds')))
local = {c['fonte']: c for c in versao['canonicos']}
mudou = 0
for c in vivo['canonicos']:
    l = local.get(c['fonte'])
    if l is None:
        print('NOVO no ar: %s %s' % (c['fonte'], c['versao'])); mudou += 1
    elif l['md5'] != c['md5']:
        print('MUDOU: %-40s local %s -> no ar %s' % (c['fonte'], l['versao'], c['versao'])); mudou += 1
print('%d canônico(s) com versão diferente entre este pacote e o ar (skill %s, canon de %s)' % (mudou, versao['versao_skill'], versao['data_do_ds']))
sys.exit(1 if mudou else 0)
