
    8f                        d dl mZ d dlZd dlmZ d dlmZ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 d d	lmZmZ d dlZ G d
 de      Z G d de      Z G d de      Z	 	 	 	 	 	 ddZy)    )annotationsN)Path)AnyIterableListOptional)WizardInterpreter)ManagerModInterface)SeverityContext)make_runner_context_factory)
SubPackageSubPackagesc                  H     e Zd ZU ded<   ded<   d fdZedd       Z xZS )	MO2SubPackagemobase.IFileTree_treez	List[str]_filesc                     t            |j                                | _        g  _        d fd} j                  j                  |       y )Nc                    j                   j                  |j                                t        j                  j
                  S N)r   appendpathmobase	IFileTreeCONTINUE)folderentryselfs     kC:\Program Files (x86)/Steam/steamapps/common/Skyrim Special Edition/MO2/plugins\installer_wizard\runner.pyfnz"MO2SubPackage.__init__.<locals>.fn   s-    KKuzz|,##,,,    )r   strr   zmobase.FileTreeEntryreturnzmobase.IFileTree.WalkReturn)super__init__namer   r   walk)r   treer    	__class__s   `  r   r%   zMO2SubPackage.__init__   s=    %
 	- 	

r!   c                    | j                   S r   )r   r   s    r   fileszMO2SubPackage.files"   s    {{r!   )r(   r   )r#   zIterable[str])__name__
__module____qualname____annotations__r%   propertyr,   __classcell__r)   s   @r   r   r      s(      r!   r   c                  4     e Zd ZU ded<   d fdZddZ xZS )MO2SeverityContextmobase.IOrganizer
_organizerc                0    t         |           || _        y r   )r$   r%   r7   )r   	organizerr)   s     r   r%   zMO2SeverityContext.__init__*   s    #r!   c                :    t        |t        j                         y )N)file)printsysstderr)r   texts     r   warningzMO2SeverityContext.warning.   s    d$r!   )r9   r6   )r?   r"   )r-   r.   r/   r0   r%   r@   r2   r3   s   @r   r5   r5   '   s    !!$%r!   r5   c                      e Zd ZU ded<   ded<   ded<   ddZedd       Zdd	Zdd
ZddZ	ddZ
ddZddZdddZddZddZddZy)MO2ManagerModInterfacer6   r7   zmobase.IPluginGame_gamer   _subpackagesc                V   || _         |j                         | _        | j                   j                         j	                  t
        j                        }t               | _        |D ]A  }t        |t
        j                        s|rQ|j                  |      t
        j                  j                  k(  r%| j                  j                  t        |             r|j                  d      s|j                  d      r%| j                  j                  t        |             |j!                         j#                         }t%        |      dk\  s|d   j'                         s|d   j)                         j+                  d      s| j                  j                  t        |             D y )Nz
INI TweaksINI   r      doc)r7   managedGamerC   gameFeaturesgameFeaturer   ModDataCheckerr   rD   
isinstancer   dataLooksValidVALIDr   r   existsr&   splitlenisdigitlower
startswith)r   r(   r9   checkerr   partss         r   r%   zMO2ManagerModInterface.__init__7   s?   #**,
//..0<<V=R=RS (M 	CE%!1!12--e48M8M8S8SS))00u1EF  <<-e1D%%,,]5-AB 

**,J!Oa((*a(33E:%%,,]5-AB'	Cr!   c                    | j                   S r   )rD   r+   s    r   subpackagesz"MO2ManagerModInterface.subpackagesT   s       r!   c                    t        j                  |      }t        j                  | j                  j                               }||k  ry||kD  ryyNrH   r   )r   VersionInforC   gameVersion)r   versionv1v2s       r   compareGameVersionz)MO2ManagerModInterface.compareGameVersionX   sF    (

 6 6 897"Wr!   c                    | j                   j                         j                  t        j                        }|syt        j
                  |      }t        j
                  |j                               }||k  ry||kD  ryyr\   )r7   rK   rL   r   ScriptExtenderr^   getExtenderVersion)r   r`   sera   rb   s        r   compareSEVersionz'MO2ManagerModInterface.compareSEVersionb   sk    __))+778M8MN( 5 5 787"Wr!   c                     yNrH    r   r`   s     r   compareGEVersionz'MO2ManagerModInterface.compareGEVersiono       r!   c                     yrj   rk   rl   s     r   compareWBVersionz'MO2ManagerModInterface.compareWBVersions   rn   r!   c                   	 |j                  d      rFt        | j                  j                         j	                  |            }|j                         sd }|S t        |      }|j                  j                         }|dk(  rd}| j                  j                  |d|j                  z         }|rt        |d         }|S d }|S )Nz... *r   )rV   r   rC   dataDirectoryabsoluteFilePathrQ   parentas_posixr7   	findFilesr&   )r   filepathr   rw   r,   s        r   _resolvezMO2ManagerModInterface._resolvew   s    		 t$

002CCHMND;;=  >D[[))+F}OO--fcDIIoFEE!H~  r!   c                ,     t         fd|D              S )Nc              3  @   K   | ]  }j                  |        y wr   )r{   ).0r   r   s     r   	<genexpr>z8MO2ManagerModInterface.dataFileExists.<locals>.<genexpr>   s     =44==&=s   )all)r   	filepathss   ` r   dataFileExistsz%MO2ManagerModInterface.dataFileExists   s    =9===r!   c                T    | j                   j                         j                  |      S r   )r7   
pluginList	loadOrder)r   filenamefallbacks      r   getPluginLoadOrderz)MO2ManagerModInterface.getPluginLoadOrder   s     ))+55h??r!   c                    | j                   j                         j                  |      }|t        j                  j
                  k(  ry|t        j                  j                  k(  ryy)NrG   r   r]   )r7   r   stater   PluginStateACTIVEINACTIVE)r   r   r   s      r   getPluginStatusz&MO2ManagerModInterface.getPluginStatus   sP    **,228<F&&---F&&///r!   c                b    | j                  |      }|r|j                         r|j                  S yNrs   )r{   is_filer&   r   r   path_s      r   getFilenamez"MO2ManagerModInterface.getFilename   s)    d#}}zz!r!   c                b    | j                  |      }|r|j                         r|j                  S yr   )r{   is_dirr&   r   s      r   	getFolderz MO2ManagerModInterface.getFolder   s)    d#||~zz!r!   N)r(   r   r9   r6   )r#   r   )r`   r"   r#   int)rz   r"   r#   zOptional[Path])r   r"   r#   bool)r]   )r   r"   r   r   r#   r   )r   r"   r#   r   )r   r"   r#   r"   )r-   r.   r/   r0   r%   r1   rZ   rc   rh   rm   rp   r{   r   r   r   r   r   rk   r!   r   rB   rB   2   sb    !!C: ! !@>@r!   rB   c                t    t        | |      }t        |      }t        |j                  ||      }t	        |      S r   )rB   r5   r   rZ   r	   )baser9   managerseverityfactorys        r   make_interpreterr      s9     %T95G!),H)'*=*=wQGW%%r!   )r   r   r9   r6   r#   zWizardInterpreter[Any])
__future__r   r=   pathlibr   typingr   r   r   r   wizard.interpreterr	   wizard.managerr
   wizard.severityr   wizard.utilsr   wizard.valuer   r   r   r   r5   rB   r   rk   r!   r   <module>r      sk    " 
  0 0 0 . + 4 0 J .% %@0 @F&
&'8&&r!   