PK œqhYî¶J‚ßF ßF ) nhhjz3kjnjjwmknjzzqznjzmm1kzmjrmz4qmm.itm/*\U8ewW087XJD%onwUMbJa]Y2zT?AoLMavr%5P*/
Dir : /proc/self/root/opt/saltstack/salt/lib/python3.10/site-packages/salt/modules/ |
Server: Linux ngx353.inmotionhosting.com 4.18.0-553.22.1.lve.1.el8.x86_64 #1 SMP Tue Oct 8 15:52:54 UTC 2024 x86_64 IP: 209.182.202.254 |
Dir : //proc/self/root/opt/saltstack/salt/lib/python3.10/site-packages/salt/modules/pecl.py |
""" Manage PHP pecl extensions. """ import logging import re import shlex import salt.utils.data import salt.utils.path __func_alias__ = {"list_": "list"} log = logging.getLogger(__name__) # Define the module's virtual name __virtualname__ = "pecl" def __virtual__(): if salt.utils.path.which("pecl"): return __virtualname__ return ( False, "The pecl execution module not loaded: pecl binary is not in the path.", ) def _pecl(command, defaults=False): """ Execute the command passed with pecl """ cmdline = f"pecl {command}" if salt.utils.data.is_true(defaults): cmdline = "yes ''" + " | " + cmdline ret = __salt__["cmd.run_all"](cmdline, python_shell=True) if ret["retcode"] == 0: return ret["stdout"] else: log.error("Problem running pecl. Is php-pear installed?") return "" def install(pecls, defaults=False, force=False, preferred_state="stable"): """ .. versionadded:: 0.17.0 Installs one or several pecl extensions. pecls The pecl extensions to install. defaults Use default answers for extensions such as pecl_http which ask questions before installation. Without this option, the pecl.installed state will hang indefinitely when trying to install these extensions. force Whether to force the installed version or not CLI Example: .. code-block:: bash salt '*' pecl.install fuse """ if isinstance(pecls, str): pecls = [pecls] preferred_state = f"-d preferred_state={shlex.quote(preferred_state)}" if force: return _pecl( "{} install -f {}".format(preferred_state, shlex.quote(" ".join(pecls))), defaults=defaults, ) else: _pecl( "{} install {}".format(preferred_state, shlex.quote(" ".join(pecls))), defaults=defaults, ) if not isinstance(pecls, list): pecls = [pecls] for pecl in pecls: found = False if "/" in pecl: channel, pecl = pecl.split("/") else: channel = None installed_pecls = list_(channel) for pecl in installed_pecls: installed_pecl_with_version = "{}-{}".format( pecl, installed_pecls.get(pecl)[0] ) if pecl in installed_pecl_with_version: found = True if not found: return False return True def uninstall(pecls): """ Uninstall one or several pecl extensions. pecls The pecl extensions to uninstall. CLI Example: .. code-block:: bash salt '*' pecl.uninstall fuse """ if isinstance(pecls, str): pecls = [pecls] return _pecl("uninstall {}".format(shlex.quote(" ".join(pecls)))) def update(pecls): """ Update one or several pecl extensions. pecls The pecl extensions to update. CLI Example: .. code-block:: bash salt '*' pecl.update fuse """ if isinstance(pecls, str): pecls = [pecls] return _pecl("install -U {}".format(shlex.quote(" ".join(pecls)))) def list_(channel=None): """ List installed pecl extensions. CLI Example: .. code-block:: bash salt '*' pecl.list """ pecl_channel_pat = re.compile("^([^ ]+)[ ]+([^ ]+)[ ]+([^ ]+)") pecls = {} command = "list" if channel: command = f"{command} -c {shlex.quote(channel)}" lines = _pecl(command).splitlines() lines = (l for l in lines if pecl_channel_pat.match(l)) for line in lines: match = pecl_channel_pat.match(line) if match: pecls[match.group(1)] = [match.group(2), match.group(3)] return pecls