o
    ÙKÕi_  ã                   @   s¦   d dl mZmZ d dlmZ d dlmZ d dlmZ d dl	m
Z
mZmZ G dd„ de
eƒZeZdefd	d
„Zdedefdd„Zeddedd�Zdddeg dddœZdS )é    )ÚaptÚsnap)ÚAPIEndpoint)ÚAdditionalInfo)ÚUAConfig)Ú
DataObjectÚFieldÚStringDataValuec                   @   s*   e Zd Zededd�gZdefdd„ZdS )ÚPackageManifestResultÚmanifest_datazAManifest of ``apt`` and ``snap`` packages installed on the system)Údocc                 C   s
   || _ d S ©N©r   )Úselfr   © r   úM/usr/lib/python3/dist-packages/uaclient/api/u/security/package_manifest/v1.pyÚ__init__   ó   
zPackageManifestResult.__init__N)Ú__name__Ú
__module__Ú__qualname__r   r	   ÚfieldsÚstrr   r   r   r   r   r
      s    üÿr
   Úreturnc                   C   s
   t tƒ ƒS r   )Ú_package_manifestr   r   r   r   r   Úpackage_manifest   r   r   Úcfgc                 C   sz   d}t  ¡ }|D ]}|jdkrdnd|j }|d |j||j¡7 }qt ¡ }|D ]}|dj|j|j|j	d�7 }q(t
|d�S )zœ
    This endpoint returns the status of installed packages (``apt`` and
    ``snap``), formatted as a manifest file (i.e., ``package_name\tversion``).
    Ú Úallú:z{}{}	{}
z!snap:{name}	{channel}	{revision}
)ÚnameÚchannelÚrevisionr   )r   Úget_installed_packagesÚarchÚformatr    Úversionr   Úget_installed_snapsr!   r"   r
   )r   ÚmanifestÚapt_pkgsÚapt_pkgr$   ÚpkgsÚpkgr   r   r   r   !   s   
ý
r   Úv1ÚPackagesN)r&   r    ÚfnÚoptions_clsz27.12Fzg
from uaclient.api.u.security.package_manifest.v1 import package_manifest

result = package_manifest()
z&pro api u.security.package_manifest.v1z=
{
    "package_manifest":"package1\t1.0\npackage2\t2.3\n"
}
)Úintroduced_inÚrequires_networkÚexample_pythonÚresult_classÚ
exceptionsÚexample_cliÚexample_json)Úuaclientr   r   Úuaclient.api.apir   Úuaclient.api.data_typesr   Úuaclient.configr   Úuaclient.data_typesr   r   r	   r
   ÚPackageManifestResultsr   r   ÚendpointÚ_docr   r   r   r   Ú<module>   s.    ü
õ