+
    rƒšj00  ã                   óŠ  € ^ RI t ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIHt ^ RIH	t	 ]	! R4      t
]
R,          t]
R,          t]
R,          t]
R,          t]
R	,          t]R
,          tRtRR0t0 R mt]P(                  ! R4      tR tR tR tR tR tR tR tR tR tR tR t R t!R t"R t#R t$R t%]&R8X  d
   ]%! 4        R# R# )!é    N)Údatetime)ÚPathz$/opt/rpgmultiplayer/updates/chaapaaiÚsourceÚversionsÚlauncherÚrelease_launcherzlatest.jsonúupdate_exclude.txtzChaapaai_Launcher.exez.gitÚ__pycache__zC^\d+\.\d+\.\d+(?:[A-Za-z][A-Za-z0-9]*|-[A-Za-z0-9][A-Za-z0-9.-]*)?$c                 ó^   € \        4        \        R V 4       \        P                  ! ^4       R# )zERROR:N)ÚprintÚsysÚexit)Úmessages   &Ú5/opt/rpgmultiplayer/updates/chaapaai/tools/publish.pyÚdier   ,   s   € Ü	„GÜ	ˆ(�GÔÜ‡H‚HˆQ†Kó    c                 ó„   € \         P                  V 4      '       g%   \        R \        V 4      ,           R,           4       R# R# )u   UngÃ¼ltige Version: z1  Beispiele: 1.2.1, 1.2.1a, 1.2.1beta2, 1.2.1-rc1N)Ú
VERSION_REÚ	fullmatchr   Úrepr)Úversions   &r   Úvalidate_versionr   2   s8   € Ü×Ñ ×(Ò(ÜØ"Ü�7‹mõàAõBö	
ñ )r   c                 ó0  € \         P                  ! 4       pV P                  R 4      ;_uu_ 4       p VP                  R4      pV'       g   MVP	                  V4       K.  RRR4       VP                  4       #   + '       g   i     TP                  4       # ; i)ÚrbNi   )ÚhashlibÚsha256ÚopenÚreadÚupdateÚ	hexdigest)ÚpathÚdigestÚfÚchunks   &   r   Úsha256_filer%   ;   so   € Ü�^Š^Ó€Fà	�‰�4�Œ˜AØØ—F‘F˜;Ó'ˆEçØà�M‰M˜%Ö ÷ 
ð ×ÑÓÐ÷ 
Žð ×ÑÓÐús   ¯/A6Á6B	c                  óÄ  € \         P                  4       '       g    \        R \        \         4      ,           4        \         P	                  RRR7      ;_uu_ 4       p \
        P                  ! V 4      pRRR4       \        X\        4      '       g   \        R4       T#   + '       g   i     L3; i  \         d&   p\        R\        T4      ,           4        Rp?LaRp?ii ; i)zlatest.json fehlt: Úrúutf-8©ÚencodingNz)latest.json konnte nicht gelesen werden: u&   latest.json enthÃ¤lt kein JSON-Objekt.)
ÚLATEST_FILEÚexistsr   Ústrr   ÚjsonÚloadÚ	ExceptionÚ
isinstanceÚdict)r#   ÚdataÚexcs      r   Úload_latestr5   J   s    € Ü×Ñ×ÒÜÐ!¤C¬Ó$4Õ4Ô5ðDÜ×Ñ˜c¨GÐ×4Ô4¸Ü—9’9˜Q“<ˆD÷ 5ô
 �dœD×!Ò!ÜÐ4Ô5à€K÷ 5×4ûäô DÜÐ7¼#¸c»(ÕB×CÑCûðDús5   »B/ ÁBÁ1B/ ÂB,	Â'B/ Â,B/ Â/CÂ:CÃCc                  ó¬   € \         P                  ! 4       P                  R 4      p \        RV ,           ,          p\        P
                  ! \        V4       V# )z%Y%m%d-%H%M%Szlatest.json.bak-)r   ÚnowÚstrftimeÚBASE_DIRÚshutilÚcopy2r+   )Ú	timestampÚbackups     r   Úbackup_latestr>   Z   s?   € Ü—’“×'Ñ'¨Ó8€IäØ˜YÕ&õ€Fô ‡L‚L”˜fÔ%à€Mr   c                 ó¸   € \         R ,          pVP                  \        P                  ! V ^RR7      R,           RR7       \        P
                  ! V\        4       R# )z.latest.json.tmpT©ÚindentÚensure_asciiÚ
r(   r)   N)r9   Ú
write_textr.   ÚdumpsÚosÚreplacer+   )r3   Ú	temp_files   & r   Úwrite_latestrI   f   sT   € ÜÐ-Õ-€Ià×ÑÜ�
Š
ØØØô	
ð õ		ð
 ð ô ô ‡J‚Jˆyœ+Ö&r   c                  ó¸  € . p \         P                  4       '       g   V # \         P                  R RR7      ;_uu_ 4       pV Fy  pVP                  4       pV'       g   K  VP	                  R4      '       d   K6  VP                  RR4      pVP	                  R4      '       d
   VR,          pV P                  V4       K{  	  RRR4       V #   + '       g   i     T # ; i)	r'   z	utf-8-sigr)   Ú#Ú\Ú/z./:é   NNN)ÚEXCLUDE_FILEr,   r   ÚstripÚ
startswithrG   Úappend)Úpatternsr#   Úraw_lineÚlines       r   Úload_exclude_patternsrV   u   s¾   € Ø€Hä×Ñ× Ò Øˆä	×	Ñ	ØØð 
÷ 
ô 
ð 
ãˆHØ—>‘>Ó#ˆDçÙà�‰˜s×#Ò#Ùà—<‘<  cÓ*ˆDà�‰˜t×$Ò$Ø˜B•x�à�O‰O˜DÖ!ñ ÷
ð* €O÷+
ö 
ð* €Oús   ¾6CÁ5*CÂ CÃC	c                 ó@  € V P                  4       pV P                  pV F{  p\        P                  ! VP                  4       VP                  4       4      '       d    R # \        P                  ! VP                  4       VP                  4       4      '       g   Kz   R # 	  R# )TF)Úas_posixÚnameÚfnmatchÚlower)Úrelative_pathrS   Úpath_stringÚfilenameÚpatterns   &&   r   Úis_excludedr`   “   s~   € Ø×(Ñ(Ó*€KØ×!Ñ!€HãˆÜ�?Š?Ø×ÑÓØ�M‰M‹O÷
ò 
ò ä�?Š?Ø�N‰NÓØ�M‰M‹O÷
ô 
ò ñ ñ r   c                  óT  € \        4       p / p. p\        P                  ! \        4       Fâ  w  r4pV Uu. uF  pV\        9  g   K  VNK  	  upVR &   V F´  pV\
        9   d   VP                  V4       K!  \        V4      V,          pVP                  \        4      p	\        V	V 4      '       d"   VP                  V	P                  4       4       K{  V	P                  4       p
RVP                  4       P                  R\        V4      /W&   K¶  	  Kä  	  V\        \        V4      4      3# u upi ):NNNÚsizer   )rV   rF   ÚwalkÚ
SOURCE_DIRÚEXCLUDED_DIRSÚLOCAL_ONLY_FILESrR   r   Úrelative_tor`   rX   ÚstatÚst_sizer%   ÚsortedÚset)rS   ÚfilesÚexcludedÚrootÚdirsÚ	filenamesÚdr^   Ú	full_pathr\   Úrelative_strings              r   Úcollect_game_filesrt   §   s*  € Ü$Ó&€Hà€EØ€Hä!#§¢¬Ö!4Ñˆ�Iñ ó
á�ØœÑ%÷ ˆAÙñ
ˆˆQ‰ó "ˆHàÔ+Ô+Ø—‘ Ô)Ùä˜T›
 XÕ-ˆIà%×1Ñ1ÜóˆMô ØØ÷ò ð —‘Ø!×*Ñ*Ó,ôñ ð ×&Ñ&Ó(ð ð
 ˜	Ÿ™Ó(×0Ñ0Øœ+ iÓ0ð&ˆEÓ"ó3 "ñ "5ðL ”&œ˜X›Ó'Ð'Ð'ùòI
s   ³D%ÁD%c                 ó¼   € V R ,          pV FL  p\         V,          pW#,          pVP                  P                  RRR7       \        P                  ! VV4       KN  	  R# )rl   T©ÚparentsÚexist_okN)rd   ÚparentÚmkdirr:   r;   )Úrelease_dirrl   Ú	files_dirrs   r   Údestinations   &&    r   Úcopy_game_filesr~   Ö   s`   € à˜gÕ%€Iã ˆä˜oÕ-ˆàÕ'ð 	ð 	×Ñ× Ñ ØØð 	!ô 	
ô
 	�ŠØØö	
ó !r   c                 ó    € R RRVR\        V4      RV/pV R,          pVP                  \        P                  ! V^RR7      R,           R	R
7       V# )ÚprojectÚchaapaair   Ú
file_countrl   úmanifest.jsonTr@   rC   r(   r)   )ÚlenrD   r.   rE   )r{   r   rl   ÚmanifestÚmanifest_paths   &&&  r   Úwrite_manifestr‡   ì   ss   € ð 	�:Ø�7Ø”c˜%“jØ�ð	€Hð 	�oÕ%ð ð ×ÑÜ�
Š
ØØØô	
ð õ		ð
 ð ô ð Ðr   c                 ó8  € \        V 4       \        P                  4       '       g    \        R \	        \        4      ,           4       \
        V ,          pVP                  4       '       d   \        R\	        V4      ,           4       \        4       p\        4        \        R4       \        R4       \        R4       \        RVP                  RR4      4       \        RV 4       \        RVP                  R	R4      4       \        4        \        4       w  r4\        R
\        V4      4       \        R\        V4      4       \        4        VP                  RRR7        \        R4       \        VV4       \        R4       \        VV V4      p\        4       pRVR&   WR&   RV  R2VR&   RV  R2VR&   \        V4       \        4        \        R4       \        R4       \        R4       \        RT 4       \        R\        T4      4       \        RT4       \        RT4       \        4        \        R4       \        TP                  R	R4      4       R #   \          d@    \        4        \        R4        \"        P$                  ! T4       h   \          d     h i ; ii ; i)!zSource-Verzeichnis fehlt: zRelease existiert bereits: ú.==============================================zChaapa'ai GAME ReleasezAktuelle Spielversion:r   Ú?zNeue Spielversion:    zLauncher-Version:     Úlauncher_versionzDateien im Release:zAusgeschlossen:    TFrv   zKopiere Spieldateien...zErstelle Manifest...r�   r€   z	versions/z/manifest.jsonr…   z/files/rl   zFEHLER beim Release.zGAME-RELEASE ERFOLGREICHzSpielversion:zDateien:     zManifest:    zBackup:      u   Launcher blieb unverÃ¤ndert:znicht gesetztN)r   rd   r,   r   r-   ÚVERSIONS_DIRr5   r   Úgetrt   r„   rz   r~   r‡   r>   rI   r0   r:   Úrmtree)r   r{   Úlatestrl   rm   r†   r=   s   &      r   Úpublish_gamer�   	  sh  € ä�WÔä×Ñ×ÒÜØ(Ü”*‹oõô	
ô 	�wÕð ð ×Ñ×ÒÜØ)Ü�+Óõô	
ô
 ‹]€Fä	„GÜ	Ð
:Ô;Ü	Ð
"Ô#Ü	Ð
:Ô;Ü	Ð
"Ø
�*‰*�Y Ó
$ô&ä	Ð
" GÔ,Ü	Ð
"Ø
�*‰*Ð'¨Ó
-ô/ä	„Gä(Ó*�O€Eä	Ð
¤ U£Ô,Ü	Ð
¤ X£Ô/Ü	„Gà×ÑØØð ô ð
)äÐ'Ô(äØØô	
ô
 	Ð$Ô%ä&ØØØó
ˆô “ˆà&ˆˆyÑØ#ˆyÑà˜�y Ð/ð 	ˆzÑð ˜�y Ð(ð 	ˆw‰ô 	�VÔô 
„GÜ	Ð
:Ô;Ü	Ð
$Ô%Ü	Ð
:Ô;Ü	ˆ/˜7Ô#Ü	ˆ/œ3˜u›:Ô&Ü	ˆ/˜=Ô)Ü	ˆ/˜6Ô"Ü	„GÜ	Ð
(Ô)Ü	Ø�
‰
ØØó	
öøô- ô 
äŒÜÐ$Ô%ð	Ü�MŠM˜+Ô&ð 	øô ô 	Øàð	úð
ús1   ÅAI É JÉ0JÊJÊJÊJÊJÊJc                 ó
  € \        V 4       \        \        ,          pVP                  4       '       g   \	        R \        V4      ,           4       \        V ,          pV\        ,          pVP                  4       '       d   \	        R\        V4      ,           4       \        4       p\        4        \        R4       \        R4       \        R4       \        RVP                  RR4      4       \        RV 4       \        RVP                  R	R4      4       \        4        \        R
\        V4      4       \        4        VP                  RRR7        \        P                  ! VV4       \        V4      \        V4      8w  d   \        R4      h\        4       pRVR&   RV  R\         2VR&   WR&   \!        V4       \        4        \        R4       \        R4       \        R4       \        RT 4       \        RT4       \        R\        T4      4       \        RT4       \        4        \        R4       \        TP                  R	R4      4       R#   \"         d+     \        P$                  ! T4       h   \"         d     h i ; ii ; i)zLauncher-EXE fehlt: z$Launcher-Version existiert bereits: r‰   zChaapa'ai LAUNCHER ReleasezAktuelle Launcher-Version:r‹   rŠ   zNeue Launcher-Version:    zSpielversion bleibt:      r   zLauncher SHA256:TFrv   u/   SHA256 nach dem Kopieren stimmt nicht Ã¼berein.r�   r€   z	launcher/rM   r   zLAUNCHER-RELEASE ERFOLGREICHzLauncher-Version:zDatei:           zSHA256:          zBackup:          u    Spielversion blieb unverÃ¤ndert:N)r   ÚRELEASE_LAUNCHER_DIRÚLAUNCHER_EXEr,   r   r-   ÚLAUNCHER_DIRr5   r   r�   r%   rz   r:   r;   ÚRuntimeErrorr>   rI   r0   rŽ   )r   r   Údestination_dirr}   r�   r=   s   &     r   Úpublish_launcherr—   r  sX  € ä�WÔô 	Üõ	ð ð
 �=‰=�?Š?ÜØ"Ü�&‹kõô	
ô 	�wÕð ð
 	Üõ	ð ð
 ×Ñ×ÒÜØ2Ü�/Ó"õ#ô	
ô
 ‹]€Fä	„GÜ	Ð
:Ô;Ü	Ð
&Ô'Ü	Ð
:Ô;Ü	Ð
&Ø
�*‰*Ð'¨Ó
-ô/ä	Ð
&¨Ô0Ü	Ð
&Ø
�*‰*�Y Ó
$ô&ä	„Gä	ØÜ�FÓôô 
„Gà×ÑØØð ô ð
ä�ŠØØô	
ô
 �vÓ¤+¨kÓ":Ô:ÜØAóð ô “ˆà&ˆˆyÑà˜�y ¤, Ð0ð 	ˆzÑð &-Ð!Ñ"ô 	�VÔô 
„GÜ	Ð
:Ô;Ü	Ð
(Ô)Ü	Ð
:Ô;Ü	Ð
˜wÔ'Ü	Ð
˜{Ô+Ü	Ð
œ{¨;Ó7Ô8Ü	Ð
˜vÔ&Ü	„GÜ	Ð
,Ô-Ü	ˆ&�*‰*�Y Ó
$Ö%øô' ô ð	Ü�MŠM˜/Ô*ð 	øô ô 	Øàð	úð	ús1   ÅA(I ÉJÉI0É/JÉ0I>É;JÉ=I>É>Jc                  ó�  € \        4       p \        4        \        R 4       \        R4       \        R 4       \        4        \        RV P                  RR4      4       \        RV P                  RR4      4       \        RV P                  RR4      4       \        4        \        R	V P                  R
R4      4       \        RV P                  RR4      4       \        RV P                  RR4      4       \        4        \        P	                  4       '       d   \        R4       M\        R4       \
        P	                  4       '       d   \        R4       M\        R4       \        \        ,          pVP	                  4       '       d"   \        R4       \        R\        V4      4       M\        R4       \        4        \        R 4       R# )r‰   zCHAAPA'AI RELEASE STATUSzSpielversion:      r   zNICHT GESETZTzManifest:          r…   zDateien:           rl   zLauncher-Version:  r‹   zLauncher:          r   zLauncher-Updater:  Úlauncher_updaterzSource:             OKzSource:             FEHLTzExclude-Liste:      OKzExclude-Liste:      FEHLTzRelease-Launcher:   OKzLauncher SHA256:    zRelease-Launcher:   FEHLTN)	r5   r   r�   rd   r,   rO   r’   r“   r%   )r�   Úlauncher_sources     r   Úshow_statusr›   Õ  s€  € ä‹]€Fä	„GÜ	Ð
:Ô;Ü	Ð
$Ô%Ü	Ð
:Ô;Ü	„Gä	ØØ�
‰
�9˜oÓ.ôô
 
ØØ�
‰
�:˜Ó/ôô
 
ØØ�
‰
�7˜OÓ,ôô
 
„Gä	ØØ�
‰
ØØó	
ôô 
ØØ�
‰
ØØó	
ôô 
ØØ�
‰
ØØó	
ôô 
„Gä×Ñ×ÒÜÐ&Õ'äÐ)Ô*ä×Ñ×ÒÜÐ&Õ'äÐ)Ô*ô 	Üõ	ð ð
 ×Ñ×ÒÜÐ&Ô'ÜØ"Ü˜Ó(õ	
ô
 	Ð)Ô*ä	„GÜ	Ð
:Ö;r   c                  óÂ   € \        4        \        R 4       \        4        \        R4       \        4        \        R4       \        4        \        R4       \        4        R# )zUsage:z  python3 publish.py statusz  python3 publish.py game 1.2.1z#  python3 publish.py launcher 1.2.2N)r   © r   r   Úusagerž   &  s=   € ä	„GÜ	ˆ(„OÜ	„GÜ	Ð
'Ô(Ü	„GÜ	Ð
+Ô,Ü	„GÜ	Ð
/Ô0Ü	†Gr   c                  óž  € \        \        P                  4      ^8  d!   \        4        \        P                  ! ^4       \        P                  ^,          P                  4       P                  4       p V R8X  dK   \        \        P                  4      ^8w  d!   \        4        \        P                  ! ^4       \        4        R# V R8X  do   \        \        P                  4      ^8w  d!   \        4        \        P                  ! ^4       \        \        P                  ^,          P                  4       4       R# V R8X  do   \        \        P                  4      ^8w  d!   \        4        \        P                  ! ^4       \        \        P                  ^,          P                  4       4       R# \        4        \        P                  ! ^4       R# )rN   ÚstatusNÚgamer   )
r„   r   Úargvrž   r   rP   r[   r›   r�   r—   )Úcommands    r   Úmainr¤   3  s  € ä
Œ3�8‰8ƒ}�qÔÜŒÜ�Š�Œä�h‰h�q�k×ÑÓ!×'Ñ'Ó)€Gà�(ÔäŒs�x‰x‹=˜AÔÜŒGÜ�HŠH�QŒKäŒÙà�&ÔäŒs�x‰x‹=˜AÔÜŒGÜ�HŠH�QŒKäÜ�H‰H�Q�K×ÑÓô	
ñ 	à�*ÔäŒs�x‰x‹=˜AÔÜŒGÜ�HŠH�QŒKäÜ�H‰H�Q�K×ÑÓô	
ñ 	ä	„GÜ‡H‚HˆQ†Kr   Ú__main__>   úversion.txtrƒ   r	   úChaapaai_Launcher.py)'rZ   r   r.   rF   Úrer:   r   r   Úpathlibr   r9   rd   rŒ   r”   r’   r+   rO   r“   re   rf   Úcompiler   r   r   r%   r5   r>   rI   rV   r`   rt   r~   r‡   r�   r—   r›   rž   r¤   Ú__name__r�   r   r   Ú<module>r¬      s	  ðó Û Û Û 	Û 	Û Û 
Ý Ý ñ Ð6Ó7€à˜Õ €
Ø˜*Õ$€Ø˜*Õ$€ØÐ"4Õ4Ð à˜Õ&€ØÐ0Õ0€à&€ð Øð€òÐ ð �ZŠZØJó€
ò
ò
òòò 	ò'òò<ò(,(ò^
ò,ò:fòR`&òFN<òb
ò(ðV ˆzÔÙ†Fñ r   