U e5d�" � @ sl d dl Z d dlZd dlZd dlmZ dgZdZdZdZdZ dZ d Zeeee e egZG d d� d�Z dd� ZdS ) � N)�quote�TemplateZffz-fzf-�--z.-z-.c @ sl e Zd Zdd� Zdd� Zdd� Zdd� Zd d � Zdd� Zd d� Z dd� Z dd� Zdd� Zdd� Z dd� ZdS )r c C s d| _ | �� d S )Nr )� debugging�reset��self� r �/usr/lib64/python3.8/pipes.py�__init__U s zTemplate.__init__c C s d| j f S )Nz��stepsr r r r �__repr__Z s zTemplate.__repr__c C s g | _ d S �Nr r r r r r ^ s zTemplate.resetc C s" t � }| jd d � |_| j|_|S r )r r r )r �tr r r �cloneb s zTemplate.clonec C s || _ d S r )r )r �flagr r r �debugj s zTemplate.debugc C s� t |�t d�k rtd��|tkr.td|f ��|tkr>td��| jr^| jd d tkr^td��|d d kr~t�d |�s~td��|d d kr�t�d|�s�td ��| j� ||f� d S )N� z%Template.append: cmd must be a stringzTemplate.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) �type� TypeError� stepkinds� ValueError�SOURCEr �SINK�re�search�append�r �cmd�kindr r r r" n s zTemplate.appendc C s� t |�t d�k rtd��|tkr.td|f ��|tkr>td��| jr^| jd d tkr^td��|d dkr~t�d |�s~td ��|d dkr�t�d|�s�td��| j� d||f� d S ) Nr z&Template.prepend: cmd must be a stringzTemplate.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! �insertr# r r r �prepend~ s zTemplate.prependc C s6 |dkr| � |�S |dkr$| �|�S td|f ��d S )N�r�wz,Template.open: rw must be 'r' or 'w', not %r)�open_r�open_wr )r �fileZrwr r r �open� s �z Template.openc C sB | j st|d�S | j d d tkr*td��| �|d�}t�|d�S )Nr( r r z)Template.open_r: pipeline ends width SINKr )r r- r r �makepipeline�os�popen�r r, r$ r r r r* � s zTemplate.open_rc C sB | j st|d�S | j d d tkr*td��| �d|�}t�|d�S )Nr) r r z,Template.open_w: pipeline begins with SOURCEr )r r- r r r. r/ r0 r1 r r r r+ � s zTemplate.open_wc C s t �| �||��S r )r/ �systemr. )r �infile�outfiler r r �copy� s z Template.copyc C s( t || j|�}| jr$t|� d| }|S )Nzset -x; )r. r r �print)r r3 r4 r$ r r r r. � s zTemplate.makepipelineN)�__name__� __module__�__qualname__r r r r r r" r' r- r* r+ r5 r. r r r r r R s c C s� g }|D ]\}}|� d||dg� q|s:|� ddddg� |d dd� \}}|d dkrr| sr|�dddddg� | |d d<