§
    Ìu‰jý  ã                   óÒ   — d Z ddlZddlZddlZddlZddlZddlmZ dddddd	d
œZdhZ	dd„Z
defd„Zdefd„Zdefd„Zdefd„Zd„ Zedk    r e eej        ¦  «        ¦  «        ‚dS )aG  
atualizar-catalogo-mensagens - monta web-api/catalogo-mensagens.json a partir
 de arquivos modulares web-api/catalogo-*.json.

Mantem compatibilidade: api.php e pp --api continuam lendo apenas
web-api/catalogo-mensagens.json; este comando gera esse agregado de forma
deterministica a partir dos catalogos de cada modulo/ator.
é    N)ÚPathzcatalogo-mensagens-siscé   zWCatalogo declarativo SISC agregado automaticamente a partir de web-api/catalogo-*.json.z2formatos-escuta/protocolo-mensagem-siscore.v1.jsonz%somente-espaco-sisc-sem-acesso-diretoz%microservicos-sisc-via-bff-e-catalogo©ÚtipoÚversaoÚ	descricaoÚformatoEscutaÚregraComunicacaoÚmodeloProdutoFinalúcatalogo-mensagens.jsonÚreturnc                  ó$   — t          d¦  «         d S )NuÆ  Uso:
  pp --atualizar-catalogo-mensagens
  pp --atualizar-catalogo-mensagens --dry-run
  pp --atualizar-catalogo-mensagens --verificar

DescriÃ§Ã£o:
  LÃª todos os arquivos web-api/catalogo-*.json, exceto catalogo-mensagens.json,
  valida ids duplicados e grava o agregado web-api/catalogo-mensagens.json.
  Cada mÃ³dulo/ator deve manter seu prÃ³prio arquivo, por exemplo:
    web-api/catalogo-conector-email.json
    web-api/catalogo-agente-contexto.json

Regras:
  - O agregado continua existindo por compatibilidade com api.php e pp --api.
  - Arquivos modulares podem conter objeto com chave mensagens:[...] ou uma
    Ãºnica mensagem com idmensagem/id.
  - A ordem Ã© determinÃ­stica por nome de arquivo.
)Úprint© ó    ú*core/comandos/atualizar-catalogo-mensagensÚusor      s#   € Ý	ð ñ ô ð ð ð r   Úpathc                 óŒ   — |                       dd¬¦  «        5 }t          j        |¦  «        cd d d ¦  «         S # 1 swxY w Y   d S )NÚrúutf-8©Úencoding)ÚopenÚjsonÚload)r   Úfs     r   Úcarregar_jsonr   2   s„   € Ø	�Š�3 ˆÑ	)Ô	)ð ¨QÝŒy˜‰|Œ|ðð ð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ð ð s   ˜9¹=Á =c                 óp  — t          | ¦  «        }t          |t          ¦  «        r1t          |                     d¦  «        t          ¦  «        r	|d         }n3t          |t          ¦  «        rd|v sd|v r|g}nt          | › d�¦  «        ‚g }t          |d¦  «        D ]š\  }}t          |t          ¦  «        st          | › d|› d�¦  «        ‚|                     d¦  «        p|                     d¦  «        }t          |t          ¦  «        r|st          | › d|› d�¦  «        ‚|                     |¦  «         Œ›|S )	NÚ	mensagensÚ
idmensagemÚidz1: esperado objeto com mensagens[] ou uma mensagemé   z: mensagem #z nao e objetoz sem idmensagem/id)	r   Ú
isinstanceÚdictÚgetÚlistÚ
ValueErrorÚ	enumerateÚstrÚappend)r   ÚdataÚmsgsÚoutÚiÚmÚmids          r   Úmensagens_de_fragmentor2   7   sU  € Ý˜ÑÔ€DÝ�$�ÑÔð U¥*¨T¯XªX°kÑ-BÔ-BÅDÑ"IÔ"Ið UØ�KÔ ˆˆÝ	�D�$Ñ	Ô	ð U \°TÐ%9Ð%9¸TÀT¸\¸\Øˆvˆˆå˜DÐSÐSÐSÑTÔTÐTØ
€CÝ˜$ Ñ"Ô"ð ð ‰ˆˆ1Ý˜!�TÑ"Ô"ð 	DÝ ÐBÐB°!ÐBÐBÐBÑCÔCÐCØ�eŠe�LÑ!Ô!Ð0 Q§U¢U¨4¡[¤[ˆÝ˜#�sÑ#Ô#ð 	I¨3ð 	IÝ ÐGÐG°!ÐGÐGÐGÑHÔHÐHØ�
Š
�1‰ŒˆˆØ€Jr   Úbasec                 ó  — | dz  }|                      ¦   «         st          d¦  «        ‚d„ t          |                     d¦  «        ¦  «        D ¦   «         }|st          d¦  «        ‚|dz  }t	          t
          ¦  «        }|                     ¦   «         rJ	 t          |¦  «        }t          |t          ¦  «        rdD ]}||v r||         ||<   Œn# t          $ r Y nw xY wd|d	<   d
„ |D ¦   «         |d<   g }i }|D ]‡}	t          |	¦  «        D ]u}
|
                     d¦  «        p|
                     d¦  «        }||v r#t          d|› d|	j        › d||         › �¦  «        ‚d|	j        › �||<   |                     |
¦  «         ŒvŒˆ||d<   ||fS )Núweb-apizDdiretorio web-api/ nao encontrado; execute dentro de um sistema SISCc                 ó.   — g | ]}|j         t          v¯|‘ŒS r   )ÚnameÚEXCLUIR©Ú.0Úps     r   ú
<listcomp>zmontar.<locals>.<listcomp>N   s%   € ÐZÐZÐZ˜ÀAÄFÕRYÐDYÐDY�!ÐDYÐDYÐDYr   zcatalogo-*.jsonz=nenhum catalogo modular encontrado em web-api/catalogo-*.jsonr   r   z!pp --atualizar-catalogo-mensagensÚ	geradoPorc                 ó"   — g | ]}d |j         › �‘ŒS )úweb-api/)r7   r9   s     r   r<   zmontar.<locals>.<listcomp>^   s#   € Ð@Ð@Ð@°Ð+ 1¤6Ð+Ð+Ð@Ð@Ð@r   Úfontesr!   r"   zidmensagem duplicado: z em web-api/z e r?   r    )Úis_dirr(   ÚsortedÚglobr%   ÚHEADER_DEFAULTÚis_filer   r$   Ú	Exceptionr2   r&   r7   r+   )r3   ÚwebÚ
fragmentosÚ
atual_pathÚheaderÚatualÚkr    ÚidsÚfragr0   r1   s               r   ÚmontarrO   J   sô  € Ø
�Ñ
€CØ�:Š:‰<Œ<ð aÝÐ_Ñ`Ô`Ð`ØZÐZ�V C§H¢HÐ->Ñ$?Ô$?Ñ@Ô@ÐZÑZÔZ€JØð ZÝÐXÑYÔYÐYàÐ0Ñ0€JÝ•.Ñ!Ô!€FØ×ÒÑÔð ð	Ý! *Ñ-Ô-ˆEÝ˜%¥Ñ&Ô&ð -Øsð -ð -�AØ˜E�z�zØ$)¨!¤H˜˜q™	øøøÝð 	ð 	ð 	ØˆDð	øøøà=€Fˆ;ÑØ@Ð@°ZÐ@Ñ@Ô@€Fˆ8Ñà€IØ
€CØð  ð  ˆÝ'¨Ñ-Ô-ð 	 ð 	 ˆAØ—%’%˜Ñ%Ô%Ð4¨¯ª¨t©¬ˆCØ�cˆzˆzÝ Ð!c¸#Ð!cÐ!cÈ4Ì9Ð!cÐ!cÐY\Ð]`ÔYaÐ!cÐ!cÑdÔdÐdØ- $¤)Ð-Ð-ˆC�‰HØ×Ò˜QÑÔÐÐð	 ð $€Fˆ;ÑØ�:ÐÐs   Â8C Ã
CÃCc                 ó6   — t          j        | dd¬¦  «        dz   S )NFé   )Úensure_asciiÚindentú
)r   Údumps)Úobjs    r   Údumps_catalogorW   m   s   € ÝŒ:�c¨°aÐ8Ñ8Ô8¸4Ñ?Ð?r   c           	      óÜ  — t          d„ | dd …         D ¦   «         ¦  «        rt          ¦   «          dS t          j        d¬¦  «        }|                     dd¬¦  «         |                     d	d¬¦  «         |                     | dd …         ¦  «        \  }}|r&t          d
|d         › �t          j        ¬¦  «         dS t          j
        ¦   «         }	 t          |¦  «        \  }}t          |¦  «        }|dz  dz  }|j        r!t          j                             |¦  «         dS |j        r‡|                     ¦   «         r|                     d¬¦  «        nd}	|	|k    rt          dt          j        ¬¦  «         dS t          dt'          |d         ¦  «        › dt'          |¦  «        › d�¦  «         dS t)          j        ddt-          |j        ¦  «        ¬¦  «        \  }
}	 t1          j        |
dd¬¦  «        5 }|                     |¦  «         |                     ¦   «          t1          j        |                     ¦   «         ¦  «         d d d ¦  «         n# 1 swxY w Y   t1          j        ||¦  «         t0          j                             |¦  «        rt1          j         |¦  «         n9# t0          j                             |¦  «        rt1          j         |¦  «         w w xY wt1          j!        |d¦  «         t          d¦  «         t          dt'          |¦  «        › dt'          |d         ¦  «        › �¦  «         dS # tD          $ r)}t          d|› �t          j        ¬¦  «         Y d }~dS d }~ww xY w) Nc              3   ó   K  — | ]}|d v V — Œ	dS ))z--ajudaz--helpz-hNr   )r:   Úas     r   ú	<genexpr>zmain.<locals>.<genexpr>r   s(   è è € Ð
>Ð
>°ˆ1Ð+Ð+Ð
>Ð
>Ð
>Ð
>Ð
>Ð
>r   r#   r   F)Úadd_helpz	--dry-runÚ
store_true)Úactionz--verificarz2atualizar-catalogo-mensagens: argumento invalido: )ÚfilerQ   r5   r   r   r   Ú zMcatalogo-mensagens.json desatualizado; rode pp --atualizar-catalogo-mensagensz$catalogo-mensagens.json atualizado (r    z mensagem(ns), z
 fonte(s))zcatalogo-mensagens.z.tmp)ÚprefixÚsuffixÚdirÚwi´  z=Catalogo agregado atualizado: web-api/catalogo-mensagens.jsonzFontes: z arquivo(s); mensagens: zatualizar-catalogo-mensagens: )#Úanyr   ÚargparseÚArgumentParserÚadd_argumentÚparse_known_argsr   ÚsysÚstderrr   ÚcwdrO   rW   Údry_runÚstdoutÚwriteÚ	verificarrE   Ú	read_textÚlenÚtempfileÚmkstempr*   ÚparentÚosÚfdopenÚflushÚfsyncÚfilenoÚreplacer   ÚexistsÚunlinkÚchmodrF   )ÚargvÚapÚnsÚextrasr3   ÚcatalogorH   Útextor.   rK   ÚfdÚtmpnamer   Úes                 r   Úmainrˆ   q   sŸ  € Ý
Ð
>Ð
>°T¸!¸"¸"´XÐ
>Ñ
>Ô
>Ñ>Ô>ð Ý‰Œˆ�a�aÝ	Ô	 ¨%Ð	0Ñ	0Ô	0€BØ‡O‚O�K¨€OÑ5Ô5Ð5Ø‡O‚O�M¨,€OÑ7Ô7Ð7Ø×$Ò$ T¨!¨"¨"¤XÑ.Ô.�J€BˆØð ÝÐNÀ6È!Ä9ÐNÐNÕUXÔU_Ð`Ñ`Ô`Ð`ØˆqÝŒ8‰:Œ:€DðÝ% d™|œ|Ñˆ�*Ý˜xÑ(Ô(ˆØ�YÑÐ!:Ñ:ˆØŒ:ð 	ÝŒJ×Ò˜UÑ#Ô#Ð#Ø�1ØŒ<ð 	Ø7:·{²{±}´}ÐL�C—M’M¨7�MÑ3Ô3Ð3È"ˆEØ˜Š~ˆ~ÝÐeÕloÔlvÐwÑwÔwÐwØ�qÝÐ½¸XÀkÔ=RÑ9SÔ9SÐÐÕdgÐhrÑdsÔdsÐÐÐñ  Aô  Að  AØ�1ÝÔ&Ð.CÈFÕX[Ð\_Ô\fÑXgÔXgÐhÑhÔh‰ˆˆGð	#Ý”˜2˜s¨WÐ5Ñ5Ô5ð %¸Ø—’˜‘”�Ø—’‘	”	�	Ý”˜Ÿš™œÑ$Ô$Ð$ð%ð %ð %ñ %ô %ð %ð %ð %ð %ð %ð %øøøð %ð %ð %ð %õ ŒJ�w Ñ$Ô$Ð$åŒw�~Š~˜gÑ&Ô&ð #Ý”	˜'Ñ"Ô"Ð"øøõ Œw�~Š~˜gÑ&Ô&ð #Ý”	˜'Ñ"Ô"Ð"Ð"ð#øøøå
Œ��eÑÔÐÝÐNÑOÔOÐOÝÐ^�˜Z™œÐ^Ð^Å#ÀhÈ{ÔF[ÑB\ÔB\Ð^Ð^Ñ_Ô_Ð_ØˆqøÝð ð ð ÝÐ2¨qÐ2Ð2½¼ÐDÑDÔDÐDØˆqˆqˆqˆqˆqøøøøðøøøsj   ÃAL8 Ä"AL8 Å86L8 Æ0,L8 ÇJ$ Ç4AIÉJ$ ÉIÉJ$ ÉIÉJ$ É04L8 Ê$6KËAL8 Ì8
M+ÍM&Í&M+Ú__main__)r   N)Ú__doc__rf   r   rv   rj   rs   Úpathlibr   rD   r8   r   r   r2   rO   r*   rW   rˆ   Ú__name__Ú
SystemExitr   r   r   r   ú<module>rŽ      s?  ððð ð €€€Ø €€€Ø 	€	€	€	Ø 
€
€
€
Ø €€€Ø Ð Ð Ð Ð Ð ð &ØØjØIØ?ØAðð €ð %Ð
%€ðð ð ð ð*˜ð ð ð ð ð
 ð ð ð ð ð& �ð  ð  ð  ð  ðF@˜3ð @ð @ð @ð @ð)ð )ð )ðV ˆzÒÐØ
ˆ*�T�T˜#œ(‘^”^Ñ
$Ô
$Ð$ð Ðr   