
    PiJ*                    @   d Z ddlmZ ddlmZmZ ddlmZ g dZ e	h d          Z
 e	h d          Zi dh d	d
h ddh ddh ddh ddh ddddhdddhdh ddh ddh ddh ddh dd h d!d"dhd#dhZi dh d$d
h d%dh d&dh d'dd(hdh d)dh d*dd+d,hdd+d,hdh d-dd.d,hdh d/dh d0d h d1d"h d2d#d3d4hd5h d6Z e	h d7          Z e	h d8          Z e	h d9          ZdPd>ZdQd@ZdRdDZdSdFZdTdIZdUdKZdVdNZdOS )WzY
Docker command handler for Dippy.

Handles docker, docker-compose, and podman commands.
    )annotations)ClassificationHandlerContext)	bash_join)dockerdocker-composepodmanpodman-compose>   pstopdiffhelpinfologsportsaveimagestatsconfigeventsexportimagessearchsystemvolumecontexthistoryinspectnetworkversion>   cprmrmiruntagexeckillloadpullpushstopwaitbuildloginpauseprunestartswarmattachcommitcreateimportlogoutrenameupdatecomposerestartunpauser   >   lslistr   r   r   	container>	   r=   r   r   r>   r   r   r   r   r   r   >   r=   r>   r   r   r   >   dfr   r   r   >   r=   r>   showr   r   r=   r   secretservice>   r=   r   r>   r   r   stack>   r=   r   servicesnode>   r=   r   r   r:   >	   r=   r   r   r   r   r   r   r   r    pluginbuildx>   dur=   r   r    manifesttrust>   r"   r%   r(   r)   r*   r-   r0   r6   >   r"   r&   r'   r+   r0   r1   r5   r;   >   r"   r0   r5   connect
disconnect>   r"   r0   r5   r0   >   r"   user5   r6   r9   >
   r"   upr$   downr&   r)   r+   r-   r1   r;   r5   r"   >   r"   scaler5   r9   rollbackdeploy>   r"   demoter9   promote>   r"   r*   r5   enabledisableinstallupgrade>   r"   rN   baker-   r0   r5   >   r"   r*   r5   annotatesignrevoker2   >   
join-token
unlock-keycainitjoinleaveunlockr9   >
   -H-c-l--host--config--tlskey	--context	--tlscert--log-level--tlscacert>   -e-u-w--env--user	--workdir
--env-file>   -d-i-t--tty--detach--privileged--interactivetokens	list[str]returnlist[str] | Nonec                   d}|t          |           k     rN| |         }|dk    r|dz  }n:|t          v r|dz  }6|                    d          rd|v r|dz  }U|dz  }[|dz  }	 |t          |           k     r
| |d         ndS )z=Extract command from docker exec args (after container name).r   z--      -=N)lenEXEC_FLAGS_WITH_ARG
startswithr}   itokens      1/root/projects/gits/Dippy/src/dippy/cli/docker.py_extract_exec_inner_commandr      s    	A
c&kk//q	D==FA'''FAC   	e||QFA	QS[[6!""::d2    strc                f   t          |           dk     r| d         S t          |           }|t          |           k    r| d         S | |         }|dz   t          |           k     r| |dz   d         ng }|t          v s	|t          v r!t	          |          }|r| d          d| d| S | d          d| S )z#Get description for docker command.r   r   r   N )r   _find_action_idxSAFE_SUBCOMMANDSUNSAFE_SUBCOMMANDS_find_subcommand)r}   
action_idxactionrest
subcommands        r   _get_descriptionr      s    
6{{Qay!&))JS[[  ayJF'1A~F'C'C6*q.""##D!!!V/A%A%A%d++
 	8Qi77&77:777Qi""&"""r   ctxr   r   c                $   | j         }|d         }t          |          }t          |          dk     rt          d|          S t	          |          }|t          |          k    rt          d|          S ||         }|dz   t          |          k     r||dz   d         ng }|dk    s
|d         dv r&t          |||          }t          |rd	nd|          S |t          v s
|t          v rt          |          }|r|d
k    rV|dk    rP||v r ||	                    |          dz   d         ng }	t          |	          }
|
dk    }t          |rd	nd|          S |t          
                    |t                                v r=|dk    r&|dk    r t          |          rt          d|          S t          d	|          S |t          
                    |t                                v rt          d|          S |t          v r5|dv r t          |          rt          d|          S t          d	|          S |dk    rDt          |          }|r"t          |          }t          d||d          S t          d|          S t          d|          S )zClassify docker command.r   r   ask)descriptionr   Nr:      r   r
   allowrH   
imagetoolsr   r   r   >   r   r   r&   delegateT)inner_commandr   remote)r}   r   r   r   r   _check_composer   r   r   indexgetset_has_output_flagSAFE_ACTIONSr   r   )r   r}   basedescr   r   r   safer   sub_restimagetools_actioninner_tokens	inner_cmds                r   classifyr      s
   ZF!9DF##D
6{{Qe6666 "&))JS[[  e6666JF'1A~F'C'C6*q.""##D fQi+OOOfj$778gg5dKKKK !!!V/A%A%A%d++
 	?!!jL&@&@:D:L:LDJ//!35566RT  %5X$>$>!(I5%&@gg5dSSSS-11&#%%@@@@ g%%"f,,(.. - *%TBBBB%g4@@@@/33FCEEBBBB%e>>>> ''',<T,B,B'!%T::::g48888 2488 	!,//I!)d    e6666 %T2222r   intc                    d}|t          |           k     rT| |         }|                    d          r5|t          v r|dz   t          |           k     r|dz  }nd|v r|dz  }n|dz  }e|S t          |           S )z;Find the index of the docker action, skipping global flags.r   r   r   r   )r   r   GLOBAL_FLAGS_WITH_ARGr   s      r   r   r   1  s    	A
c&kk//q	C   	---!a%#f++2E2EQQQv;;r   r   
str | Nonec                B    | D ]}|                     d          s|c S dS )z/Find the first non-flag token (the subcommand).r   N)r   )r   r   s     r   r   r   B  s:      $$ 	LLL	4r   boolc                    t          |           D ]9\  }}|dv r dS |                    d          s|                    d          r dS :dS )z(Check if -o or --output flag is present.>   --output-oTr   z	--output=F)	enumerater   r   s      r   r   r   J  sl    f%%  5&&&44D!! 	U%5%5k%B%B 	44	5r   	start_idxr   c                >   h d}| d         dv rd}n'|t          |           k     r| |         dk    r|dz   }n|}|t          |           k     rQ| |         }|                    d          r0||v r|dz   t          |           k     r|dz  }nd|v r|dz  }n|dz  }`|d	v S d
S )zCheck docker-compose commands.>   -f-p--ansi--file	--profile--project-name--project-directoryru   r   r   r   r:   r   r   r   >	   r=   r   r   r   r   r   r   r   r    F)r   r   )r}   r   r   compose_flags_with_argr   r   s         r   r   r   T  s    	 	 	 ay888	S[[	 	 VI%6)%C%CM
c&kk//q	C   	...1q53v;;3F3FQQQ  

 

 
	
 5r   N)r}   r~   r   r   )r}   r~   r   r   )r   r   r   r   )r}   r~   r   r   )r   r~   r   r   )r}   r~   r   r   )r}   r~   r   r   r   r   r   r   )__doc__
__future__r   	dippy.clir   r   dippy.core.bashr   COMMANDS	frozensetr   UNSAFE_ACTIONSr   r   r   r   EXEC_FLAGS_NO_ARGr   r   r   r   r   r   r    r   r   <module>r      s#    # " " " " " 4 4 4 4 4 4 4 4 % % % % % %CCC y   :    F%999% 
 
 
% (((% '''% &&&%  000!%" tY#%$ tY%%& 666'%( %%%)%* ###+%,  
 
 
-%B '''C%D 000E%F G%H i[I% R-NNN-VVV- AAA- '''	-
 wi- :::-    -& x'-( x)-* >>>+-, h--. 111/-0 QQQ1-2    3-B 444C-D fhE-F  	 	 	G- b "	       iDDD  
 ILLL  
3 3 3 32# # # #"A3 A3 A3 A3H   "      , , , , , ,r   