
    |fB              	          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(e      Zy))    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                   h     e Zd Z fdZed        Zed        Zd Zd
 fd	Zd Z	d Z
d Zd	 Z xZS )CloudArchiveShortcutHandlerc                     t        t        | 
  |fi | d | _        t	        | j                  |      | j                  |      | j                  |      f      st        d      |z  }t        |      | j                  j                         | _        d| j                  z  | _        | j                  j                         | _        | j                  t        vr#t        d      | j                  z  }t        |      | j                  t        vr#t        d      | j                  z  }t        |      t        | j                     }t!        |t#        j$                  d      xs |f      }| j&                  |vrAt        d      | j                  j)                         |j)                         fz  }t        |      t*         d| j                  j)                          | _        | j                  dk(  r| xj,                  d	z  c_        | j.                  st| j&                   d
| j                   d| j                   }dj1                  | j2                        xs d}| j4                   dt6         d| d| }| j9                  |       y y )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msgrC   
validnamesdistcompsline	__class__s
            A/usr/lib/python3/dist-packages/softwareproperties/cloudarchive.pyr4   z$CloudArchiveShortcutHandler.__init__I   s'   )49(MfM DOOH-OOH-++H57 8 =>IC*3//kk'')*T[[8kk''){{//=>LC#C(({{k)67$++EC#C((t{{+(BII.A$B$NhOP
==
*@AKK**,h.A.A.CDEC#C(("e?4;;3I3I3K2LM;;*$.!!mm_Adkk]!DKK=ADHHT__-7E&&'qQtfAeWED""4(	 "    c                     | j                   S N)rF   rM   s    rV   descriptionz'CloudArchiveShortcutHandler.descriptionr   s       rW   c                     t         S rY   )WEB_LINKrZ   s    rV   web_linkz$CloudArchiveShortcutHandler.web_linkv   s    rW   c                 \    t        j                  dt         j                         d       y )Nzapt-get install -y T)check)
subprocessrunUCA_KEYRING_PACKAGEsplitrZ   s    rV   add_keyz#CloudArchiveShortcutHandler.add_keyz   s$    ,-@,ABHHJRVWrW   c                 (    t         t        |          S rY   )r3   r,   _encode_filebase)rM   suffixrU   s     rV   rg   z,CloudArchiveShortcutHandler._encode_filebase~   s    0$HJJrW   c                     |j                  d      \  }}}|j                         t        vry|j                  d      \  }}}|sy|| _        |xs | j
                  xs t        | _        y)N:Fr/   T)
rpartitionr;   UCA_PREFIXES	partitionr5   r=   UCA_DEFAULT_POCKET)rM   rN   prefixr:   r(   r5   r=   s          rV   r7   z&CloudArchiveShortcutHandler._match_uca   se    #..s3C||~-!mmC0FAA/ArW   c                 V    	 | j                  t        |            S # t        $ r Y yw xY wNF)_match_handlerr   r   rM   rN   s     rV   r8   z&CloudArchiveShortcutHandler._match_uri   s0    	&&'9('CDD' 		    	((c                 V    	 | j                  t        |            S # t        $ r Y yw xY wrq   )rr   r   r   rs   s     rV   r9   z.CloudArchiveShortcutHandler._match_sourceslist   s0    	&&'A('KLL' 		rt   c                    t        |j                         j                        }|j                  t        t              j                  k7  ry|j                         j
                  j                  d      \  }}}|j                  d      \  }}}t        ||f      sy|| _        |xs | j                  xs t        | _	        | j                  |j                         j                         y)NFr0   r/   T)r	   SourceEntryurihostnamerK   rR   rm   allr5   r=   rn   rL   rT   )rM   handlerparsedrC   r:   r5   r=   s          rV   rr   z*CloudArchiveShortcutHandler._match_handler   s    '--/334??h{3<<< ' 3 3 5 : : D DS I1f ( 2 23 71fHf%&AA/Aw22499:rW   rY   )__name__
__module____qualname__r4   propertyr[   r^   re   rg   r7   r8   r9   rr   __classcell__)rU   s   @rV   r,   r,   H   sQ    ')R ! !  XKrW   r,   )rA   ra   r   r:   "softwareproperties.shortcuthandlerr   r   r   softwareproperties.sourceslistr   softwareproperties.urir   urllib.parser	   r?   rE   r]   rK   rl   r>   rn   rc   r,    rW   rV   <module>r      sU  , 
   J J E 5 !iy i 		
 H H x h h X H h X X X  h!" #$ 14 ;@'
+ &q) , b/ brW   