
    eh                        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
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flamingoz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)superr0   __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msgrG   
validnamesdistcompsline	__class__s
            A/usr/lib/python3/dist-packages/softwareproperties/cloudarchive.pyr8   z$CloudArchiveShortcutHandler.__init__L   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)rJ   rQ   s    rZ   descriptionz'CloudArchiveShortcutHandler.descriptionu   s       r[   c                     t         S r]   )WEB_LINKr^   s    rZ   web_linkz$CloudArchiveShortcutHandler.web_linky   s    r[   c                 \    t        j                  dt         j                         d       y )Nzapt-get install -y T)check)
subprocessrunUCA_KEYRING_PACKAGEsplitr^   s    rZ   add_keyz#CloudArchiveShortcutHandler.add_key}   s$    ,-@,ABHHJRVWr[   c                 (    t         t        |          S r]   )r7   r0   _encode_filebase)rQ   suffixrY   s     rZ   rk   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:Fr3   T)
rpartitionr?   UCA_PREFIXES	partitionr9   rA   UCA_DEFAULT_POCKET)rQ   rR   prefixr>   r,   r9   rA   s          rZ   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   rQ   rR   s     rZ   r<   z&CloudArchiveShortcutHandler._match_uri   s0    	&&'9('CDD' 		    	((c                 V    	 | j                  t        |            S # t        $ r Y yw xY wru   )rv   r   r   rw   s     rZ   r=   z.CloudArchiveShortcutHandler._match_sourceslist   s0    	&&'A('KLL' 		rx   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)NFr4   r3   T)r	   SourceEntryurihostnamerO   rV   rq   allr9   rA   rr   rP   rX   )rQ   handlerparsedrG   r>   r9   rA   s          rZ   rv   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__r8   propertyr_   rb   ri   rk   r;   r<   r=   rv   __classcell__)rY   s   @rZ   r0   r0   K   sQ    ')R ! !  XKr[   r0   )rE   re   r   r>   "softwareproperties.shortcuthandlerr   r   r   softwareproperties.sourceslistr   softwareproperties.urir   urllib.parser	   rC   rI   ra   rO   rp   rB   rr   rg   r0    r[   rZ   <module>r      s^  , 
   J J E 5 !iy i 		
 H H x h h X H h X X X  h!" #$ 7: ;@'
+ &q) , b/ br[   