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__/rbenv.cpython-310.pyc
o

�N�g�*�@s4dZddlZddlZddlZddlZddlZddlZddlZddl	m
Z
e�e�Z
ddiZddd�Zdd�Zd	d
�Zdd�Zd0d
d�Zd0dd�Zd1dd�Zd0dd�Zd0dd�Zd0dd�Zd0dd�Zd2dd�Zd2dd�Zd0dd �Zd0d!d"�Zd0d#d$�Zd0d%d&�Zd2d'd(�Z d0d)d�Z!d0d*d+�Z"d2d,d-�Z#d0d.d/�Z$dS)3a�
Manage ruby installations with rbenv. rbenv is supported on Linux and macOS.
rbenv doesn't work on Windows (and isn't really necessary on Windows as there is
no system Ruby on Windows). On Windows, the RubyInstaller and/or Pik are both
good alternatives to work with multiple versions of Ruby on the same box.

http://misheska.com/blog/2013/06/15/using-rbenv-to-manage-multiple-versions-of-ruby/

.. versionadded:: 0.16.0
�N)�SaltInvocationError�list_�list)�
rbenv.root�rbenv.build_envcCstjj��rdSdS)z)
    Only work on POSIX-like systems
    )FzQThe rbenv execution module failed to load: only available on non-Windows systems.T)�salt�utils�platformZ
is_windows�r
r
�F/opt/saltstack/salt/lib/python3.10/site-packages/salt/modules/rbenv.py�__virtual__!srcCs,|dur
tjj�d�}|Stjj�|�}|S)N�)rr�args�shlex_split)�s�retr
r
r�_shlex_split.s
�rcCs^|si}t|t�rtjj�|�}t|t�si}dd�|��D�D]}t�	d|�d||<q |S)Ncss �|]\}}|dur|VqdS�Nr
)�.0�x�yr
r
r�	<genexpr>As�z_parse_env.<locals>.<genexpr>zREnvironment variable '%s' passed without a value. Setting value to an empty stringr
)
�
isinstancerrr�dataZrepack_dictlist�dict�items�log�error)�envZbad_env_keyr
r
r�
_parse_env9s

�
rcCst|�}|�d�S)Nz
/bin/rbenv)�_rbenv_path��runas�pathr
r
r�
_rbenv_binLs
r$cCsBd}|dvrtdd�p
d}ntdd�pd|�d�}tj�|�S)N)N�root�
config.optionrz/usr/local/rbenv�~z/.rbenv)�__salt__�osr#�
expanduserr!r
r
rr Qs
r cCstt|�sdSt|�}t|�}t|�}||d<td|g|||d�}t|t�r.|�|�|S|ddkr8|dSdS)NFZ
RBENV_ROOT�cmd.run_all�r"r�retcoder�stdout)�is_installedr$r rr(rr�update)Zcommandrr"r�binaryr#�environ�resultr
r
r�_rbenv_exec[s

r4cCs2tj�|�rdSddd|g}td||dd�dkS)	NT�git�clonez"https://github.com/rbenv/rbenv.git�cmd.retcodeF�r"�python_shellr�r)r#�isdirr(�r#r"�cmdr
r
r�_install_rbenvqsr>cCs<|�d�}tj�|�r
dSddd|g}td||dd�d	kS)
N�/plugins/ruby-buildTr5r6z'https://github.com/rbenv/ruby-build.gitr7Fr8rr:r<r
r
r�_install_ruby_buildys

r@cCs,tj�|�sdStdddg||dd�dkS)NFr7r5�pull�r"�cwdr9rr:�r#r"r
r
r�
_update_rbenv�s���rEcCs6|�d�}tj�|�s
dStdddg||dd�dkS)Nr?Fr7r5rArBrr:rDr
r
r�_update_ruby_build�s
���rFcC�,|pt|�}tj�|�}t||�ot||�S)zn
    Install rbenv systemwide

    CLI Example:

    .. code-block:: bash

        salt '*' rbenv.install
    )r r)r#r*r>r@r!r
r
r�install�s
rHcCrG)a
    Updates the current versions of rbenv and ruby-build

    runas
        The user under which to run rbenv. If not specified, then rbenv will be
        run as the user under which Salt is running.

    CLI Example:

    .. code-block:: bash

        salt '*' rbenv.update
    )r r)r#r*rErFr!r
r
rr0�sr0cCstdt|��S)zv
    Check if rbenv is installed

    CLI Example:

    .. code-block:: bash

        salt '*' rbenv.is_installed
    zcmd.has_exec)r(r$�r"r
r
rr/�s
r/cCs�t�dd|�}d}g}tddvr|�d�tdd�r&|�tdd��ntd	d
�r5|�td	d
��|r<d�|�}i}td|g|||d
�}|dur[|ddkr[t|d�|dSt||d�dS)aw
    Install a ruby implementation.

    ruby
        The version of Ruby to install, should match one of the
        versions listed by :py:func:`rbenv.list <salt.modules.rbenv.list>`

    runas
        The user under which to run rbenv. If not specified, then rbenv will be
        run as the user under which Salt is running.

    Additional environment variables can be configured in pillar /
    grains / master:

    .. code-block:: yaml

        rbenv:
          build_env: 'CONFIGURE_OPTS="--no-tcmalloc" CFLAGS="-fno-tree-dce"'

    CLI Example:

    .. code-block:: bash

        salt '*' rbenv.install_ruby 2.0.0-p0
    �^ruby-r
Nr))ZFreeBSDZNetBSDZOpenBSDz
MAKE=gmakez
config.getzrbenv:build_envr&r� rH)rr"rFr-rrI�stderr)	�re�subZ
__grains__�appendr(�joinr4�rehash�uninstall_ruby)�rubyr"r�env_listrr
r
r�install_ruby�s$


rUcCs$t�dd|�}tdd|g|d�dS)a�
    Uninstall a ruby implementation.

    ruby
        The version of ruby to uninstall. Should match one of the versions
        listed by :py:func:`rbenv.versions <salt.modules.rbenv.versions>`.

    runas
        The user under which to run rbenv. If not specified, then rbenv will be
        run as the user under which Salt is running.

    CLI Example:

    .. code-block:: bash

        salt '*' rbenv.uninstall_ruby 2.0.0-p0
    rJr
Z	uninstallz--forcerIT)rMrNr4)rSr"r
r
rrRsrRcCs$tddg|d�}|durgS|��S)zz
    List the installed versions of ruby

    CLI Example:

    .. code-block:: bash

        salt '*' rbenv.versions
    �versionsz--barerIF)r4�
splitlines)r"rr
r
rrVs
rVcCs:|rtd|g|d�dStdg|d�}|durdS|��S)a�
    Returns or sets the currently defined default ruby

    ruby
        The version to set as the default. Should match one of the versions
        listed by :py:func:`rbenv.versions <salt.modules.rbenv.versions>`.
        Leave blank to return the current default.

    CLI Example:

    .. code-block:: bash

        salt '*' rbenv.default
        salt '*' rbenv.default 2.0.0-p0
    �globalrITFr
)r4�strip)rSr"rr
r
r�default%s
rZcCsBg}tddg|d�}|r|��D]}|dkrq|�|���q|S)a
    List the installable versions of ruby

    runas
        The user under which to run rbenv. If not specified, then rbenv will be
        run as the user under which Salt is running.

    CLI Example:

    .. code-block:: bash

        salt '*' rbenv.list
    rHz--listrIzAvailable versions:)r4rWrOrY)r"r�output�liner
r
rr=scCstdg|d�dS)a
    Run ``rbenv rehash`` to update the installed shims

    runas
        The user under which to run rbenv. If not specified, then rbenv will be
        run as the user under which Salt is running.

    CLI Example:

    .. code-block:: bash

        salt '*' rbenv.rehash
    rQrIT)r4rIr
r
rrQUsrQc	Cs�|std��t|�}|si}tjj�tj�tjj	�|d�tjj�
tjd�f��|d<z	tjj�
|�}WntyFtjj�
t|��}Ynwtd|||dd�}|ddkr`t|d	�|d
SdS)z�
    Execute a ruby command with rbenv's shims from the user or the system

    CLI Example:

    .. code-block:: bash

        salt '*' rbenv.do 'gem list bundler'
        salt '*' rbenv.do 'gem list bundler' deploy
    �Command must be specifiedZshims�PATHr+F)r"rr9r-rrIr.)rr rrZstringutilsZto_strr)�pathseprPr#Z
to_unicoder2rr�AttributeError�strr(rQ)�cmdliner"rr#Zcmdauthr3r
r
r�dogs,���	�
rccCsl|std��z	tjj�|�}Wnty!tjj�t|��}Ynwi}|r-||d<|}n|}t|||d�S)a
    Execute a ruby command with rbenv's shims using a specific ruby version

    CLI Example:

    .. code-block:: bash

        salt '*' rbenv.do_with_ruby 2.0.0-p0 'gem list bundler'
        salt '*' rbenv.do_with_ruby 2.0.0-p0 'gem list bundler' runas=deploy
    r]Z
RBENV_VERSIONr,)rrrrrr`rarc)rSrbr"rr=r
r
r�do_with_ruby�s�rdr)NNN)NN)%�__doc__�loggingr)rMZsalt.utils.argsrZsalt.utils.dataZsalt.utils.pathZsalt.utils.platformZsalt.exceptionsr�	getLogger�__name__rZ__func_alias__Z__opts__rrrr$r r4r>r@rErFrHr0r/rUrRrVrZrrQrcrdr
r
r
r�<module>sF
�







	





5




/