
    -[i                        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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noble)wallabyxenayogazedantelopebobcatcaracal	dalmatianepoxyflamingogazpachoz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)superr1   __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msgrH   
validnamesdistcompsline	__class__s
            A/usr/lib/python3/dist-packages/softwareproperties/cloudarchive.pyr9   z$CloudArchiveShortcutHandler.__init__M   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)rK   rR   s    r[   descriptionz'CloudArchiveShortcutHandler.descriptionv   s       r\   c                     t         S r^   )WEB_LINKr_   s    r[   web_linkz$CloudArchiveShortcutHandler.web_linkz   s    r\   c                 \    t        j                  dt         j                         d       y )Nzapt-get install -y T)check)
subprocessrunUCA_KEYRING_PACKAGEsplitr_   s    r[   add_keyz#CloudArchiveShortcutHandler.add_key~   s$    ,-@,ABHHJRVWr\   c                 (    t         t        |          S r^   )r8   r1   _encode_filebase)rR   suffixrZ   s     r[   rl   z,CloudArchiveShortcutHandler._encode_filebase   s    0$HJJr\   c                     |j                  d      \  }}}|j                         t        vry|j                  d      \  }}}|sy|| _        |xs | j
                  xs t        | _        y)N:Fr4   T)
rpartitionr@   UCA_PREFIXES	partitionr:   rB   UCA_DEFAULT_POCKET)rR   rS   prefixr?   r-   r:   rB   s          r[   r<   z&CloudArchiveShortcutHandler._match_uca   se    #..s3C||~-!mmC0FAA/Ar\   c                 V    	 | j                  t        |            S # t        $ r Y yw xY wNF)_match_handlerr   r   rR   rS   s     r[   r=   z&CloudArchiveShortcutHandler._match_uri   s0    	&&'9('CDD' 		    	((c                 V    	 | j                  t        |            S # t        $ r Y yw xY wrv   )rw   r   r   rx   s     r[   r>   z.CloudArchiveShortcutHandler._match_sourceslist   s0    	&&'A('KLL' 		ry   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)NFr5   r4   T)r	   SourceEntryurihostnamerP   rW   rr   allr:   rB   rs   rQ   rY   )rR   handlerparsedrH   r?   r:   rB   s          r[   rw   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:r\   r^   )__name__
__module____qualname__r9   propertyr`   rc   rj   rl   r<   r=   r>   rw   __classcell__)rZ   s   @r[   r1   r1   L   sQ    ')R ! !  XKr\   r1   )rF   rf   r   r?   "softwareproperties.shortcuthandlerr   r   r   softwareproperties.sourceslistr   softwareproperties.urir   urllib.parser	   rD   rJ   rb   rP   rq   rC   rs   rh   r1    r\   r[   <module>r      sa  , 
   J J E 5 !iy i 		
 H H x h h X H h X X X  h!" #$ 9< ;@'
+ &q) , b/ br\   