
    e                     b    d Z ddlZddlZddlmZ  ej        d          Z G d de          ZdS )z"
Download SBOM for artifact files
    N   )SubCommandBaserepo_clic                   6    e Zd ZdZd ZdefdZd Zd Zd Z	dS )	
SubCommandsbomc                    | j         j        r*|                     | j         j        | j         j                  S | j         j        ro| j         j        rc| j         j        rW| j         j        rK|                     | j         j        | j         j        | j         j        | j         j        | j         j                  S t          
                    d           t          
                    d           t          
                    d           d S )Nz&Not enough parameters to identify SBOMzEither enter ckey (--ckey)z_or specify package (--package), architecture (--os), version (--version) and familiy (--family))argsckeydownload_sbomchannelpackageosversionfamilydownload_sbom_for_channelloggerinfo)selfs    6lib/python3.11/site-packages/repo_cli/commands/sbom.pymainzSubCommand.main   s    9> 	I%%di&7HHH I			 	!	 	 		 11	!	!	!	 	   	<===0111m	
 	
 	
 	
 	
    r   c                     | j                             ||          }|j        r|                                }|j                            d                              d          d         }t          |d          5 }t          j        ||           d d d            n# 1 swxY w Y   t          
                    d|            |j        dk    r/t          
                    dt          |          z   dz              d S d S )	NzContent-Dispositionz	filename=r   wzSBOM file saved to i  zNo SBOM for z
 available)apiget_sbom_downloadokjsonheadersgetsplitopendumpr   r   status_codestr)r   r   r   respdatafilenamefs          r   r   zSubCommand.download_sbom'   s)   x))'4887 	:99;;D|''(=>>DD[QQRSTHh$$ #	$"""# # # # # # # # # # # # # # # KK8h88999s""KKT2\ABBBBB #"s   :BB #B c                 n    |                      |||||          }|D ]}|                     ||           d S )N)get_ckey_for_packager   )r   r   r   r   r   r   ckeysr   s           r   r   z$SubCommand.download_sbom_for_channel6   sO    ))'7GVRPP 	. 	.Dw----	. 	.r   c                    | j                             |||d          }| j                             ||||d                   }|                    d          }g }	|D ]f}
|
d         d         d         |k    rL|
d         d         d         |k    r4|	                    |
d                             d	          d
                    g|	S )Nr   total_countitemsmetadatazrepodata_record.jsonr   subdirr   /r   )r   get_artifact_filespopappendr!   )r   r   r   r   r   r   total_count_datar'   packagesretts              r   r+   zSubCommand.get_ckey_for_package<   s    866wQRSSx**Wf&6}&E
 
 88G$$ 	4 	4A*45i@GKKjM"89(CrII

1V9??3//2333
r   c                    |                     ddt                    x| _        }|                    ddd           |                    dd	
           |                    ddd           |                    ddd           |                    ddd           |                    ddd           |                    | j                   d S )Nr   zGet SBOM files)helpdescriptionz	--channelTz&set the channel containing the package)requiredr;   z	--packagezset the package)r;   z	--version zset the version of the package)defaultr;   z--osz#set the architecture of the packagez--familyzVArtifact family (i.e.: conda, python, cran, anaconda_project, anaconda_env, notebook).z--ckeyz ckey to identify a artifact file)r   )
add_parser__doc__	subparseradd_argumentset_defaultsr   )r   
subparsersrB   s      r   r@   zSubCommand.add_parserO   s,   %/%:%:)w &; &
 &
 	
 	$-U 	 	
 	
 	
 	{1BCCC*J 	 	
 	
 	
 	B%J 	 	
 	
 	
 	i 	 	
 	
 	
 	b'I 	 	
 	
 	
 	DI.....r   N)
__name__
__module____qualname__namer   r%   r   r   r+   r@    r   r   r   r      su        D
 
 
0C3 C C C C. . .  &/ / / / /r   r   )rA   r   loggingbaser   	getLoggerr   r   rJ   r   r   <module>rN      s                  		:	&	&`/ `/ `/ `/ `/ `/ `/ `/ `/ `/r   