Ë
    Î£j¾'  ã                   ó¦  — U d dl Z d dlZd dlmZmZmZ d dlmZ d dlm	Z	 d dl
mZ d dlmZmZmZ d dlmZmZmZmZmZmZmZ d dlmZmZmZmZ d d	lmZ d d
lm Z   e	e!«      jE                  «       jF                  jF                  Z$e	e%d<   e$dz  jM                  «        Z'e(e%d<   e G d„ d«      «       Z)e G d„ d«      «       a*e G d„ de)tT        «      «       a+dtV        ddfd„Z,dtV        ddfd„Z-ee G d„ d«      «       «       Z. ed¬«      e G d„ d«      «       «       Z/ee G d„ d«      «       «       Z0e.e/z  e0z  Z1tV        e%d<   e1e%d <   ed#d!„«       Z2d"„ Z3y)$é    N)Ú	dataclassÚfieldÚfields)Úcache)ÚPath)Údedent)Ú	AnnotatedÚClassVarÚcast)ÚArgÚ	ArgActionÚDestructuredÚGroupÚ
SubcommandÚcommandÚparse)ÚDESCRIPTIONÚPROGRAM_AUTHORÚPROGRAM_NAMEÚ
Sourcemods)ÚDep)ÚVERSIONÚ_install_dirz.noportableÚ_may_be_portablec                   ó  — e Zd ZU er@dZee eddej                  ¬«      f   e
d<   	 dZee eddej                  ¬«      f   e
d<   nd	Zee   e
d<   	 d	Zee   e
d<   	 dZee ed
d¬«      f   e
d<   	 d	Zee edd¬«      f   e
d<   y)ÚArgsTz-Pz--no-portable)ÚshortÚlongÚactionÚportablez-Uz--no-updateÚupdateFz-Mz--no-migrate)r   r   Úmigrate)r   Ú	propagateÚverboseN)Ú__name__Ú
__module__Ú__qualname__r   r    r	   Úboolr   r   Ústore_falseÚ__annotations__r!   r
   r"   r$   © ó    ú>C:\Users\pivot\Documents\cueki\casual-preloader\core\config.pyr   r      sµ   … áØimˆ�)˜D¡#¨D°Èy×OdÑOdÔ"eÐeÑfÓmð 	Jàeiˆ�	˜$¡¨$°]È9×K`ÑK`Ô aÐaÑbÓiØ9à#(ˆ�(˜4‘.Ó(ð 	Jà!&ˆ�˜‘Ó&Ø9àEI€GˆY�t™S t°.ÔAÐAÑBÓIØ:à@E€GˆY�t™S t°tÔ<Ð<Ñ=ÓEØ1r,   r   c                   ó¨  — e Zd ZU dZeZee   ed<   	 edz  Z	ee   ed<   	 e	dz  Z
ee   ed<   	 e	dz  Zee   ed<   	 ee   ed	<   	 ee   ed
<   	 ee   ed<   	  ed„ «      Zeee   z  ed<   	  ed„ «      Zeee   z  ed<   	  ed„ «      Zeee   z  ed<   	  ed„ «      Zeee   z  ed<   	  ed„ «      Zeee   z  ed<   	  ed„ «      Zeee   z  ed<   	  ed„ «      Zeee   z  ed<   	  ed„ «      Zeee   z  ed<   	  ed„ «      Zeee   z  ed<   	  ed„ «      Zeee   z  ed<   	  ed „ «      Zeee   z  ed!<   	  ed"„ «      Zeee   z  ed#<   y$)%ÚFolderConfigz-Configuration class for managing folder pathsÚinstall_dirÚdataÚdata_dirzmod_urls.jsonÚmod_urls_filezparticle_system_map.jsonÚparticle_system_map_fileÚproject_dirÚsettings_dirÚtemp_dirc                 ó   — | dz  S )NÚbackupr+   ©r5   s    r-   Ú<lambda>zFolderConfig.<lambda>C   s	   € ¸kÈHÒ>Tr,   Ú
backup_dirc                 ó   — | dz  S )Nzcasual-pre-loader.logr+   r:   s    r-   r;   zFolderConfig.<lambda>E   s
   € ¸kÐLcÒ>cr,   Úlog_filec                 ó   — | dz  S )NÚmodsr+   r:   s    r-   r;   zFolderConfig.<lambda>G   s	   € ¸kÈFÒ>Rr,   Úmods_dirc                 ó   — | dz  S )Nzmodsinfo.jsonr+   r:   s    r-   r;   zFolderConfig.<lambda>I   s	   € ¸kÈOÒ>[r,   Úmodsinfo_filec                 ó   — | dz  S )NÚ	particlesr+   ©rA   s    r-   r;   zFolderConfig.<lambda>L   s	   € ¸8ÀkÒ;Qr,   Úparticles_dirc                 ó   — | dz  S )NÚaddonsr+   rF   s    r-   r;   zFolderConfig.<lambda>N   s	   € ¸8ÀhÒ;Nr,   Ú
addons_dirc                 ó   — | dz  S )Nzapp_settings.jsonr+   ©r6   s    r-   r;   zFolderConfig.<lambda>Q   s
   € À\ÐTgÒEgr,   Úapp_settings_filec                 ó   — | dz  S )Nzaddon_metadata.jsonr+   rL   s    r-   r;   zFolderConfig.<lambda>S   s
   € À\ÐTiÒEir,   Úaddon_metadata_filec                 ó   — | dz  S )NÚto_be_processedr+   ©r7   s    r-   r;   zFolderConfig.<lambda>V   s
   € ÀxÐRcÒGcr,   Útemp_to_be_processed_dirc                 ó   — | dz  S )NÚto_be_referencedr+   rR   s    r-   r;   zFolderConfig.<lambda>X   s
   € ÀxÐRdÒGdr,   Útemp_to_be_referenced_dirc                 ó   — | dz  S )NÚto_be_patchedr+   rR   s    r-   r;   zFolderConfig.<lambda>Z   s
   € ÀxÐRaÒGar,   Útemp_to_be_patched_dirc                 ó   — | dz  S )NÚ	to_be_vpkr+   rR   s    r-   r;   zFolderConfig.<lambda>\   s
   € ÀxÐR]ÒG]r,   Útemp_to_be_vpk_dirN)r%   r&   r'   Ú__doc__r   r0   r
   r   r*   r2   r3   r4   r   r<   r>   rA   rC   rG   rJ   rM   rO   rS   rV   rY   r\   r+   r,   r-   r/   r/   -   sÙ  … á7à".€K�˜$‘Ó.Ø2Ø"-°Ñ"6€H�˜$‘Ó6Ø2à/7¸/Ñ/I€M˜h t™nÓIØ-Ø/7Ð:TÑ/TÐ˜h t™nÓTØ)à˜4‘.Ó ØØ˜4‘.Ó Ø#Ø˜4‘.Ó Ø%ñ '*Ñ*TÓ&U€J�4˜#˜d™)Ñ#ÓUØ9Ù&)Ñ*cÓ&d€H�4˜#˜d™)Ñ#ÓdØ$Ù&)Ñ*RÓ&S€H�4˜#˜d™)Ñ#ÓSØ(Ù&)Ñ*[Ó&\€M�4˜#˜d™)Ñ#Ó\ØIá&)Ñ*QÓ&R€M�4˜#˜d™)Ñ#ÓRØ1Ù&)Ñ*NÓ&O€J�4˜#˜d™)Ñ#ÓOØ.á,/Ñ0gÓ,hÐ˜  D¡	Ñ)ÓhØ+Ù,/Ñ0iÓ,jÐ˜  D¡	Ñ)ÓjØ+á25Ñ6cÓ2dÐ˜t c¨$¡iÑ/ÓdØdÙ25Ñ6dÓ2eÐ˜t c¨$¡iÑ/ÓeØuÙ25Ñ6aÓ2bÐ˜t c¨$¡iÑ/ÓbØEÙ25Ñ6]Ó2^Ð˜t c¨$¡iÑ/Ó^ØMr,   r/   c                   ó   — e Zd Zy©ÚConfigN©r%   r&   r'   r+   r,   r-   r`   r`   c   s   „ àr,   r`   ÚconfigÚreturnc                 óº  — t        j                  dt        › dt        j                  › d| j
                  rdnd› �«       t        j                  d| j                  › �«       t        j                  d| j                  › �«       t        j                  d| j                  › �«       t        j                  d	| j                  › �«       t        j                  d
«       y )NzVersion z on Ú z
(portable)Ú z!Application files are located in zProject files are written to zSettings files are in zLog is written to zDEBUG OUTPUT HAS BEEN ENABLED)ÚloggingÚinfor   ÚsysÚplatformr    r0   r5   r6   r>   Údebug)rb   s    r-   Ú
_log_startrl   h   s¦   € Ü‡L�L�8œG˜9 D¬¯©¨°aÈÏÊ¹Ð]_Ð7`ÐaÔbÜ‡L�LÐ4°V×5GÑ5GÐ4HÐIÔJÜ‡L�LÐ0°×1CÑ1CÐ0DÐEÔFÜ‡L�LÐ)¨&×*=Ñ*=Ð)>Ð?Ô@Ü‡L�LÐ% f§o¡oÐ%6Ð7Ô8ä‡M�MÐ1Õ2r,   c                 óZ   — | j                   rdd l}|j                  j                  «        y y )Nr   )r"   Úcore.migrationsÚ
migrations)rb   Úcores     r-   Ú_perform_migrationsrq   r   s!   € Ø‡~‚~Ûà�‰×ÑÕ!ð r,   c                   óP   — e Zd ZU dZdZeedz   ed¬«      f   ed<   	 de	de
fd„Zy)	ÚGuizOpens the GUI (default)NT)r   Úprofilerb   rc   c                 ó  — ddl m} t        |«       t        |«       | j                  �!ddlm}m} 	 | j                  |_         |«       S  |«       S # |$ r. t        j                  d| j                  › �«       t        d«      ‚w xY w)Nr   )Úgui)ÚProfileNotFoundÚsettingsz,invalid profile name given via `--profile`: é   )Úmainrv   rl   rq   rt   Úcore.settingsrw   rx   Úactive_profilerg   ÚcriticalÚ
SystemExit)Úselfrb   rv   rw   rx   s        r-   Ú__call__zGui.__call__�   sz   € Ýä�6ÔÜ˜FÔ#à�<‰<Ð#ß?ð$Ø*.¯,©,�Ô'ñ
 ‹uˆ‰s‹uˆøð	 #ò $Ü× Ñ Ð#OÐPT×P\ÑP\È~Ð!^Ô_Ü  “mÐ#ð$ús   ²A Á3B)r%   r&   r'   r]   rt   r	   Ústrr   r*   r`   Úintr€   r+   r,   r-   rs   rs   y   s9   … ñ "à59€GˆY�s˜T‘z¡3¨D¤>Ð1Ñ2Ó9Ø,ð˜vð ¨#ô r,   rs   Úprint_sourcemods)Únamec                   ó    — e Zd ZdZdedefd„Zy)ÚPrintSourcemodsz8Print all known sourcemods, their aliases and steam IDs.rb   rc   c                 ó6   — ddl m} t        D ]
  } ||«       Œ y)Nr   )Úprint)Úrichrˆ   r   )r   rb   ÚpprintÚ	sourcemods       r-   r€   zPrintSourcemods.__call__—   s   € Ý(ç#ˆIÙ�9Õð $ð r,   N©r%   r&   r'   r]   r`   r‚   r€   r+   r,   r-   r†   r†   “   s   „ ñ Cð˜vð ¨#ô r,   r†   c                   ó    — e Zd ZdZdedefd„Zy)ÚResetzReset settings to defaults.rb   rc   c                 ó   — t        |«       |j                  j                  «       s0|j                  j                  «       st	        j
                  d«       yddlm} |j                  t        d«      «      rDddl
m}  ||j                  d¬«        ||j                  d¬«       t	        j
                  d«       yt	        j                  d	«       y
)NzNothing to resetr   )ÚConfirmz�
            This will delete your saved profiles and settings.
            Your installed mods will not be affected.
            Are you sure?)ÚdeleteT)Únot_exist_okzSettings have been resetzReset cancelledry   )rq   rM   Úis_filerO   rg   ÚwarningÚrich.promptr�   Úaskr   Úcore.util.filer‘   r}   )r   rb   r�   r‘   s       r-   r€   zReset.__call__¤   s    € Ü˜FÔ#à×(Ñ(×0Ñ0Ô2°f×6PÑ6P×6XÑ6XÔ6ZÜ�O‰OÐ.Ô/Øå'à�;‰;Üð ó ô
õ .á�6×+Ñ+¸$Õ?Ù�6×-Ñ-¸DÕAÜ�O‰OÐ6Ô7Øä×ÑÐ.Ô/Ør,   NrŒ   r+   r,   r-   rŽ   rŽ       s   „ ñ &ð˜vð ¨#ô r,   rŽ   Ú
subcommandc                  ó˜  ‡— t        t        ddt        › dt        › d�¬«      t         G d„ d«      «       «       } t	        | t        t        › dt        › �d	dd
t        ddd¬«      ¬«      ¬«      }|j                  j                  rt         G d„ dt        «      «       a
nddlŠt         G ˆfd„dt        «      «       a
t         G d„ dt        t        «      «       at        t        |j                   «      at        di t#        |j                  «      D �ci c]-  }|j$                  t'        |j                  |j$                  «      “Œ/ c}¤Žayc c}w )z–
    Parses CLI args and globally sets the relevant `Config` instance and subcommand, only runs once per execution without being manually called.
    TzTLicensed under the terms of the GNU GPLv3 or any later version  
Copyright (c) 2026 z, zw contributors  
For a full list of contributors, run `git shortlog -snei --group=author --group=trailer:co-authored-by`)r„   Údefault_longÚepilogc                   óX   — e Zd ZU eZee   ed<    ee	¬«      Z
eedz   e«       f   ed<   y)ú_get_config.<locals>.CliÚargs)Údefault_factoryNr˜   )r%   r&   r'   r   r]   r   r   r*   r   rs   r˜   r	   Ú_Subcommandr   r+   r,   r-   ÚClir�   Í   s8   … ð ˆà˜4Ñ Ó áBGÐX[ÔB\ˆ
�I˜k¨DÑ0±*³,Ð>Ñ?Ó\Ø:r,   r¡   re   z-Vz"Print the version string and exit.ry   ÚHelpé   )Úsection)r   r   ÚhelpÚgroup)Úversionc                   ón   — e Zd ZU edz  dz  Zee   ed<   edz  dz  Zee   ed<   edz  dz  Z	ee   ed<   y)	r/   Úuserdatar1   r5   rb   r6   Útempr7   N)
r%   r&   r'   r   r5   r
   r   r*   r6   r7   r+   r,   r-   r/   r/   ì   sJ   … à+7¸*Ñ+DÀvÑ+MˆK˜( 4™.ÓMØ+7¸*Ñ+DÀxÑ+OˆL˜( 4™.ÓOØ+7¸*Ñ+DÀvÑ+MˆH˜( 4™.ÔMr,   r/   r   Nc                   ó€   •— e Zd ZW ° j                  ee«      ZW ° j                  ee«      ZW ° j                  ee«      Z
y)r/   N)r%   r&   r'   Úuser_data_pathr   r   r5   Úuser_config_pathr6   Úuser_cache_pathr7   )Úplatformdirss   €r-   r/   r/   ô   s9   ø„ á'×6Ñ6°|À^ÓTˆKÙ'×8Ñ8¸À~ÓVˆLÙ'×7Ñ7¸ÀnÓU‰Hr,   c                   ó   — e Zd Zyr_   ra   r+   r,   r-   r`   r`   ú   s   „ àr,   r`   r+   )r   r   r   r   r   r   r   r   rž   r    r/   r¯   r   r`   r   r    r˜   r   r„   Úgetattrrb   )r¡   rž   r   r¯   s      @r-   Ú_get_configr²   Å   sS  ø€ ô ÜØðÜ,Ð-¨R´¨~ð >rðrôô ÷;ð ;ó óð;ô ØÜÜˆn˜Aœg˜YÐ'ØØØ5Ü˜˜6¨1Ô-ô
ô	€Dð ‡y�y×ÒÜ	ô	Nœ<ó 	Nó 
ñ	Nó
 	ä	ö	Vœ<ó 	Vó 
ð	Vô
 ô””|ó ó ðô ”k 4§?¡?Ó3€JÜñ ä˜DŸI™IÔ&óá&ˆEð 	�
‰
”G˜DŸI™I u§z¡zÓ2Ñ2Ø&ññ �Fùò s   Ä2Ec                 óÜ   — | xdk(  r t        «        t        S xdk(  r t        «        t        S xdk(  r t        «        t        S dk(  rt        «        t        S t        dt        › d| › d�«      ‚)Nr`   r/   rb   r˜   zmodule 'z' has no attribute 'Ú')r²   r`   r/   rb   r˜   ÚAttributeErrorr%   )Úattrs    r-   Ú__getattr__r·     sV   € Ø
ÝÜŒMÜˆMÝÜŒMÜÐÝÜŒMÜˆMÛÜŒMÜÐä
˜8¤H :Ð-AÀ$ÀÀqÐIÓ
JÐJr,   )rc   N)4rg   ri   Údataclassesr   r   r   Ú	functoolsr   Úpathlibr   Útextwrapr   Útypingr	   r
   r   Úcappar   r   r   r   r   r   r   Úcore.constantsr   r   r   r   Úcore.util.depr   Úcore.versionr   Ú__file__ÚresolveÚparentr   r*   r“   r   r(   r   r/   r`   rl   rq   rs   r†   rŽ   r    r²   r·   r+   r,   r-   Ú<module>rÄ      s‘  ðÜ Û 
ß 0Ñ 0Ý Ý Ý ß ,Ñ ,ç Q× QÑ Qç PÓ PÝ Ý  ñ
 ˜(“^×+Ñ+Ó-×4Ñ4×;Ñ;€ˆdÓ ;Ø*¨]Ñ:×CÑCÓEÐEÐ �$Ó Eð ÷2ð 2ó ð2ð* ÷/Nð /Nó ð/Nðj ô	ˆT”<ó 	ó ð	ð3”vð 3 $ó 3ð"¤ð "¨4ó "ð 	Ø
÷ð ó ó 	ðñ0 	Ð Ô!Ø
÷ð ó ó "ðð 	Ø
÷ð ó ó 	ðð8 �OÑ# eÑ+€ô 	ƒØÓ ð ò<ó ð<ó~Kr,   