U
    ‹oë_¤$  ã                   @   sn   d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZejdkrTd dl	Z	nd dl
Z
G dd„ dƒZdS )é    NÚntc                   @   sr   e Zd Zd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
dd„ Zddd„Zdd„ Zdd„ ZdS ) ÚUtilsúPython Scriptc                 C   sZ   || _ t ¡ }t tj tj t¡¡¡ tj d¡rFt	 
tdƒ¡| _ni | _t |¡ d S )Nzcolors.json)ÚnameÚosÚgetcwdÚchdirÚpathÚdirnameÚrealpathÚ__file__ÚexistsÚjsonÚloadÚopenZcolors_dict)Úselfr   Úcwd© r   ú>C:\Users\steff\Desktop\Mac OS\gibMacOS-master\Scripts\utils.pyÚ__init__   s    zUtils.__init__c                 C   s:   zt  ¡ dk}W n$ tk
r4   tjj ¡ dk}Y nX |S )Nr   )r   ÚgetuidÚAttributeErrorÚctypesÚwindllÚshell32ZIsUserAnAdmin)r   Zis_adminr   r   r   Úcheck_admin   s
    zUtils.check_adminc                 C   s¨   |   ¡ rd S tjdkr>tjj d dd tj	¡d |¡d d¡ nfzPt
jddgt
jt
jd}| ¡ d  d	d
¡ dd¡}t |tj	dgtj ¡ W n   tdƒ Y nX d S )Nr   Zrunasz"{}"é   ÚwhichÚsudo)ÚstdoutÚstderrr   zutf-8ÚignoreÚ
Ú Zpython)r   r   r   r   r   r   ZShellExecuteWÚformatÚsysÚ
executableÚ
subprocessÚPopenÚPIPEÚcommunicateÚdecodeÚreplaceÚexecvÚargvÚexit)r   ÚfileÚpÚcr   r   r   Úelevate   s    
(zUtils.elevatec                 K   sî   t | dd¡ƒ}t | dd¡ƒ}| dd¡}t |ƒ}t |ƒ}|rP| ¡ }| ¡ }|  | |¡| |¡¡\}}tt|ƒƒD ]p}	d dd„ ||	 D ƒ¡}
d d	d„ ||	 D ƒ¡}|  |
|¡\}
}t |
ƒt |ƒk rÒ dS t |
ƒt |ƒkrx d
S qxd S )NÚpadr#   Ú	separatorÚ.Úignore_caseTc                 s   s   | ]}|  ¡ r| ¡ V  qd S ©N©ÚisalnumÚlower©Ú.0r2   r   r   r   Ú	<genexpr>H   s      z)Utils.compare_versions.<locals>.<genexpr>c                 s   s   | ]}|  ¡ r| ¡ V  qd S r8   r9   r<   r   r   r   r>   I   s      F)ÚstrÚgetr;   Ú
pad_lengthÚsplitÚrangeÚlenÚjoin)r   Úvers1Úvers2Úkwargsr4   Úsepr7   Úv1_partsÚv2_partsÚiÚv1Úv2r   r   r   Úcompare_versions-   s$    zUtils.compare_versionsÚ0c                    s  t tˆ ƒƒdk rdn
tˆ ƒd ‰ t|ƒt|ƒks8||fS t |ƒt |ƒk rœt|ƒtkr~| ‡ fdd„tt |ƒt |ƒ ƒD ƒ¡ qþd ˆ t |ƒt |ƒ  |¡}nbt |ƒt |ƒk rþt|ƒtkrâ| ‡ fdd„tt |ƒt |ƒ ƒD ƒ¡ nd ˆ t |ƒt |ƒ  |¡}||fS )Nr   rP   r   c                    s   g | ]}t ˆ ƒ‘qS r   ©r?   ©r=   Úx©r4   r   r   Ú
<listcomp>\   s     z$Utils.pad_length.<locals>.<listcomp>z{}{}c                    s   g | ]}t ˆ ƒ‘qS r   rQ   rR   rT   r   r   rU   a   s     )rD   r?   ÚtypeÚlistÚextendrC   r$   )r   Úvar1Úvar2r4   r   rT   r   rA   T   s     **zUtils.pad_lengthc                 C   sè   |}d }|d kr||krd S |}t |ƒs,d S tj |¡rDtj |¡S |d |d krn|d dkrn|dd… }q|d dkr”tj |¡}||kr”|}q|d dkr®|dd … }q|d dkrÈ|d d… }qd dd	„ | d
¡D ƒ¡}qd S )Nr   éÿÿÿÿ)ú"ú'r   ú~)ú ú	ú\c                 S   s   g | ]}|  d d¡‘qS )ra   r#   )r,   rR   r   r   r   rU   †   s     z$Utils.check_path.<locals>.<listcomp>z\\)rD   r   r	   r   ÚabspathÚ
expanduserrE   rB   )r   r	   Z	test_pathZ	last_pathZtilde_expandedr   r   r   Ú
check_pathf   s0      zUtils.check_pathc           
      K   s  |  dd¡}|  dd ¡}|dkr>tjdkr2t|ƒS tt|ƒƒS tj |¡ tj ¡  t	j
dkrÀt ¡ }d}t ¡ ržt ¡ }t|ƒdkrŠqìnt|ƒdkrž||7 }t|ƒdkrjt ¡ | |krjqìqjn,t tjgg g |¡\}}}	|rìtj ¡  ¡ }tdƒ t|ƒdkr|S |S d S )	NÚtimeoutr   Údefault)é   r   r   r#   é   é    )r@   r%   Úversion_infoÚinputr?   Z	raw_inputr   ÚwriteÚflushr   r   ÚtimeÚmsvcrtÚkbhitÚgetcheÚordrD   ÚselectÚstdinÚreadlineÚstripÚprint)
r   ÚpromptrH   re   rf   Z
start_timerL   r2   ÚoÚer   r   r   Úgrabˆ   s4    


z
Utils.grabc                 C   s   t  t jdkrdnd¡ d S )Nr   ÚclsÚclear)r   Úsystemr   )r   r   r   r   r|   ¬   s    z	Utils.clsc                 K   st   |  dd¡}tjdkrd}d}| jD ].}|r>| |d d¡}q$| |d |d ¡}q$|r\|S tj |¡ t|ƒ d S )	NÚstrip_colorsFr   Tz[0mÚfindr#   r,   )	r@   r   r   Zcolorsr,   r%   r   rl   rw   )r   ÚmessagerH   r   Úresetr2   r   r   r   Úcprint¯   s    

zUtils.cprintNé7   c                 C   s¼   |d kr| j }|  ¡  td d| ¡ƒ tt|d t|ƒd  ƒd ƒ}d d| |d|| t|ƒ d  ¡}t|ƒ|d kr¤t|ƒ| }|d7 }|d | … d }t|ƒ td| ƒ d S )	Nz  {}ú#é   z	 #{}{}{}#r_   r   rg   z...#)r   r|   rw   r$   ÚintÚroundrD   )r   ÚtextÚwidthZmid_lenZmiddleZdir   r   r   ÚheadÚ   s     &z
Utils.headc                 C   s   t d ||¡ƒ d S )Nz
[8;{};{}t)rw   r$   )r   rŠ   Úheightr   r   r   Úresizeë   s    zUtils.resizec                 C   s¢   |   ¡  tdƒ tdƒ tdƒ tdƒ tdƒ tj ¡  ¡ j}|dkrZ|dk rZtdƒ n<|dkrt|d	k rttd
ƒ n"|d	krŽ|dk rŽtdƒ ntdƒ tdƒ d S )Nzby CorpNewt
z7Thanks for testing it out, for bugs/comments/complaintsz5send me a message on Reddit, or check out my GitHub:
zwww.reddit.com/u/corpnewtzwww.github.com/corpnewt
rg   é   zHave a nice morning!

é   zHave a nice afternoon!

é   zHave a nice evening!

zHave a nice night!

r   )r‹   rw   ÚdatetimeÚnowrn   Úhourr/   )r   Úhrr   r   r   Úcustom_quitî   s    


zUtils.custom_quit)r   )rP   )Nr„   )Ú__name__Ú
__module__Ú__qualname__r   r   r3   rO   rA   rd   r{   r|   rƒ   r‹   r   r•   r   r   r   r   r   
   s   
'
"$+
r   )r%   r   rn   Úrer   r‘   r   r'   r   ro   rs   r   r   r   r   r   Ú<module>   s   @

