
    h                     x    d dl Z d dlZd dlmZ d dlmZmZ d dlmZm	Z	 d dl
mZmZ d dlmZ  G d d          ZdS )	    N)import_module)listdirpathisfilejoin)TW_Cli_CommandTW_Cli_Args)
TW_Utilityc                   B    e Zd Zdej        fdZdefdZd Zd Z	d Z
dS )	TW_Cliparserc                 "    i | _         || _        d S )N)commandsInstancesr   )selfr   s     DC:\Users\Fabien\Documents\Programmation\testPython\classes\TW_Cli.py__init__zTW_Cli.__init__   s    !#    fileNamec                     |                     dd          }d| }	 t          |          }t          ||          } |            }n	#  d }Y nxY w|S )Nz.py z	commands.)replacer   getattr)r   r   	classNamemodule_namemoduleclsinstantiatedClasss          r   __importCommandszTW_Cli.__importCommands   so    $$UB//	-)--	%";//F&),,C #	% $  s   )A Ac                    t          j        t          j        t          j        t                    dd                    fdt                    D             }|D ](}|                     |          }||| j        |j        <   )d S )Nz..commandsc                 N    g | ]!}t          t          |                    |"S  r   ).0f
folderPaths     r   
<listcomp>z)TW_Cli.__loadCommands.<locals>.<listcomp>    s1    WWWq6$zSTBUBU;V;VWWWWr   )	r   abspathr   dirname__file__r   _TW_Cli__importCommandsr   name)r   commandsFilesr   r   r&   s       @r   __loadCommandszTW_Cli.__loadCommands   s    \$)DL,B,BD*"U"UVV
WWWWGJ$7$7WWW% 	S 	SH $ 5 5h ? ?  SAR&'8'=>	S 	Sr   c                 V   | j                             dd           i }| j                                        D ]!}|j        D ]}|||j        dz   |j        z   <   "t          d |                                D                       }|D ]!}| j                             d|z   d           "d S )Nz--command_nameT)required___c                 J    h | ] \  }}|                     d           d         !S )r1   r   )split)r$   keyvalues      r   	<setcomp>z(TW_Cli.__addArguments.<locals>.<setcomp>0   s-    WWWZS%SYYu--a0WWWr   z--F)r   add_argumentr   valuesargsr,   listitems)r   argsToParsecomargdistinctArgsr,   s         r   __addArgumentszTW_Cli.__addArguments(   s      !1D AAA)0022 	? 	?Cx ? ?;>CHu,sx788? WW;CTCTCVCVWWWXX  	B 	BDK$$TD[5$AAAA	B 	Br   c                    |                                   |                                  | j                                        }t	          |d          s!t
          j                            d           d S | j        t          |d                   *t
          j                            d|d         z              d S i }| j        t          |d                   }|j
        D ]}|j        dk    rbt	          ||j                  dk    st          ||j                  4|j         d}|||j        <   t
          j                            |           o|j        dk    rP|j        It	          ||j                  dk    st          ||j                  t          ||j        |j                   t          |                                          dk    rd S | j        t          |d                                       |           d S )Ncommand_namez"Command Name argument is mandatoryzNo commands founds with name Fz is mandatoryTr   )_TW_Cli__loadCommands_TW_Cli__addArgumentsr   
parse_argshasattrsysstderrwriter   r   r9   nullabler,   defaultValuesetattrlenr8   execute)r   
parsedArgsmissingArgsselectedCommandr>   
missingMsgs         r   parseAndExecutezTW_Cli.parseAndExecute5   s   [++--
z>22 	JABBBF!'*n"E"EF 	J<z.?YYZZZF0^1T1TU"' 	@ 	@C|u$ @'*ch*G*G5*P @T[\fhkhpTqTq @ #777
(2CH%
  ,,,,% @#*: @GT^`c`hLiLimrLr @v}  I  KN  KS  wT  wT @
CHc.>???{!!##$$q( 	Fwz>BBCKKJWWWWWr   N)__name__
__module____qualname__argparseArgumentParserr   strr+   rC   rD   rS   r#   r   r   r   r      s        h5    ! ! ! ! !S S SB B BX X X X Xr   r   )rW   rG   	importlibr   osr   r   os.pathr   r   classes.TW_Cli_Commandr	   r
   classes.TW_Utilityr   r   r#   r   r   <module>r_      s     



 # # # # # #                         > > > > > > > > ) ) ) ) ) )EX EX EX EX EX EX EX EX EX EXr   