a
    xd\$                     @   s   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d dlmZ G dd dZ	dddZ
dd	 Zd
d Zdd Zdd Zdd Zdd ZddgfddZdd Zedkreej dS )    N)	to_stringc                   @   s   e Zd Zdd ZdS )	DiffFlagsc                 C   s(   d| _ d| _d| _d| _d| _d| _d S )NF   )ignore_all_spaceignore_space_changeunified_diffnum_context_linesrecursive_diffstrip_trailing_cr)self r   b/var/www/html/stable-diffusion-webui/venv/lib/python3.9/site-packages/lit/builtin_commands/diff.py__init__   s    zDiffFlags.__init__N)__name__
__module____qualname__r   r   r   r   r   r      s   r    c                 C   sh   g }t t j|| D ]J\}}}|D ]}|t|| q&|D ]}||d f q@| t|f  S d S N)oswalkpathjoinappend
getDirTreesorted)r   basedirZchild_treesdirnameZ
child_dirsfilesZ	child_dirfilenamer   r   r   r      s    r   c              
   C   s   g }|D ]}|dkr`t j }tt|d}||  W d    q1 sT0    Y  qt|d}||  W d    q1 s0    Y  qzt	| ||t
dW S  t y   zt	| ||dW  Y S    t| || Y  Y S 0 Y n0 d S )N-rbFzutf-8)sysstdinfilenor   fdopendupr   	readlinesopencompareTwoTextFileslocalegetpreferredencodingUnicodeDecodeErrorcompareTwoBinaryFiles)flags	filepaths	filelinesfileZstdin_filenoZ	stdin_binZfile_binr   r   r   compareTwoFiles    s"    
..r1   c                 C   s   d}t tdrPtjtj|d |d |d  |d  | jd}dd |D }n8| jr^tj}ntj}||d |d |d |d | jd}|D ]}tj	t
| d}q|S )Nr   
diff_bytes   nc                 S   s   g | ]}|j d dqS )backslashreplace)errors)decode).0diffr   r   r   
<listcomp><       z)compareTwoBinaryFiles.<locals>.<listcomp>)hasattrdifflibr2   r   encoder   context_diffr!   stdoutwriter   )r-   r.   r/   exitCodeZdiffsfuncr:   r   r   r   r,   4   s$    

r,   c                    s  g }|D ]2}g }|D ]}|j |d}|| q|| qd}	dd }
dd  | jrd|
dd   | jsp| jrdd }tj|| jrd	nd
d}|
|  t|D ]\}} fdd|D ||< q| jrt	jnt	j
}||d |d |d |d | jdD ]}tjt| d}	q|	S )N)encodingr   c                    s    fddS )Nc                    s    | S r   r   xfgr   r   <lambda>V   r<   z7compareTwoTextFiles.<locals>.compose2.<locals>.<lambda>r   rH   r   rH   r   compose2U   s    z%compareTwoTextFiles.<locals>.compose2c                 S   s   | S r   r   rF   r   r   r   rK   X   r<   z%compareTwoTextFiles.<locals>.<lambda>c                 S   s   |  ddS )Nz

)replace)liner   r   r   rK   Z   r<   c                 S   s   | |  d S )NrM   )r   split)rO   	separatorr   r   r   rK   \   s    r    )rQ   c                    s   g | ]} |qS r   r   )r9   rO   rI   r   r   r;   b   r<   z'compareTwoTextFiles.<locals>.<listcomp>r3   r4   )r8   r   r
   r   r   	functoolspartial	enumerater   r>   r@   r   r!   rA   rB   r   )r-   r.   Zfilelines_binrE   r/   Z	lines_binlinesZline_binrO   rC   rL   ZignoreSpaceZignoreAllSpaceOrSpaceChangeidxrD   r:   r   rS   r   r(   K   s2    

r(   c                 C   s2   t j|rd}nd}tj|| |f d  d S )Nz6File %s is a directory while file %s is a regular filez<File %s is a directory while file %s is a regular empty filerM   r   r   getsizer!   rA   rB   )dir_path	file_pathmsgr   r   r   printDirVsFilek   s    r^   c                 C   s2   t j| rd}nd}tj|| |f d  d S )Nz6File %s is a regular file while file %s is a directoryz<File %s is a regular empty file while file %s is a directoryrM   rY   )r\   r[   r]   r   r   r   printFileVsDirr   s    r_   c                 C   s"   t jdtj| ||f  d S )NzOnly in %s: %s
)r!   rA   rB   r   r   r   )r   r   namer   r   r   printOnlyIny   s    ra   c              
   C   s^  |d |d  }}|d |d  }}|d d u rf|d d u rft | tj||d tj||d gS |d d u r|d d urttj||d tj||d  dS |d d ur|d d u rttj||d tj||d  dS d}dd |d D }dd |d D }	d\}
}|
t|k r|t|	k r||
 |	| k rjd}t||d ||
  |
d7 }
n||
 |	| krd}t||d |	|  |d7 }nT|t| |d |
 |d | gtj||d tj||d gO }|
d7 }
|d7 }q|
t|k r(d}t||d ||
  |
d7 }
q|t|	k rZd}t||d |	|  |d7 }q(|S )Nr   r3   c                 S   s   g | ]}|d  qS r   r   r9   noder   r   r   r;      r<   z#compareDirTrees.<locals>.<listcomp>c                 S   s   g | ]}|d  qS rb   r   rc   r   r   r   r;      r<   )r   r   )	r1   r   r   r   r_   r^   lenra   compareDirTrees)r-   	dir_treesZ
base_pathsZ	left_treeZ
right_treeZ	left_baseZ
right_baserC   Z
left_namesZright_nameslrr   r   r   rf   |   s`    

rf   c              
   C   s  t jdkrHtt jdr,tjt jjddt _ndd l}|t j	 t
j | dd  }zt|ddg\}}W nD tjy } z*t jd	t|  t d W Y d }~n
d }~0 0 t }d
d tdD \}}}|D ]\}	}
|	dkrd|_q|	dkrd|_q|	dkrd|_q|	drjd|_zt|
|_|jdk r<tW n(   t jd|
 t d Y n0 q|	dkr|d|_q|	dkrd|_qdsJ dqt|dkrt jd t d d}z|D ]z}|dkr t
j !|s t
j "t
j #t
$ |}|jr8|dkr(t jd t d |%t&| n
|%| q|jsZt'||}n
t(||}W n> t)y } z$t jdt|  d}W Y d }~n
d }~0 0 t | d S )Nwin32bufferrM   )newliner   r3   zwbuU:rzstrip-trailing-crzUnsupported: 'diff': %s
c                 s   s   | ]
}g V  qd S r   r   )r9   ir   r   r   	<genexpr>   r<   zmain.<locals>.<genexpr>r   z-wTz-bz-uz-Uz!Error: invalid '-U' argument: {}
z-rz--strip-trailing-crFzunhandled option   z Error: missing or extra operand
r   z&Error: cannot recursively compare '-'
z!Error: 'diff' command failed, %s
)*r!   platformr=   rA   ioTextIOWrapperrk   msvcrtZsetmoder#   r   O_BINARYgetopt
gnu_getoptGetoptErrorstderrrB   strexitr   ranger   r   r   
startswithintr   ZValueExceptionformatr	   r
   re   r   isabsrealpathr   getcwdr   r   r1   rf   IOError)argvrs   argsoptserrr-   r/   r.   rg   oarC   r0   r   r   r   main   sr    
 







r   __main__)r   )r>   rT   ru   rq   r)   r   r!   utilr   r   r   r1   r,   r(   r^   r_   ra   rf   r   r   r   r   r   r   r   <module>   s(   	
 :G