o
    7eB                  	   @   s  d dl Z d dlZd dlmZ d dlmZmZmZ d dlm	Z	 d dl
mZ d dlmZ i ddd	dd
dddddddddddddddddddddddddddddddddddddZdZd Zd!Zd"d#gZd$d%gZed  Zd&ZG d'd( d(eZdS ))    N)gettext)ShortcutHandlerShortcutExceptionInvalidShortcutException)SourcesListShortcutHandler)URIShortcutHandler)urlparsefolsomprecisegrizzlyhavanaicehousejunotrustykilolibertymitakanewtonxenialocatapikequeensrockybionicsteintrainussurivictoriafocaljammy)wallabyxenayogazedantelopebobcatcaracalzUbuntu Cloud Archivez.https://wiki.ubuntu.com/OpenStack/CloudArchivez0http://ubuntu-cloud.archive.canonical.com/ubuntuzcloud-archiveucaupdatesproposedzubuntu-cloud-keyringc                       sj   e Zd Z fddZedd Zedd Zdd Zd fd
d	Zdd Z	dd Z
dd Zdd Z  ZS )CloudArchiveShortcutHandlerc           	         s  t t| j|fi | d | _t| || || |fs)td| }t	|| j
 | _d| j | _| j
 | _| jtvrKtd| j }t|| jtvr[td| j }t|t| j }t|tdph|f}| j|vrtd| j | f }t|t d| j  | _| jdkr|  jd	7  _| js| j d
| j d| j }d| jpd}| j dt d| d| }| | d S d S )Nz&not a valid cloud-archive format: '%s'zcloudarchive-%sz&not a valid cloud-archive pocket: '%s'znot a valid cloud-archive: '%s'CA_ALLOW_CODENAMEz)cloud-archive for %s only supported on %sz for OpenStack r)   z [proposed]-/ main)superr*   __init__canameany
_match_uca
_match_uri_match_sourceslist_r   lower	_filebasepocketUCA_VALID_POCKETSr   RELEASE_MAPsetosgetenvcodename
capitalizeUCA_description_source_entryjoin
componentsbinary_typeUCA_ARCHIVE_set_source_entry)	selfshortcutkwargsmsgr@   
validnamesdistcompsline	__class__ A/usr/lib/python3/dist-packages/softwareproperties/cloudarchive.pyr1   I   sB   





z$CloudArchiveShortcutHandler.__init__c                 C   s   | j S N)rC   rJ   rT   rT   rU   descriptionr   s   z'CloudArchiveShortcutHandler.descriptionc                 C   s   t S rV   )WEB_LINKrW   rT   rT   rU   web_linkv   s   z$CloudArchiveShortcutHandler.web_linkc                 C   s   t jdt  dd d S )Nzapt-get install -y T)check)
subprocessrunUCA_KEYRING_PACKAGEsplitrW   rT   rT   rU   add_keyz   s   z#CloudArchiveShortcutHandler.add_keyNc                    s   t t|  S rV   )r0   r*   _encode_filebase)rJ   suffixrR   rT   rU   ra   ~   s   z,CloudArchiveShortcutHandler._encode_filebasec                 C   sR   | d\}}}| tvrdS |d\}}}|sdS || _|p%| jp%t| _dS )N:Fr,   T)
rpartitionr8   UCA_PREFIXES	partitionr2   r:   UCA_DEFAULT_POCKET)rJ   rK   prefixr7   r'   r2   r:   rT   rT   rU   r4      s   z&CloudArchiveShortcutHandler._match_ucac                 C   &   z|  t|W S  ty   Y dS w NF)_match_handlerr   r   rJ   rK   rT   rT   rU   r5      
   z&CloudArchiveShortcutHandler._match_uric                 C   ri   rj   )rk   r   r   rl   rT   rT   rU   r6      rm   z.CloudArchiveShortcutHandler._match_sourceslistc                 C   s   t | j}|jt tjkrdS | jd\}}}|d\}}}t||fs,dS || _|p5| j	p5t
| _	| | j dS )NFr-   r,   T)r   SourceEntryurihostnamerH   rO   rf   allr2   r:   rg   rI   rQ   )rJ   handlerparsedr@   r7   r2   r:   rT   rT   rU   rk      s   z*CloudArchiveShortcutHandler._match_handlerrV   )__name__
__module____qualname__r1   propertyrX   rZ   r`   ra   r4   r5   r6   rk   __classcell__rT   rT   rR   rU   r*   H   s    )

r*   )r>   r\   r   r7   "softwareproperties.shortcuthandlerr   r   r   softwareproperties.sourceslistr   softwareproperties.urir   urllib.parser   r<   rB   rY   rH   re   r;   rg   r^   r*   rT   rT   rT   rU   <module>   st   	
