U
    [eT                     @   s|   d Z ddlZddlZddlZddlmZ ddlmZ ddlmZmZm	Z	m
Z
 G dd dZdd	d
Zedkrxee  dS )z@Simple command line interface to get/set password from a keyring    N   )core)backend)set_keyringget_passwordset_passworddelete_passwordc                   @   sl   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edd Zedd ZdS )CommandLineToolc                 C   s   t  | _| jjdddd dd | jjdddd d	d | jjd
ddd | jjdddd | jjdddd | jjddd | jjddd d S )Nz-pz--keyring-pathkeyring_pathzPath to the keyring backend)destdefaulthelpz-bz--keyring-backendkeyring_backendzName of the keyring backendz--list-backends
store_truezList keyring backends and exit)actionr   z	--disablezDisable keyring and exit	operationzget|set|del?)r   nargsservice)r   username)argparseArgumentParserparseradd_argumentself r   M/var/www/html/services/stratfitenv/lib/python3.8/site-packages/keyring/cli.py__init__   sL    
  zCommandLineTool.__init__c                 C   s|   | j |}t| t| |jr>t D ]}t| q,d S |jrPt	  d S | 
  |   t| d| j | j}| S )NZdo_)r   
parse_argsvarsupdateZlist_backendsr   Zget_all_keyringprintdisabler   _check_args_load_spec_backendgetattrr   
invalid_op)r   argvargskmethodr   r   r   run4   s    
zCommandLineTool.runc                 C   s2   | j r.| jd ks| jd kr.| j| j  d d S )Nz requires service and username)r   r   r   r   errorr   r   r   r   r$   F   s    zCommandLineTool._check_argsc                 C   s*   t | j| j}|d krtdt| d S )Nr   )r   r   r   
SystemExitr"   r   passwordr   r   r   do_getK   s    zCommandLineTool.do_getc                 C   s0   |  d| j d| j d}t| j| j| d S )NzPassword for 'z' in 'z': )input_passwordr   r   r   r/   r   r   r   do_setQ   s    zCommandLineTool.do_setc                 C   s   t | j| j d S )N)r   r   r   r   r   r   r   do_delW   s    zCommandLineTool.do_delc                 C   s   | j d d S )Nz)Specify operation 'get', 'del', or 'set'.)r   r-   r   r   r   r   r'   Z   s    zCommandLineTool.invalid_opc              
   C   st   | j d krd S z*| jr&tjd| j tt| j  W n6 tfk
rn } z| j	
d|  W 5 d }~X Y nX d S )Nr   z"Unable to load specified keyring: )r   r
   syspathinsertr   r   Zload_keyring	Exceptionr   r-   )r   excr   r   r   r%   ]   s    
z"CommandLineTool._load_spec_backendc                 C   s   |   pt|S )zRetrieve password from input.)pass_from_pipegetpass)r   promptr   r   r   r2   m   s    zCommandLineTool.input_passwordc                 C   s    t j  }|o| t j S )z4Return password from pipe if not on TTY, else False.)r5   stdinisattystrip_last_newlineread)clsZis_piper   r   r   r:   q   s    zCommandLineTool.pass_from_pipec                 C   s   | d|  d  S )z#Strip one last newline, if present.N
)endswith)strr   r   r   r?   w   s    z"CommandLineTool.strip_last_newlineN)__name__
__module____qualname__r   r,   r$   r1   r3   r4   r'   r%   r2   classmethodr:   staticmethodr?   r   r   r   r   r	      s   &
r	   c                 C   s&   | dkrt jdd } t }|| S )zMain command line interface.Nr   )r5   r(   r	   r,   )r(   clir   r   r   main}   s    rK   __main__)N)__doc__r;   r   r5    r   r   r   r   r   r   r	   rK   rE   exitr   r   r   r   <module>   s   p

