
    8fG                    |    d dl mZ d dl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ZddZdd	Zdd
ZddZddZy)    )annotationsN)Sequence)Path)cast)WizardINISettingWizardINISettingEditc                    g }| D ]j  }t        |t              s|j                   d|j                   d|j                   }|j
                  r|d|j
                   z  }|j                  |       l dj                  dgt        |      z         S )N  to z ; 
z); Generated by Mod Organizer 2 via Wizard)	
isinstancer   sectionsettingvaluecommentappendjoinsorted)tweakslinestweaklines       jC:\Program Files (x86)/Steam/steamapps/common/Skyrim Special Edition/MO2/plugins\installer_wizard\utils.pymake_obscript_ini_tweaksr      s    E %!56--%--U[[MB==c%--))DT 99ABVE]RSS    c                (   | D ci c]  }|j                   g  }}| D ]   }||j                      j                  |       " g }t        |      D ]  }t        ||   d       }|j                  d| d       |D ]m  }t        |t              r:|j
                   d|j                   }|j                  r#|d|j                   z  }nd|j
                   d}|j                  |       o |j                  d	        d	j                  |d d
       S c c}w )Nc                    | j                   S )N)r   )ms    r   <lambda>z*make_standard_ini_tweaks.<locals>.<lambda>#   s
    QYY r   )key[]z = z # z# z - disabledr   )	r   r   r   r   r   r   r   r   r   )r   r   sectionsr   ks_tweakstwr   s           r   make_standard_ini_tweaksr(      s   JP2QQ199b=2QH2Q &""1%& EH (1++>?q1X 	B"23**S
3::c"**..DBJJ<{3LL	 	T 99U3BZ  ' 3Rs   Dc                j    dd l }t        d|j                   d|j                         t	        |       S )Nr   zCannot merge INI Tweaks for .)file)sysprintnamestderrr(   )r   r+   r,   s      r   merge_standard_ini_tweaksr0   2   s,    	(1
5CJJG#F++r   c                   t        j                  dt         j                        }t        j                  dt         j                        }t        j                  dt         j                  t         j                  z        }t        j                  dt         j                  t         j                  z        }t        j                  dt         j                  t         j                  z        }|ddf|dd	f|d
dffdfd}t	        |d      5 }|j                         }	d d d        i }
i }| D ]  }t        |t              rV|j                  |
vri |
|j                  j                         <   ||
|j                  j                            |j                  <   i|j                  |vri ||j                  j                         <   |||j                  j                            |j                  <    g }	D ]*  }|j                         }|j                  |      }|r|j                  d      }n|}|j                  d|      j                         } ||      \  }}}|r|j                  d      }||
v r||
|   v r|
|   |   j                   }|j#                  ||      }d}|
|   |   j$                  r%t'        t(        |
|   |   j$                        }|dz  }|d|j                  d       dz  }| d| }|
|   |= n|s||v r|||   v rd| }|j+                  |       - |
j-                         D ]  }d}|j-                         D ]  }|j                  j                         dk(  r)|j                   d|j                   d|j                    }n(|j                   d|j                   d|j                    }|j$                  r|j$                  dz   }nd}| d| } |j+                  |        dj/                  |      S # 1 sw Y   xY w)Nz;.*z
;-(\w.*?)$z\s*set\s+(.+?)\s+to\s+(.*)z\s*setGS\s+(.+?)\s+(.*)z'\s*SetNumericGameSetting\s+(.+?)\s+(.*)setzset {} to {}setgszsetGS {} {}setnumericgamesettingzSetNumericGameSetting {} {}c                P    D ]   \  }}}|j                  |       }|s|||fc S  y)N)NNN)match)r   regex
sectionKeyformat_stringr6   _regex_tupless        r   _parse_obse_linez3merge_obscript_ini_tweaks.<locals>._parse_obse_lineG   s<    0= 	8,E:}KK%Ej-77	8  r   r    r
   z(set by MO2 via Wizard, was    )z  ; z;-r   z (set by MO2 via Wizard)z(set by MO2 via Wizard)r   )r   str)recompileUIopen	readlinesr   r   r   lowerr   rstripr6   groupsubstripr   formatr   r   rA   r   valuesr   )r   r+   	reComment	reDeletedreSetreSetGSreSetNGSr;   fpolinessettingsdeletedr   r   r   	maDeletedstrippedr6   section_keyr9   r   r   r   r   r:   s                           @r   merge_obscript_ini_tweaksr[   9   s   

5"$$'I

+RTT2IJJ7EEjj6rttDGzzGPRPTPTUH 
~&	'=)	*,IJM  
dC  B  <>H68G Be12}}H,24,,./=BHU]]((*+EMM:}}G+13++-.<AGEMM'')*5==9B E {{}OOD)	 q)HH==X.446,<X,F){Mkk!nGh&7h{6K+K -g6<<$++GU;K(199"3(=g(F(N(NOGsNG9%++a.9IKKtG9-[)'27*w{33D6{T?B ??$ ~~' 
	*G$$&%/!//*!GOO+<DP!//*!GOO+<Agmm_M!//,FF3V4y)D
	* 	T  99UG   s   	O;;Pc                    | D cg c]  }|j                   j                         dv   }}t        |      rt        |       S t	        |       S c c}w N)r2   r3   r4   )r   rH   allr   r(   )r   r'   is_sets      r   make_ini_tweaksr`      sS    RXLN

GGF 
 6{'//'//s   #Ac                    | D cg c]  }|j                   j                         dv   }}t        |      rt        | |      S t	        | |      S c c}w r]   )r   rH   r^   r[   r0   )r   r+   r'   r_   s       r   merge_ini_tweaksrb      sW    RXLN

GGF 
 6{(66(66s   #A)r   Sequence[WizardINISetting]returnrA   )r   rc   r+   r   rd   rA   )
__future__r   rB   collections.abcr   pathlibr   typingr   wizard.tweaksr   r   r   r(   r0   r[   r`   rb    r   r   <module>rk      s8    " 	 $   @T!0,Yx	0	7r   