"""Geração e validação locais com fixture sintética; sem A1 e sem consulta fiscal."""
import argparse
import json
from pathlib import Path

from acbr import AcbrError, Configuracao, Emissor
from contrato_offline import carregar_documento


def main() -> int:
    parser = argparse.ArgumentParser(description=__doc__)
    parser.add_argument("--runtime", type=Path, required=True,
                        help="Diretório runtime verificado, retornado pelo instalador")
    args = parser.parse_args()
    config = Configuracao(cnpj="00000000000000", uf="CE", modelo=55, ambiente=2)
    try:
        with Emissor(config, runtime_directory=args.runtime, timeout=30) as emissor:
            geracao = emissor.gerar_xml(carregar_documento())
            print(json.dumps(geracao.to_dict(), ensure_ascii=False))
            if not geracao.sucesso or geracao.xml is None:
                return 1
            validacao = emissor.validar(geracao.xml)
            print(json.dumps(validacao.to_dict(), ensure_ascii=False))
            # Fixture não assinada e identificadores zerados não são dados fiscais válidos.
            # Uma rejeição de schema é possível e não significa falha do transporte.
            return 0 if validacao.sucesso else 2
    except AcbrError as erro:
        print(json.dumps(erro.diagnostico.to_dict(), ensure_ascii=False))
        return 1


if __name__ == "__main__":
    raise SystemExit(main())
