3
d
                 @   st   d dl Z d dlZd dlZd dlZddlmZmZmZ ddlm	Z	 ddl
mZ dddZdd	d
Zdd Zdd ZdS )    N   )	InterfaceInputMultiPathtraits)get_trait_desc   )str2boolc             C   sb   | r^t |  tj|  }td x>tt|jj D ](\}}tj	|r2t
|tr2td|  q2W d S )NzAvailable Interfaces:z	%s)
__import__sysmodulesprintsortedlist__dict__itemsinspectisclass
issubclassr   )modulepkgkv r   9/tmp/pip-build-7vycvbft/nipype/nipype/utils/nipype_cmd.pylistClasses   s    
r   c       	      C   s   d }| r|r|rt | ttj| | }|j }xt|jjd dj D ]\}}dj	t
|||t|d d  }i }|jtjrd|d< t|dr|jr|jtrd|d< | j|fd	|i| qJ|jtrd
|d< | jd| f||d| qJW | |fS )N)Z	transient
r   
store_trueaction	mandatory+nargshelp*z--%s)destr!   )r	   getattrr
   r   Z
input_specr   inputsr   r   joinr   lenZis_trait_typeZBoolhasattrr   r   add_argument)	parserr   function	interfacer%   namespecdescargsr   r   r   add_options   s$     "

 r1   c             C   s   t d x|t| jj D ]j\}}t||d k	rt||}yt| j|| W q tk
r } zt d|t|f  W Y d d }~X qX qW t | j | j }t |j	 d S )Nzsetting function inputsz(Error when setting the value of %s: '%s')
r   r   r%   r   r$   setattr
ValueErrorstrrunoutputs)r,   optionsZ
input_name_valueeresr   r   r   run_instance/   s    
*
r<   c             C   s   t | dkr2| d jd r2t| d  tjd tjd| d d}|jdtdd	 |jd
tdd	 |j	| dd d}t
jj| d \}}tjd|j dj|g| dd  d}t||j|j\}}|j	| dd  d}t|| d S )Nr   r   -r   zNipype interface runner)descriptionprogr   zModule name)typer!   r,   zInterface name   )r0   zRun %s )r'   
startswithr   r
   exitargparseArgumentParserr)   r4   
parse_argsospathsplitr,   r&   r1   r   r<   )argvr*   parsedr8   r?   Zinterface_parserr,   r0   r   r   r   main?   s    
$rM   )N)NNN)rH   rE   r   r
   Zinterfaces.baser   r   r   Zinterfaces.base.supportr   Zmiscr   r   r1   r<   rM   r   r   r   r   <module>   s   


