o
     JAf"                     @   sn   	 d dl Z d dlZd dlZd dlmZ dgZdZdZdZdZ	dZ
d	Zeeee	e
egZG d
d dZdd ZdS )    N)quoteTemplateZffz-fzf---z.-z-.c                   @   sn   e Zd Z	 dd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd ZdS )r   c                 C   s   	 d| _ |   d S )Nr   )	debuggingresetself r	   /usr/lib/python3.10/pipes.py__init__U   s   zTemplate.__init__c                 C   s   	 d| j f S )Nz<Template instance, steps=%r>stepsr   r	   r	   r
   __repr__Z   s   zTemplate.__repr__c                 C   s   	 g | _ d S Nr   r   r	   r	   r
   r   ^      
zTemplate.resetc                 C   s$   	 t  }| jd d  |_| j|_|S r   )r   r   r   )r   tr	   r	   r
   cloneb   s
   zTemplate.clonec                 C   s   	 || _ d S r   )r   )r   flagr	   r	   r
   debugj   r   zTemplate.debugc                 C   s   	 t |ts
td|tvrtd|f |tkrtd| jr-| jd d tkr-td|d dkr=t	d	|s=td
|d dkrMt	d|sMtd| j
||f d S )Nz%Template.append: cmd must be a stringzTemplate.append: bad kind %rz-Template.append: SOURCE can only be prepended   z'Template.append: already ends with SINKr   f\$IN\bz#Template.append: missing $IN in cmd\$OUT\bz$Template.append: missing $OUT in cmd)
isinstancestr	TypeError	stepkinds
ValueErrorSOURCEr   SINKresearchappendr   cmdkindr	   r	   r
   r#   n   s   
zTemplate.appendc                 C   s   	 t |ts
td|tvrtd|f |tkrtd| jr-| jd d tkr-td|d dkr=t	d|s=td	|d dkrMt	d
|sMtd| j
d||f d S )Nz&Template.prepend: cmd must be a stringzTemplate.prepend: bad kind %rz+Template.prepend: SINK can only be appendedr   r   z,Template.prepend: already begins with SOURCEr   r   z$Template.prepend: missing $IN in cmdr   z%Template.prepend: missing $OUT in cmd)r   r   r   r   r   r    r   r   r!   r"   insertr$   r	   r	   r
   prepend~   s   
zTemplate.prependc                 C   s4   	 |dkr
|  |S |dkr| |S td|f )Nrwz,Template.open: rw must be 'r' or 'w', not %r)open_ropen_wr   )r   filerwr	   r	   r
   open   s   

zTemplate.openc                 C   sD   	 | j s	t|dS | j d d tkrtd| |d}t|dS )Nr)   r   r   z)Template.open_r: pipeline ends width SINK )r   r/   r    r   makepipelineospopenr   r-   r%   r	   r	   r
   r+      s   
zTemplate.open_rc                 C   sB   | j st|dS | j d d tkrtd| d|}t|dS )Nr*   r   r   z,Template.open_w: pipeline begins with SOURCEr0   )r   r/   r   r   r1   r2   r3   r4   r	   r	   r
   r,      s   
zTemplate.open_wc                 C   s   t | ||S r   )r2   systemr1   )r   infileoutfiler	   r	   r
   copy   s   zTemplate.copyc                 C   s(   t || j|}| jrt| d| }|S )Nzset -x; )r1   r   r   print)r   r6   r7   r%   r	   r	   r
   r1      s
   zTemplate.makepipelineN)__name__
__module____qualname__r   r   r   r   r   r#   r(   r/   r+   r,   r8   r1   r	   r	   r	   r
   r   R   s    

c                 C   s  g }|D ]\}}| d||dg q|s| g d |d dd \}}|d dkr5| s5|dg d | |d d< |d dd \}}|d dkrT|sT| g d ||d d< g }tdt|D ]:}||d  d }|| d }	|d dks|	d dkrt \}
}t|
 | | | ||d  d< || d< qc|D ]L}|\}}}}|d dkrd	t| d
 | }|d dkrdt| d
 | }|d dkr|r|d t| }|d dkr|r|d t| }||d< q|d d }|dd  D ])}|dd \}}|d dkrd|v rd| d }|d | }q|d | }q|rJd}|D ]}|d t| }q*dt|d  d }|d | d | }|S )Nr0   )r0   catr   r0   r   r      r   r      zOUT=z; zIN=-z <z >z{ z; }z |

zrm -f ztrap z; exitz 1 2 3 13 14 15)	r#   r'   rangelentempfilemkstempr2   closer   )r6   r   r7   listr%   r&   ZgarbageiZlkindZrkindfdZtempiteminfZoutfZcmdlistZrmcmdr-   Ztrapcmdr	   r	   r
   r1      sb   



r1   )r!   r2   rE   Zshlexr   __all__ZFILEIN_FILEOUTZSTDIN_FILEOUTZFILEIN_STDOUTZSTDIN_STDOUTr   r    r   r   r1   r	   r	   r	   r
   <module>   s"    ;c