
    Pi                        d Z ddlmZ ddlmZmZ ddgZ eh d          ZdZ	 eh d          Z
d	Z eh d
          Z edh          Z eh d          Z eh d          ZddZddZddZd dZd!dZdS )"zO
Google Cloud CLI handler for Dippy.

Handles gcloud, gsutil, and bq commands.
    )annotations)ClassificationHandlerContextgcloudgsutil>   	list-tagsget-credentialslist-grantable-rolesgetinfolistreadshowstatusversiondescribeconfigurations)zlist-z	describe-zget->   configure-dockerprint-access-tokenaddscpsetsshstoploginpatchresetstartcreatedeletedeployenableexportimportremoverevokeupdatedisablerestartactivateundelete)zadd-iam-policy-bindingzremove-iam-policy-bindingzset-iam-policy>   r   r   r   r   >   get-ancestorsget-iam-policyr   r   >   r   r    r'   r+   tokens	list[str]returnstrc                    | r| d         nd}t          |           dk     r|S |dk    r+| dd         D ]}|                    d          sd| c S dS t          | dd                   }|s|S | d	d	                    |dd
                    S )z'Compute description for gcloud command.r   r      r      N-zgsutil     )len
startswith_extract_partsjoin)r.   basetokenpartss       1/root/projects/gits/Dippy/src/dippy/cli/gcloud.pyget_descriptionr@   T   s    ,6!99HD
6{{QxABBZ 	) 	)E##C(( )(((((()x6!"":&&E **SXXeBQBi((***    ctxr   r   c                   | j         }t          |          dk     r|r|d         nd}t          d|          S |d         }t          |          }|dk    r1t	          |          rt          d|          S t          d|          S t          |dd	                   }|st          d|          S d
|v sd|v sd|v rt          d|          S |d         dv rt          d|          S |d         dk    rt          |          dk    r|d         dk    rt          d|          S |d         dk    r?t          |          dk    r,|d         dv rt          d|          S t          d|          S |d         t          v rt          d|          S t          d|          S |d         dk    rDt          |          dk    r |d         t          v rt          d|          S t          d|          S |d         dk    rt          |          dk    rf|d         }|t          v rt          d|          S |t          v rt          d|          S d|v sd|v rt          d|          S t          d|          S t          d|          S d |D             }|D ]%}t          D ]}||v rt          d|          c c S &|D ]}|t          v rt          d|          c S |D ]R}|t          v rt          d|          c S t          D ],}	|                    |	          rt          d|          c c S -St          d|          S )zClassify gcloud command.r3   r   r   ask)descriptionr   allowr4   Nhelpz--helpz-h>   r   topicr   configr   r   >   r   r    r*   authprojectsziam-policy-bindingz
iam-policyc                    g | ]}|d v|	S )>   betaalpha ).0ps     r?   
<listcomp>zclassify.<locals>.<listcomp>   s#    CCC!1B(B(BA(B(B(BrA   )r.   r8   r   r@   _check_gsutilr:   CONFIG_SAFE_COMMANDSAUTH_SAFE_COMMANDSPROJECTS_SAFE_COMMANDSPROJECTS_UNSAFE_COMMANDSUNSAFE_ACTION_PATTERNSUNSAFE_ACTION_KEYWORDSSAFE_ACTION_KEYWORDSSAFE_ACTION_PREFIXESr9   )
rB   r.   r<   descr>   actionaction_partspartpatternprefixs
             r?   classifyrb   d   s2   ZF
6{{Q"0vayye6666!9D6""D x   	=!'t<<<<e66666!"":&&E 7e6666 (f,,g48888 Qx///g48888 Qx8u::>>Qx5  %e>>>>Qx+++E

Q8???)%TBBBB%g4@@@@Qx///%g4@@@@g48888 Qx6u::>>eAh*<<<!'t<<<<e6666 Qx:u::>>1XF///%g4@@@@111%e>>>>#v--1G1G%e>>>>!%T::::g48888 DCuCCCL  ? ?- 	? 	?G$%e>>>>>>>> 	?
  ; ;)))!%T:::::: *  A A'''!'t<<<<<<* 	A 	AFv&& A%g4@@@@@@@@A	A %T2222rA   c                   g }d}h d}|t          |           k     rt          |          dk     r| |         }|                    d          r0||v r|dz   t          |           k     r|dz  }nd|v r|dz  }n|dz  }st          |          r|dz  }|                    |           |dz  }|t          |           k     rt          |          dk     |S )zTExtract command parts (service/subgroup/action), skipping flags and their arguments.r   >   --role--zone--filter--format--member--region--secret	--cluster	--keyring	--project	--service
--instance
--location   r5   r4   r3   =)r8   r9   _looks_like_valueappend)r.   r>   iflags_with_argr=   s        r?   r:   r:      s   E	A  N  c&kk//c%jj1nnq	 C   	&&1q53v;;+>+>QQQ U## 	FA 	U	Q) c&kk//c%jj1nn, LrA   r=   boolc                    |                      d          rdS |                      d          rdS |                      d          rdS d| v rdS |                                 rdS |                      d          rdS dS )z8Check if token looks like a value rather than a command.zgs://Tzgcr.io/z//@'F)r9   isdigit)r=   s    r?   rs   rs      s        t	"" t t
e||t}} t t5rA   c                    t          |           dk     rdS d}| dd         D ]}|                    d          s|} n|sdS |dv S )zCheck gsutil commands.r3   FNr4   r5   >   dulscathashrG   statr   )r8   r9   )r.   r]   r=   s      r?   rS   rS      sr    
6{{QuF  $$ 	FE	  uKKKrA   N)r.   r/   r0   r1   )rB   r   r0   r   )r.   r/   r0   r/   )r=   r1   r0   rw   )r.   r/   r0   rw   )__doc__
__future__r   	dippy.clir   r   COMMANDS	frozensetrZ   r[   rY   rX   rT   rU   rV   rW   r@   rb   r:   rs   rS   rO   rA   r?   <module>r      sv    # " " " " " 4 4 4 4 4 4 4 4h !y    $ 6  #    >  !y!B!B!BCC Yx((  #;;;   %9%O%O%OPP + + + + R3 R3 R3 R3j+ + + +\   .L L L L L LrA   