�
3LGf�#���ddlmZddlmZmZmZddlmZmZm Z ddl
mZddlm
Z
ddlmZ ddlmZn#e$rZdZYdZ[ndZ[wwxYwd Zd
Zee��jee��jddgZd
dgZGd�de��ZdS)�)�gettext)�NotFound�
BadRequest�Unauthorized)�ShortcutHandler�ShortcutException�InvalidShortcutException)�SourcesListShortcutHandler)�URIShortcutHandler)�urlparse)� LaunchpadNz5https://ppa.launchpadcontent.net/{team}/{ppa}/ubuntu/z=https://private-ppa.launchpadcontent.net/{team}/{ppa}/ubuntu/zppa.launchpad.netzprivate-ppa.launchpad.net�main�
main/debugc����eZdZd�fd� Zed���Zed���Zed���Zed���Zed���Z ed���Z
d�fd
� Z�fd�Zd�Z
d
�Zd�Zd�Zd�Z�xZS)�PPAShortcutHandlerFc ���tt|��j|fi|��||_d|_d|_d|_d|_d|_t|�
|��|�|��|�|��f��s!td��|z}t|���|j�d|j��|_|���|jr3 |jn*#t($rttd�����wxYw|js�|j}|sdg}|jjrt1d��|jjrt4nt6}|�|j|j���}|j�d|�d|j�dd�|����}|� |��dSdS) NFz%ERROR: '%s' is not a valid ppa formatz-ubuntu-zERROR: Can't find pparzDPPA publishes dbgsym, you may need to include 'main/debug' component)�team�ppa� )!�superr�__init__�_lp_anon�_signing_key_data�_lp�_lpteam�_lpppa�_is_sourceslist�any�
_match_ppa�
_match_uri�_match_sourceslist�_r �teamname�ppaname� _filebase� _set_auth�lpppar�
_source_entry�
components�publish_debug_symbols�print�private�PRIVATE_PPA_URI_FORMAT�PPA_URI_FORMAT�format�binary_type�dist�join�_set_source_entry)
�self�shortcut�login�kwargs�msg�comps�
uri_format�uri�line� __class__s
��8/usr/lib/python3/dist-packages/softwareproperties/ppa.pyrzPPAShortcutHandler.__init__6s���0�� �$�'�'�0��D�D�V�D�D�D�!� ��
�!%������������$����D�O�O�H�-�-��O�O�H�-�-��+�+�H�5�5�7�8�8� 0��<�=�=��H�C�*�3�/�/�/�+/�=�=�=�$�,�,�G����������� K�
K��
�
�
��$�
K�
K�
K�.�q�1H�/I�/I�J�J�J�
K�����!� )��O�E��
b�����:�3�b��`�a�a�a�48�:�3E�Y�/�/�>�J��#�#���D�L�#�I�I�C�%)�%5�%5�%5�s�s�s�D�I�I�I�s�x�x�PU����W�D��"�"�4�(�(�(�(�(� )� )s�,C4�4'Dc��tsdS|jsG|jr
tj}ntj}||j�d|jj��dd���|_|jS)N�.�
production�devel)�service_root�version)r
rr�login_anonymously�
login_with�
__module__r=�__name__)r4�
login_funcs r>�lpzPPAShortcutHandler.lp_sq��� ��4��x� 3��}�
2�&�8�
�
�&�1�
�!�z�T�_�_�_�d�n�>U�>U�"V�/;�*1�3�3�3�D�H��x��c�0�|js� |j�|j��|_nc#t$r'td��|jz}t
|���t$r'td��|jz}t
|���wxYw|jS)Nz8ERROR: user/team '%s' not found (use --login if private)z"ERROR: invalid user/team name '%s')rrJ�peopler#rr"rr�r4r8s r>�lpteamzPPAShortcutHandler.lpteamms����|� -�
-�#�w�~�~�d�m�<�<������
-�
-�
-��S�T�T�W[�Wd�d��'��,�,�,��
-�
-�
-��=�>�>���N��'��,�,�,�
-�����|�s
�$.�A Bc�@�|js� |j�|j���|_nj#t$r.td��|j|jfz}t|���t$r'td��|jz}t|���wxYw|jS)N)�namez5ERROR: ppa '%s/%s' not found (use --login if private)zERROR: invalid ppa name '%s') rrO�getPPAByNamer$rr"r#rrrNs r>r'zPPAShortcutHandler.lpppazs����{� -�
-�"�k�6�6�D�L�6�I�I������
-�
-�
-��P�Q�Q��
�t�|�4�5��'��,�,�,��
-�
-�
-��7�8�8�4�<�G��'��,�,�,�
-�����{�s
�%/�A'Bc��|jjS�N)r'�description�r4s r>rUzPPAShortcutHandler.description�s
���z�%�%rKc��|jjSrT)r'�web_linkrVs r>rXzPPAShortcutHandler.web_link�s
���z�"�"rKc��|js�|j���}|jj}|st td����n�d|vrt td����n`||�|��vrItd��|d�|�|����fz}t|���||_|jS)NzHWarning: could not get PPA signing_key_fingerprint from LP, using anyway�redactedzAPrivate PPA fingerprint redacted, using key anyway (LP: #1879781)z6Fingerprints do not match, not importing: '%s' != '%s'�,) rr'�getSigningKeyData�signing_key_fingerprintr+r"�fingerprintsr2r)r4�key�fingerprintr8s r>�trustedparts_contentz'PPAShortcutHandler.trustedparts_content�s����%�
)��*�.�.�0�0�C��*�<�K��
-��a�b�c�c�d�d�d�d��{�*�*��a�[�\�\�]�]�]�]� �D�$5�$5�c�$:�$:�:�:��Q�R�R�#�S�X�X�d�.?�.?��.D�.D�%E�%E�F�G��'��,�,�,�%(�D�"��%�%rKNc����tt|���|���}||jks|jr|Stt
|j��t
dg��z
��|_|S)N)�pkgtyper)rr�SourceEntry�source_typer)�list�setr9)r4rc�entryr=s �r>rdzPPAShortcutHandler.SourceEntry�sm����(�$�/�/�;�;�G�;�L�L���d�&�&�&�$�/�&��L�
�3�u�{�+�+�c�<�.�.A�.A�A�B�B����rKc�:��tt|���|��t|���j��tt��z
}|r4ttd��d� |��z��dSdS)Nz*Warning: components '%s' not valid for PPAr)
rrr3rgrdr9�PPA_VALID_COMPSr+r"r2)r4r<�
invalid_compsr=s �r>r3z$PPAShortcutHandler._set_source_entry�s����
� �$�'�'�9�9�$�?�?�?��D�,�,�.�.�4�5�5��O�8L�8L�L�
�� ]��!�@�A�A�C�H�H�]�D[�D[�[�\�\�\�\�\� ]� ]rKc�b�|�d��\}}}|���dksdS|�d��\}}}|�d��}d|vr9|�d��\}}}|���dkrdSd|vrdS||_|pd|_dS)N�:rF�/�~�ubuntuT)�
rpartition�lower� partition�lstripr#r$)r4r5�prefixr"rr#r$rps r>rzPPAShortcutHandler._match_ppa�s���#�.�.�s�3�3����C��|�|�~�~��&�&��5�!$���s�!3�!3���1�g��?�?�3�'�'���'�>�>�#*�#4�#4�S�#9�#9� �V�Q���|�|�~�~��)�)��u��g�~�~��u� ��
��'�%����trKc�j� |�t|����S#t$rYdSwxYw)NF)�_match_handlerrr )r4r5s r>r zPPAShortcutHandler._match_uri�sF�� ��&�&�'9�(�'C�'C�D�D�D��'� � � ��5�5� ���s�!$�
2�2c�~� |�t|����}n#t$rYdSwxYwd|_|S)NFT)rwr
r r)r4r5�handlers r>r!z%PPAShortcutHandler._match_sourceslist�sT�� ��)�)�*D�X�*N�*N�O�O�G�G��'� � � ��5�5� ����#����s�"%�
3�3c���t|���j��}|jtvrdS|j����d���d��}t|��dkrdS|d|_ |d|_
|j|_|j
|_|�|���j��dS)NFrn�r�T)rrdr;�hostname�PPA_VALID_HOSTNAMES�path�strip�split�lenr#r$�username� _username�password� _passwordr3r<)r4ry�parsedrs r>rwz!PPAShortcutHandler._match_handler�s����'�-�-�/�/�3�4�4����"5�5�5��5��{� � �"�"�(�(��-�-�3�3�C�8�8���t�9�9�q�=�=��5��Q���
��A�w��� �)��� �)������w�2�2�4�4�9�:�:�:��trKc��|js|jjsdS|jr |jrdS|jj���D]W}t|��}|j �
d|j�d|j�d���r|j
|_|j|_dS�Xtd��|j|jfz}t!|���)Nrnz/ubuntuzMCould not find PPA subscription for ppa:%s/%s, you may need to request access)rr'r,r�r�rJ�me�getArchiveSubscriptionURLsrr�
startswithr#r$r�r�r"r)r4�urlr�r8s r>r&zPPAShortcutHandler._set_auth�s����=� ��
� 2� ��F��>� �d�n� ��F��7�:�8�8�:�:� )� )�C��c�]�]�F��{�%�%�&O�$�-�&O�&O�$�,�&O�&O�&O�P�P�
�!'����!'�������
�
�d�e�e��M�4�<�0�1�C�#�C�(�(�(rK)FrT)rHrG�__qualname__r�propertyrJrOr'rUrXrardr3rr r!rwr&�
__classcell__)r=s@r>rr5sg�������')�')�')�')�')�')�R����X���
�
��X�
�����X���&�&��X�&��#�#��X�#��&�&��X�&�" � � � � � �]�]�]�]�]����(���������")�)�)�)�)�)�)rKr)rr"�lazr.restfulclient.errorsrrr�"softwareproperties.shortcuthandlerrrr �softwareproperties.sourceslistr
�softwareproperties.urir�urllib.parser�launchpadlib.launchpadr
�ImportError�er.r-r}r~rjr�rKr>�<module>r�sx��.!� � � � � �J�J�J�J�J�J�J�J�J�J�J�J�J�J�J�J�J�J�J�J�E�E�E�E�E�E�5�5�5�5�5�5�!�!�!�!�!�!��0�0�0�0�0�0�0�������I�I�I�I�I�I���������I��X���H�^���%��H�
#�$�$�-������<�(��B)�B)�B)�B)�B)��B)�B)�B)�B)�B)s�5�A�A�A |