HEX
Server: Apache
System: Linux www3.pit.tblive.com 5.14.0-687.38.1.el9_8.x86_64 #1 SMP PREEMPT_DYNAMIC Wed Aug 12 17:19:12 EDT 2026 x86_64
User: awaldron (1020)
PHP: 8.1.34
Disabled: exec,passthru,shell_exec,system
Upload Files
File: //opt/imunify360/venv/share/imunify360/scripts/__pycache__/imunify_core_release.cpython-311.pyc
�

�qjW����dZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
mZmZddl
mZmZmZmZmZed��ZdZdZdZd	Zd
ZdZdZd
Zejd��Zejd��ZGd�de��Z deddfd�Z!dede"ddfd�Z#dede$fd�Z%de$de$fd�Z&dedede'fd�Z(dedefd�Z)dedeefd �Z*d!e$defd"�Z+ded#ed$e$ddfd%�Z,	dEd&ed'ee$ddfd(�Z-dede$dedefd)�Z.d*e$deddfd+�Z/d&ede$fd,�Z0deddfd-�Z1d.ed&eddfd/�Z2d0eedeefd1�Z3deddfd2�Z4ded*e$d3e'ddfd4�Z5d.eddfd5�Z6ded&eddfd6�Z7dedefd7�Z8dede$deddfd8�Z9de$deddfd9�Z:de$deddfd:�Z;dede$deddfd;�Z<deddfd<�Z=dedeefd=�Z>deddfd>�Z?deddfd?�Z@deddfd@�ZAdejBfdA�ZCdEdBeee$de"fdC�ZDeEdDkreFeD�����dS)FaInstall and atomically select versioned imunify-core Python releases.

This module deliberately uses only the Python standard library and never
imports ``defence360agent``: it must remain runnable while the live package
selection is being changed by rpm or dpkg maintainer scripts.
�N)�Path�
PurePosixPath)�Iterable�List�Optional�Sequence�Setz/opt/imunify360/venv�versionsz
imunify-core-z.imunify-core-current�defence360agentzimunify_core.egg-infoz.artifact-sha256z00-imunify-core-migration.pthz"# managed by imunify-core-release
z+^imunify-core-[A-Za-z0-9][A-Za-z0-9._+~-]*$z^imunify_core-[^/]+\.egg-info$c��eZdZdZdS)�ReleaseErrorz3The managed release layout is unsafe or incomplete.N)�__name__�
__module__�__qualname__�__doc__���E/opt/imunify360/venv/share/imunify360/scripts/imunify_core_release.pyr
r
#s������=�=�=�=rr
�path�returnc	�X�	tjt|��tjt	tdd��z��}n#t
$rYdSwxYw	tj|��n#t
$rYnwxYwtj|��dS#tj|��wxYw)N�O_DIRECTORYr)�os�open�str�O_RDONLY�getattr�OSError�fsync�close)r�fds  r�_fsync_directoryr"'s����
�W�S��Y�Y���g�b�-��.K�.K� K�
L�
L����������������
���������
�
�
���
����	������������������s<�AA�
A�A�A-�,B�-
A:�7B�9A:�:B�B)�destination�modec��|j�dd���|�d��5}tj||��|���t
j|�����ddd��n#1swxYwYt
j	t|��|dz��dS)NT��parents�exist_ok�xb�)�parent�mkdirr�shutil�copyfileobj�flushrr�fileno�chmodr)�sourcer#r$�outputs    r�_write_filer44s�������T�D��9�9�9�	�	�	�$�	�	�"�6���6�6�*�*�*�������
�������!�!�!�"�"�"�"�"�"�"�"�"�"�"����"�"�"�"��H�S��
�
�t�e�|�,�,�,�,�,s�AB�B�B�archivec���tj��}|�d��5�t�fd�d��D]}|�|���	ddd��n#1swxYwY|���S)N�rbc�.����d��S)Ni)�read)�streams�r�<lambda>z!_archive_digest.<locals>.<lambda>@s���&�+�+�k�":�":�rr)�hashlib�sha256r�iter�update�	hexdigest)r5�digest�chunkr:s   @r�_archive_digestrC=s����
�^�
�
�F�	���d�	�	�!�v��:�:�:�:�C�@�@�	!�	!�E��M�M�%� � � � �	!�!�!�!�!�!�!�!�!�!�!�!����!�!�!�!������s�,A#�#A'�*A'�
release_idc�~�t�|��s"td�|�����|S)Nzunsafe release id: {!r})�_RELEASE_RE�	fullmatchr
�format)rDs r�_validate_release_idrIEs<��� � ��,�,�I��4�;�;�J�G�G�H�H�H��rr+c�V�	|�|��n#t$rYdSwxYwdS)NFT)�relative_to�
ValueError)rr+s  r�_is_relative_torMKsE������� � � � �������u�u������4s��
&�&�	venv_rootc��|tzS�N)�VERSIONS_DIRNAME)rNs r�_versions_rootrRSs���'�'�'rc���|dz��fd�dD��}|s"td�������t|��S)N�libc�l��h|]0}��|��D]}|����|���1Sr)�glob�is_dir)�.0�patternrrTs   �r�	<setcomp>z%_site_package_dirs.<locals>.<setcomp>YsZ���
�
�
���H�H�W�%�%�
�
�
��;�;�=�=�	
��
�
�
�
r)zpython*/site-packageszpython*/dist-packagesz,no Python site-packages directories below {})r
rH�sorted)rN�foundrTs  @r�_site_package_dirsr]Wsp���
�e�
�C�
�
�
�
�I�
�
�
�E��
��:�A�A�#�F�F�
�
�	
��%�=�=�r�namec�8�t|��}|���s|js"td�|�����td�|jD����}|rd|vr"td�|�����t|�S)Nzunsafe archive path: {!r}c3�"K�|]
}|dv�|V��dS))��.Nr)rX�parts  r�	<genexpr>z$_safe_member_path.<locals>.<genexpr>js,����G�G�4��Y�1F�1F�$�1F�1F�1F�1F�G�Grz..)r�is_absolute�partsr
rH�tuple)r^rrfs   r�_safe_member_pathrhfs�������D������E���E��6�=�=�d�C�C�D�D�D��G�G�4�:�G�G�G�G�G�E��E�D�E�M�M��6�=�=�d�C�C�D�D�D��%� � r�stagerAc��d}t��}g}	tjt|��d���}nA#ttjf$r(}t
d�||�����d}~wwxYw|5|���D]�}t|j
��}	|	jd}
|
tkrd}nRt�|
��r|�|
��n"t
d�|
�����|���s;|���s't
d�|j
�����|�||	f����|st
d	���t'|��d
krt
d���|�d���|D]�\}}	|j|	j�}|���rB|�dd�
��t-jt|��|jdz���j|�|��}|�'t
d�|j
�����|5t5|||j��ddd��n#1swxYwY��	ddd��n#1swxYwY|t7t9|����z}
|t:z}t-jt|
��t|����|t>z}|�dd���5}|� |dz��|�!��t-j"|�#����ddd��n#1swxYwYtI||���tKd�|�&d��D��d���D]}tO|���tO|��dS)NFzr:*)r$z"cannot open release archive {}: {}rTz(unexpected top-level archive entry: {!r}z%unsupported archive member type: {!r}z&archive has no defence360agent package�z=archive must contain exactly one imunify_core-*.egg-info treei�r&r*zcannot read archive member {!r}�x�ascii��encoding�
��expected_digestc3�BK�|]}|����|V��dSrP)rW�rXrs  rrdz#_extract_release.<locals>.<genexpr>�s/����<�<�$�d�k�k�m�m�<��<�<�<�<�<�<r�*)�reverse)(�set�tarfilerrr�TarErrorr
rH�
getmembersrhr^rf�PACKAGE_LINK�_EGG_INFO_RErG�add�isdir�isreg�append�lenr,�joinpathrr1r$�extractfiler4�nextr>�
METADATA_LINK�replace�ARTIFACT_DIGEST�writer/rr0�_validate_releaser[�rglobr")r5rirA�package_seen�metadata_roots�members�bundle�exc�memberr�rootr#r2�
metadata_root�normalized_metadata�digest_filer:�	directorys                  r�_extract_releaser�ps����L�"�u�u�N��G�
���c�'�l�l��7�7�7�����W�%�&�
�
�
��0�7�7���E�E�
�
�	
�����
����

�&>�&>��'�'�)�)�	+�	+�F�$�V�[�1�1�D��:�a�=�D��|�#�#�#����'�'��-�-�
��"�"�4�(�(�(�(�"�>�E�E�d�K�K�����L�L�N�N�
�f�l�l�n�n�
�"�;�B�B�6�;�O�O����
�N�N�F�D�>�*�*�*�*��	I��G�H�H�H��~���!�#�#��O���
�	��������#�	>�	>�L�F�D�(�%�.�$�*�5�K��|�|�~�~�
��!�!�$��!�>�>�>����[�)�)�6�;��+>�?�?�?���'�'��/�/�F��~�"�5�<�<�V�[�I�I�����
>�
>��F�K���=�=�=�
>�
>�
>�
>�
>�
>�
>�
>�
>�
>�
>����
>�
>�
>�
>��	>�5&>�&>�&>�&>�&>�&>�&>�&>�&>�&>�&>����&>�&>�&>�&>�P�D��n�!5�!5�6�6�6�M��-�/���J�s�=�!�!�3�':�#;�#;�<�<�<��/�)�K�	�	�	�#��	�	0�	0�"�F����V�d�]�#�#�#�������
�������!�!�!�"�"�"�"�"�"�"�"�"�"�"����"�"�"�"��e�V�4�4�4�4��<�<�%�+�+�c�*�*�<�<�<�d����$�$�	�	��#�#�#�#��U�����s_�#8�A6�#A1�1A6�;G4J+�/J�J+�J�J+�J�J+�+J/�2J/�/AN�N�N�releaserrc���|���s|���s"td�|�����|tz}|t
z}|���s|dz���std���|���s|dz���std���|tz}	|�d����	��}n4#t$r'}td�|�����d}~wwxYwtjd	|��std
���|�||krtd���dSdS)Nz#release is not a real directory: {}z__init__.pyz/release has no complete defence360agent packagezPKG-INFOz%release has no complete core metadatarmrnz"release has no artifact digest: {}z[0-9a-f]{64}z"release artifact digest is invalidz4existing release does not match the package artifact)
�
is_symlinkrWr
rHr{r��is_filer��	read_text�stripr�rerG)r�rr�package�metadatar��installed_digestr�s       rr�r��s��������
�7�>�>�#3�#3�
��1�8�8��A�A�
�
�	
���$�G���&�H������N�G�m�$;�#D�#D�#F�#F�N��L�M�M�M������D�X�
�%:�$C�$C�$E�$E�D��B�C�C�C��O�+�K�M�&�0�0�'�0�B�B�H�H�J�J�����M�M�M��?�F�F�s�K�K�L�L�L�����M����
�<��)9�:�:�A��?�@�@�@��"�'7�?�'J�'J��B�
�
�	
�#�"�'J�'Js�(D�
D8�"D3�3D8c��|���s"td�|�����t|��}|�dd���|���rtd���||z}t
|��}|���s|���rt||���|Sttjd�|��t|�������}|�
��	t|||��tjt|��t|����t#|��nZ#t$$rM|���r7|���s#t'jt|��d����wxYw|S)	Nz"release archive does not exist: {}Tr&�#versions root must not be a symlinkrqz.{}-tmp-)�prefix�dir��
ignore_errors)r�r
rHrRr,r�rC�existsr�r�tempfile�mkdtempr�rmdirr�rr�r"�	Exceptionr-�rmtree)r5rDrNr
�finalrAris       r�_stage_releaser��s����?�?���
��0�7�7��@�@�
�
�	
��i�(�(�H��N�N�4�$�N�/�/�/������B��@�A�A�A��z�!�E�
�W�
%�
%�F��|�|�~�~���)�)�+�+���%��8�8�8�8�������$�$�Z�0�0�c�(�m�m�	
�	
�	
�
�
�E�

�K�K�M�M�M����%��0�0�0�
�
�3�u�:�:�s�5�z�z�*�*�*���"�"�"�"�������<�<�>�>�	:�%�"2�"2�"4�"4�	:��M�#�e�*�*�D�9�9�9�9�
������Ls�'AE7�7AG�targetc���|jd�|jtj��j��z}	t
j|t|����t
j	t|��t|����t|j��	|���dS#t$rYdSwxYw#	|���w#t$rYwwxYwxYw)N�
.{}.tmp-{})
r+rHr^�uuid�uuid4�hexr�symlinkrr�r"�unlink�FileNotFoundError)r�r#�	temporarys   r�_atomic_symlinkr��s����"�\�%8�%8���$�*�,�,�*�&�&��I��
�
�6�3�y�>�>�*�*�*�
�
�3�y�>�>�3�{�#3�#3�4�4�4���+�,�,�,�	���������� �	�	�	��D�D�	�����	��������� �	�	�	��D�	������sB�A%C�!B7�7
C�C�C/�
C�C/�
C,�)C/�+C,�,C/c�z�td�t|�������zS)Nz%import sys; sys.path.insert(0, {!r})
)�MIGRATION_SELECTOR_MARKERrHr�resolve)r�s r�_migration_selector_contentr��s2��$�0�7�7��G�O�O�<M�<M�8N�8N�O�O��rc��|���s|���s"td�|�����	|�d���}n5#t
$r(}td�||�����d}~wwxYw|�t��s"td�|�����dS)Nz,migration selector is not a regular file: {}�utf-8rnz%cannot read migration selector {}: {}z)refusing to replace unmanaged selector {})r�r�r
rHr�r�
startswithr�)r�contentr�s   r�_validate_migration_selectorr�s��������
������
��:�A�A�$�G�G�
�
�	
�
��.�.�'�.�2�2�����
�
�
��3�:�:�4��E�E�
�
�	
�����
�������7�8�8�
��7�>�>�t�D�D�
�
�	
�
�
s�A#�#
B�-#B�B�
site_packagesc�|�|tz}|���s|���rt|��|jd�|jtj��j	��z}	|�
dd���5}|�t|����|�
��tj|�����ddd��n#1swxYwYtjt%|��d��tjt%|��t%|����t)|j��	|���dS#t,$rYdSwxYw#	|���w#t,$rYwwxYwxYw)Nr�rlr�rni�)�MIGRATION_SELECTORr�r�r�r+rHr^r�r�r�rr�r�r/rrr0r1rr�r"r�r�)r�r�r#r�r:s     r�_write_migration_selectorr�s����"4�4�K������2�{�5�5�7�7�2�$�[�1�1�1��"�\�%8�%8���$�*�,�,�*�&�&��I��
�^�^�C�'�^�
2�
2�	&�f��L�L�4�W�=�=�>�>�>��L�L�N�N�N��H�V�]�]�_�_�%�%�%�	&�	&�	&�	&�	&�	&�	&�	&�	&�	&�	&����	&�	&�	&�	&�	���Y����'�'�'�
�
�3�y�>�>�3�{�#3�#3�4�4�4���+�,�,�,�	���������� �	�	�	��D�D�	�����	��������� �	�	�	��D�	������sh�<F�AC<�0F�<D�F�D�A(F�-F�
F�F�F;�F+�*F;�+
F8�5F;�7F8�8F;�site_packages_dirsc��g}|D]X}|tz}|���s|���r$t|��|�|���Y|SrP)r�r�r�r�r�)r��	selectorsr��selectors    r�_migration_selectorsr�*so���I�+�'�'�
� �#5�5���?�?���	'�� 3� 3� 5� 5�	'�(��2�2�2����X�&�&�&���rc���	t|��}n#t$rYdSwxYwt|��}|D]*}|���t	|j���+dSrP)r]r
r�r�r"r+)rNr�r�r�s    r�_remove_migration_selectorsr�4s����/�	�:�:���������������$�%7�8�8�I��*�*�����������)�)�)�)�*�*s��
 � �allow_legacy_directoryc��|���r�tjt|����}||krdS|�d���}t|jd���d���}t||��s"td�	|�����|�
��nm|���rY|r|���s"td�	|�����tjt|����t||��dS)NF��strict�z(refusing to replace unmanaged symlink {}z%refusing to replace unmanaged path {})r�r�readlinkrr�rRr'rMr
rHr�r�rWr-r�r�)rr�r��existing�resolvedr
s      r�_ensure_public_linkr�?s0�������!��;�s�4�y�y�)�)���v����F��<�<�u�<�-�-��!�$�,�q�/�2�2�:�:�%�:�H�H���x��2�2�	��:�A�A�$�G�G���
�	
���
�
�
�
�	
�����!�%�	�T�[�[�]�]�	��7�>�>�t�D�D���
�	�
�c�$�i�i� � � ��F�D�!�!�!�!�!rc�<�|tz}|�d��D]{}||kr�	|���s|���r|����F|���r!t
jt|�����|dS)Nzimunify_core-*.egg-info)	r�rVr�r�r�rWr-r�r)r��stablers   r�_remove_legacy_metadatar�Ws���
�]�
*�F��"�"�#<�=�=�%�%���6�>�>���?�?���	%������	%��K�K�M�M�M�M�
�[�[�]�]�	%��M�#�d�)�)�$�$�$��
%�%rc��t|�����}|���}t||��std���t	|��D]�}|t
z}|tz}t|��t|d�	tt
��d���t|d�	tt��d�����t	|��D]�}|tz}|���r6|���s"td�	|�����tj�t!|��t!|����}||z���|krtd���t#||����dS)Nz)release escapes the managed versions root�{}/{}T)r�Fz%current selector is not a symlink: {}z3computed current target does not resolve to release)rRr�rMr
r]r{r�r�r�rH�CURRENT_LINKr�r�rr�relpathrr�)	rNr�r
�resolved_releaser��package_link�
metadata_link�currentr�s	         r�_activate_linksr�bs����i�(�(�0�0�2�2�H����(�(���+�X�6�6�H��F�G�G�G�+�I�6�6�

�

�
�$�|�3��%�
�5�
��
�.�.�.����N�N�<��6�6�#'�	
�	
�	
�	
�
	���N�N�<��7�7�#(�	
�	
�	
�	
�	
�,�I�6�6�)�)�
��,�.���>�>���	�G�$6�$6�$8�$8�	��7�>�>�w�G�G���
������%5�!6�!6��M�8J�8J�K�K���F�"�+�+�-�-�1A�A�A��E���
�	���(�(�(�(�)�)rc�\�t|�����}t��}t|��D]�}|tz}|���s"t
d�|�����|�d���}t||��st
d���|�	|����t|��dkr"t
d�|�����tt|����}t|��|S)Nzmissing current selector: {}Tr�z)current selector escapes managed releasesrkz$site-packages selectors disagree: {})rRr�rwr]r�r�r
rHrMr}r�r�r>r�)rNr
�selectedr�r�r�r�s       r�_selected_releaser��s���i�(�(�0�0�2�2�H��%�%�H�+�I�6�6���
��,�.���!�!�#�#�	O��=�D�D�W�M�M�N�N�N��?�?�$�?�/�/���x��2�2�	L��J�K�K�K����X�����
�8�}�}�����2�9�9�(�C�C�
�
�	
��4��>�>�"�"�G��g�����Nrc��t|��}|���}t|���||��}t|��dSrP)rIr�r�r�)r5rDrNr�r�s     rriri�sO��%�j�1�1�J������D��W�_�_�.�.�
�D�A�A�G��g�����rc�"�t|��}|���}t|��|z}t|��t	t|����t
||��t|��t|��dSrP)	rIr�rRr�r�r]r��verifyr�)rDrNr�r�s    r�selectr��s���%�j�1�1�J������D��T�"�"�Z�/�G��g�����+�D�1�1�2�2�2��D�'�"�"�"�
�4�L�L�L���%�%�%�%�%rc�$�t|��}|���}t|��|z}t|��t	|��}g}|D]}|t
z}|���r_|���sK|���s"td�
|�����|�|����|st||��dSt|��|D]}t||���dS)a�Expose a staged release before rpm erases the legacy direct layout.

    On the first upgrade, rpm still owns the direct ``defence360agent`` tree
    when the new package's ``%post`` and the existing consumer triggers run.
    Replacing that tree with the final symlink at this point would let the old
    package erase traverse into the new release. A temporary ``.pth`` selector
    instead makes fresh Python processes import the staged tree without
    changing any old package-owned path. ``select`` replaces the legacy layout
    after erasure and removes this selector. Later upgrades have only managed
    links and can select atomically here without the migration shim.
    z*legacy package path is not a directory: {}N)rIr�rRr�r]r{r�r�rWr
rHr�r�r�r�)rDrNr�r�r��legacy_packagesr�r�s        r�select_for_rpm_transactionr��s>��&�j�1�1�J������D��T�"�"�Z�/�G��g����+�D�1�1���O�+�	,�	,�
��,�.���>�>���	,�G�$6�$6�$8�$8�	,��>�>�#�#�
�"�@�G�G�������

�"�"�7�+�+�+�����z�4� � � ����+�,�,�,�+�:�:�
�!�-��9�9�9�9�:�:rc�H�t|||��t||��dSrP)rir�)r5rDrNs   r�activater��s*��	�'�:�y�)�)�)�
�:�y�!�!�!�!�!rc�$�t|��}t|��D�]o}|tz}|tz}d�t
t��}d�t
t��}|���r%tjt|����|kr"td�|�����|���r%tjt|����|kr"td�|�����|�d���|tzkrtd���|�d���|tzkrtd�����qdS)Nr�zinvalid package link: {}zinvalid metadata link: {}Tr�z&package link selects the wrong releasez'metadata link selects the wrong release)r�r]r{r�rHr�r�rr�rr
r�)rNr�r�r�r��expected_package�expected_metadatas       rr�r��s}�� ��+�+�H�+�I�6�6�J�J�
�$�|�3��%�
�5�
�"�>�>�,��E�E��#�N�N�<��G�G���'�'�)�)�	P��{�3�|�,�,�-�-�1A�A�A��9�@�@��N�N�O�O�O��(�(�*�*�	��{�3�}�-�-�.�.�2C�C�C��+�2�2�=�A�A���
����t��,�,��<�0G�G�G��G�H�H�H�� � �� �-�-��M�1I�I�I��H�I�I�I�J�'J�Jrc���t|��}|���sgS|���rtd���t	d�|���D����S)Nr�c3�K�|]M}|j�t���!|����5|����I|V��NdSrP)r^r��RELEASE_PREFIXrWr�rts  rrdz(_managed_release_dirs.<locals>.<genexpr>�sr��������9����/�/��
�K�K�M�M�	�
���!�!��������r)rRr�r�r
r[�iterdir)rNr
s  r�_managed_release_dirsr��s����i�(�(�H��?�?�����	������B��@�A�A�A�����$�$�&�&������rc�\�t|��}|���sdS|���rtd���|�d��D]M}|���r7|���s#t
jt|��d����NdS)Nr�z.imunify-core-*-tmp-*Tr�)	rRr�r�r
rVrWr-r�r)rNr
r�s   r�_remove_temporary_release_dirsr�s����i�(�(�H��?�?�����������B��@�A�A�A��]�]�#:�;�;�>�>�	������	>�i�&:�&:�&<�&<�	>��M�#�i�.�.��=�=�=�=��>�>rc��|���}t|��}t|��D];}|���|kr!tjt|�����<t
|��dSrP)r�r�r�r-r�rr�)rNr�r�r�s    r�cleanupr�sw�������D� ��&�&�H�(��.�.�(�(���?�?����(�(��M�#�g�,�,�'�'�'��"�4�(�(�(�(�(rc��|���}t|���d���}	t|��}n#t$rg}YnwxYwt	|��|D�]}t
d�tt
��ftd�tt��ffD]W\}}||z}|�	��r9tjt|����|kr|�
���X|tz}|�	��r:|�d���}	t|	|��r|�
����t|��D]#}
t!jt|
�����$t%|��|���r7t)|�����s|���dSdSdS)NFr�r�)r�rRr]r
r�r{rHr�r�r�rr�rr�rMr�r-r�r�r��anyr�r�)rNr�r
�sitesr�r^�expectedrr�r�r�s           r�remover�s��������D��d�#�#�+�+�5�+�9�9�H��"�4�(�(������������������%�%�%��!�!�
�
�7�>�>�,��E�E�F�
�G�N�N�<��G�G�H�
�	�	�N�D�(�!�4�'�D���� � �
�R�[��T���%;�%;�x�%G�%G����
�
�
���,�.�������	!����e��4�4�H��x��2�2�
!���� � � ��(��.�.�$�$���
�c�'�l�l�#�#�#�#�"�4�(�(�(��������X�%5�%5�%7�%7�!8�!8�������������s�A	�	A�Ac�
�tjt���}|�dd���}dD]K}|�|��}|�dtd���|�dd�	���Ld
D].}|�|��}|�dd�	���/dD]O}||jvr
|j|n|�|��}|�dtt�
���P|S)N)�description�commandT)�dest�required)r�riz	--archive)�typerz--release-id)r)r��select-for-rpm-transaction)r�rir�rr�r�r�z--venv-root)r�default)	�argparse�ArgumentParserr�add_subparsers�
add_parser�add_argumentr�choices�DEFAULT_VENV_ROOT)�parser�
subparsersr�command_parser�
select_parsers     r�_parserr1sB��
�
$��
9�
9�
9�F��&�&�I��&�E�E�J�(�C�C��#�.�.�w�7�7���#�#�K�d�T�#�J�J�J��#�#�N�T�#�B�B�B�B�;�B�B��"�-�-�g�6�6�
��"�"�>�D�"�A�A�A�A��
�
���*�,�,�,�
��w�'�'��&�&�w�/�/�	�
	�#�#���.?�	$�	
�	
�	
�	
��Mr�argvc�8�t���|��}	|jdkr!t|j|j|j��n�|jdkr!t|j|j|j��n�|jdkrt|j|j��n�|jdkrt|j|j��nt|jdkrt|j��nT|jdkrt|j��n4|jdkrt|j��nt|j���n^#ttt jf$r?}t%d�|j|��t(j�	��Yd}~d
Sd}~wwxYwdS)Nr�rir�rr�r�r�z"imunify-core release {} failed: {})�filerkr)r�
parse_argsrr�r5rDrNrir�r�r�r�r��AssertionErrorrr
rxry�printrH�sys�stderr)r�argsr�s   r�mainrOs����9�9����%�%�D���<�:�%�%��T�\�4�?�D�N�C�C�C�C�
�\�W�
$�
$��$�,�����@�@�@�@�
�\�X�
%�
%��4�?�D�N�3�3�3�3�
�\�9�
9�
9�&�t����G�G�G�G�
�\�Y�
&�
&��D�N�#�#�#�#�
�\�X�
%�
%��4�>�"�"�"�"�
�\�X�
%�
%��4�>�"�"�"�"� ���.�.�.����\�7�#3�4����
�0�7�7���c�J�J���	
�	
�	
�	
��q�q�q�q�q���������
�1s�DD<�<F�4F�F�__main__rP)Grrr<rr�r-rrxr�r��pathlibrr�typingrrrrr	rrQr�r�r{r�r�r�r��compilerFr|�RuntimeErrorr
r"�intr4rrCrI�boolrMrRr]rhr�r�r�r�r�r�r�r�r�r�r�r�r�rir�r�r�r�r�r�r�r�r	rrr�
SystemExitrrr�<module>r&sX������������	�	�	�	�	�	�	�	�
�
�
�
�
�
�
�
�������������'�'�'�'�'�'�'�'�:�:�:�:�:�:�:�:�:�:�:�:�:�:��D�/�0�0���� ��&�� ��'�
�$��4��A���b�j�G�H�H���r�z�;�<�<��>�>�>�>�>�<�>�>�>�
�4�
�D�
�
�
�
�-�T�-��-��-�-�-�-��T��c������S��S������$���������(�d�(�t�(�(�(�(��$��4��:�����!�C�!�M�!�!�!�!�A�d�A�4�A��A��A�A�A�A�J59�
�
�
�
�$,�S�M�
�	�
�
�
�
�4�D��c��d��t�����@�C��d��t��������#�����
�t�
��
�
�
�
�"�T��D��T�����,�X�d�^���T�
�����*�4�*�D�*�*�*�*�"�
�"��"�59�"�	�"�"�"�"�0%�4�%�D�%�%�%�%� )�t� )�d� )�t� )� )� )� )�F���$�����(�4��S��T��d�����
&�s�
&�t�
&��
&�
&�
&�
&�$:�3�$:�4�$:�D�$:�$:�$:�$:�N"�d�"��"��"��"�"�"�"�
J�d�J�t�J�J�J�J�2�T��h�t�n�����>�d�>�t�>�>�>�>�)�t�)��)�)�)�)��d��t�����8��(�����<
�
�x���
�&�
�#�
�
�
�
�8�z���
�*�T�T�V�V�
�
���r