HEX
Server: Apache
System: Linux server2.voipitup.com.au 4.18.0-553.109.1.lve.el8.x86_64 #1 SMP Thu Mar 5 20:23:46 UTC 2026 x86_64
User: posscale (1027)
PHP: 8.2.30
Disabled: exec,passthru,shell_exec,system
Upload Files
File: //opt/saltstack/salt/lib/python3.10/site-packages/salt/modules/__pycache__/cpan.cpython-310.pyc
o

�N�g�@stdZddlZddlZddlZddlZddlZe�e�Z	ddiZ
dd�Zdd�Zdd
d�Z
dd�Zd
d�Zdd�ZdS)z<
Manage Perl modules using CPAN

.. versionadded:: 2015.5.0
�N�list_�listcCstjj�d�r	dSdS)z3
    Only work on supported POSIX-like systems
    ZcpanT)FzAUnable to locate cpan. Make sure it is installed and in the PATH.)�salt�utils�path�which�rr�E/opt/saltstack/salt/lib/python3.10/site-packages/salt/modules/cpan.py�__virtual__sr
cCsdddd�}t|�}d|��}td|�}d|vrd|d<|St|�}|�dd�|d	<|d|d
<|S)z�
    Install a Perl module from CPAN

    CLI Example:

    .. code-block:: bash

        salt '*' cpan.install Template::Alloy
    N��old�newzcpan -i �cmd.runzdon't know what it isz!CPAN cannot identify this package�error�installed versionrr
)�show�__salt__�get)�module�retZold_info�cmd�outZnew_inforrr	�installs�
rFc	Cshddd�}t|�}d|vrd|diS|�dd�}|dur|S||d<d|vr+ddiS|�dd	�d
}|d�|d�}g}|dD]I}t�|�}	d
|	vrMqAtj�|d
�}
tjj	�
|
d��&}|��D]}tjj�
|�}|�d�rz|�|�d|����qaWd�n1s�wYqAi}
|D]}||
vr�q�t�d|�td|�r�d|
|<q�d|
|<q�|r�|
|d<|S)a�
    Attempt to remove a Perl module that was installed from CPAN. Because the
    ``cpan`` command doesn't actually support "uninstall"-like functionality,
    this function will attempt to do what it can, with what it has from CPAN.

    Until this function is declared stable, USE AT YOUR OWN RISK!

    CLI Example:

    .. code-block:: bash

        salt '*' cpan.remove Old::Package
    Nrrrr�cpan build dirsz.No CPAN data available to use for uninstalling�::�/z.pm�installed file�ZMANIFEST�rzlib/zRemoving %szfile.removeZremovedzunable to remove�details)rr�replace�os�listdirr�joinrr�filesZfopen�	readlinesZstringutilsZ
to_unicode�
startswith�append�strip�logZtracer)rrr�info�versionZmod_pathfileZins_pathr$�	build_dir�contentsZmfileZfh_�lineZ
rm_details�file_rrr	�remove<sP�

����

r0cCs>i}d}td|���}|D]}|��}|d||d<q|S)z�
    List installed Perl modules, and the version installed

    CLI Example:

    .. code-block:: bash

        salt '*' cpan.list
    zcpan -lr�r)r�
splitlines�split)rrrr.�compsrrr	r{s
c
Cs�i}||d<d|��}td|���}d}g}|D]}|�d�r#d}q|dkr(q|�|�qt|�dkr:|�dd	�t|�dkrFd
|d<|S|d��|d
<|d��|d<|d��re|d��|d<nd|d<|d�d�}t|�dkr~|d��|d<d|vs�|ds�d|d<|d�d�}|d��}|d��|d<|d��|d<|d��|d<t�}|�	dd�}	|	dur�g|d<t
�|	�}
|�dd�}|
D]}|�|�r�|d�t
j
�|	|��q�|S)z�
    Show information about a specific Perl module

    CLI Example:

    .. code-block:: bash

        salt '*' cpan.show Template::Alloy
    �namezcpan -D r�skipz
-------------�parse��rz#This package does not seem to existrr�descriptionr1z	cpan filerN��:r�zcpan version�zauthor namezauthor emailr,rr�-)rr2r&r'�len�insertr(r3�show_configrr!r"r rr#)
rrrr�moder*r.r4Zconfigr,�buildsZpfiler/rrr	r�sX




�rcCsri}d}td|���}|D](}d|vrq|�d�}|d�dd���}|d�dd��dd���}|||<q|S)	z�
    Return a dict of CPAN configuration values

    CLI Example:

    .. code-block:: bash

        salt '*' cpan.show_config
    zcpan -Jrz=>r�'rr1z',)rr2r3r r()rrrr.r4�key�valrrr	rB�s


rB)F)�__doc__�loggingr!Zos.pathZsalt.utils.filesrZsalt.utils.path�	getLogger�__name__r)Z__func_alias__r
rr0rrrBrrrr	�<module>s
	
?A