o
    l>j7                     @  s>  d Z ddlmZ ddlmZ ddlZddlmZmZm	Z	m
Z
mZ ddlmZ ddlmZmZmZmZmZmZmZmZmZmZ ddlmZ dd	lmZ ejd
dZddd8ddZe dej!dddej"dddddddddeef	d9d-d.Z#e d/ej!d0d1dej"d0d2d3dej"dddddddddeef
d:d6d7Z$dS );zDrive commands.    )annotations)PathN)CLIAbort	get_stateresolve_drive_nodeservice_callwrite_response_to_pathnormalize_drive_node)
DEFAULT_LOG_LEVELDEFAULT_OUTPUT_FORMATHttpProxyOptionHttpsProxyOptionLogLevelOptionNoVerifySslOptionOutputFormatOptionSessionDirOptionUsernameOptionstore_command_options)console_table)DriveServicez'Browse and download iCloud Drive files.)helpFtrashdriver   pathstrr   boolc             
   C  s:   zt | ||dW S  ty } ztd| |d}~ww )z6Resolve a drive path or raise a user-facing CLI error.r   zPath not found: N)r   KeyErrorr   )r   r   r   err r    P/home/thesage/.local/lib/python3.10/site-packages/pyicloud/cli/commands/drive.py_resolve_drive_node_or_abort#   s   r"   list/z#Drive path, for example /Documents.z--trashz%Resolve the path from the trash root.ctxtyper.Contextusernamer   session_dirr   
http_proxyr   https_proxyr   no_verify_sslr   output_formatr   	log_levelr   returnNonec
              
     s   t | |||||||	d t| }
|
  td fdd jd}t|||d}|jdkrUt|}|
jr:|
	| dS |
j
td	g d
|d |d |d |d fg dS dd | D }|
jrh|
	| dS |
j
td| g d
dd |D  dS )z&List a drive folder or inspect a file.r'   r(   r)   r*   r+   r,   r-   Drivec                         j S Nr   r    apir    r!   <lambda>K       zdrive_list.<locals>.<lambda>account_namer   fileNz
Drive Item)NameTypeSizeModifiednametypesizemodifiedc                 S  s   g | ]}t |qS r    r	   ).0childr    r    r!   
<listcomp>b   s    zdrive_list.<locals>.<listcomp>zDrive: c                 S  s(   g | ]}|d  |d |d |d fqS )r@   rA   rB   rC   r    )rD   itemr    r    r!   rF   j   s    )r   r   get_apir   r:   r"   rA   r
   json_output
write_jsonconsoleprintr   get_children)r%   r   r   r'   r(   r)   r*   r+   r,   r-   stater   nodepayloadr    r5   r!   
drive_list.   sZ   



rQ   download.zDrive path to the file.z--outputzDestination file path.outputr   c              
     s   t | ||||||	|
d t| }|  td fdd jd}t|||d}|jdkr0td|jd	d
}t	|| |j
rK|t||jd dS |jt| dS )zDownload a Drive file.r0   r1   c                     r2   r3   r4   r    r5   r    r!   r7      r8   z drive_download.<locals>.<lambda>r9   r   r;   zOnly files can be downloaded.T)stream)r   r@   N)r   r   rH   r   r:   r"   rA   r   openr   rI   rJ   r   r@   rK   rL   )r%   r   rS   r   r'   r(   r)   r*   r+   r,   r-   rN   r   rO   responser    r5   r!   drive_downloadr   s,   


rW   )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   rS   r   r   r   r'   r   r(   r   r)   r   r*   r   r+   r   r,   r   r-   r   r.   r/   )%__doc__
__future__r   pathlibr   typerpyicloud.cli.contextr   r   r   r   r   pyicloud.cli.normalizer
   pyicloud.cli.optionsr   r   r   r   r   r   r   r   r   r   pyicloud.cli.outputr   pyicloud.services.driver   Typerappr"   commandArgumentOptionrQ   rW   r    r    r    r!   <module>   sN    0C