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/states/ |
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/states/gem.py |
""" Installation of Ruby modules packaged as gems ============================================= A state module to manage rubygems. Gems can be set up to be installed or removed. This module will use RVM or rbenv if they are installed. In that case, you can specify what ruby version and gemset to target. .. code-block:: yaml addressable: gem.installed: - user: rvm - ruby: jruby@jgemset """ import logging import re import salt.utils.versions log = logging.getLogger(__name__) def __virtual__(): """ Only load if gem module is available in __salt__ """ if "gem.list" in __salt__: return True return (False, "gem module could not be loaded") def installed( name, # pylint: disable=C0103 ruby=None, gem_bin=None, user=None, version=None, rdoc=False, ri=False, pre_releases=False, proxy=None, source=None, ): # pylint: disable=C0103 """ Make sure that a gem is installed. name The name of the gem to install ruby: None Only for RVM or rbenv installations: the ruby version and gemset to target. gem_bin: None Custom ``gem`` command to run instead of the default. Use this to install gems to a non-default ruby install. If you are using rvm or rbenv use the ruby argument instead. user: None The user under which to run the ``gem`` command .. versionadded:: 0.17.0 version : None Specify the version to install for the gem. Doesn't play nice with multiple gems at once rdoc : False Generate RDoc documentation for the gem(s). ri : False Generate RI documentation for the gem(s). pre_releases : False Install pre-release version of gem(s) if available. proxy : None Use the specified HTTP proxy server for all outgoing traffic. Format: http://hostname[:port] source : None Use the specified HTTP gem source server to download gem. Format: http://hostname[:port] """ ret = {"name": name, "result": None, "comment": "", "changes": {}} if ruby is not None and not ( __salt__["rvm.is_installed"](runas=user) or __salt__["rbenv.is_installed"](runas=user) ): log.warning("Use of argument ruby found, but neither rvm or rbenv is installed") gems = __salt__["gem.list"](name, ruby, gem_bin=gem_bin, runas=user) if name in gems and version is not None: match = re.match(r"(>=|>|<|<=)", version) if match: # Grab the comparison cmpr = match.group() # Clear out 'default:' and any whitespace installed_version = re.sub("default: ", "", gems[name][0]).strip() # Clear out comparison from version and whitespace desired_version = re.sub(cmpr, "", version).strip() if salt.utils.versions.compare(installed_version, cmpr, desired_version): ret["result"] = True ret["comment"] = "Installed Gem meets version requirements." return ret else: if str(version) in gems[name]: ret["result"] = True ret["comment"] = "Gem is already installed." return ret elif name in gems and version is None: ret["result"] = True ret["comment"] = "Gem is already installed." return ret if __opts__["test"]: ret["comment"] = f"The gem {name} would have been installed" return ret if __salt__["gem.install"]( name, ruby=ruby, gem_bin=gem_bin, runas=user, version=version, rdoc=rdoc, ri=ri, pre_releases=pre_releases, proxy=proxy, source=source, ): ret["result"] = True ret["changes"][name] = "Installed" ret["comment"] = "Gem was successfully installed" else: ret["result"] = False ret["comment"] = "Could not install gem." return ret def removed(name, ruby=None, user=None, gem_bin=None): """ Make sure that a gem is not installed. name The name of the gem to uninstall gem_bin : None Full path to ``gem`` binary to use. ruby : None If RVM or rbenv are installed, the ruby version and gemset to use. Ignored if ``gem_bin`` is specified. user: None The user under which to run the ``gem`` command .. versionadded:: 0.17.0 """ ret = {"name": name, "result": None, "comment": "", "changes": {}} if name not in __salt__["gem.list"](name, ruby, gem_bin=gem_bin, runas=user): ret["result"] = True ret["comment"] = "Gem is not installed." return ret if __opts__["test"]: ret["comment"] = f"The gem {name} would have been removed" return ret if __salt__["gem.uninstall"](name, ruby, gem_bin=gem_bin, runas=user): ret["result"] = True ret["changes"][name] = "Removed" ret["comment"] = "Gem was successfully removed." else: ret["result"] = False ret["comment"] = "Could not remove gem." return ret def sources_add(name, ruby=None, user=None): """ Make sure that a gem source is added. name The URL of the gem source to be added ruby: None For RVM or rbenv installations: the ruby version and gemset to target. user: None The user under which to run the ``gem`` command .. versionadded:: 0.17.0 """ ret = {"name": name, "result": None, "comment": "", "changes": {}} if name in __salt__["gem.sources_list"](ruby, runas=user): ret["result"] = True ret["comment"] = "Gem source is already added." return ret if __opts__["test"]: ret["comment"] = f"The gem source {name} would have been added." return ret if __salt__["gem.sources_add"](source_uri=name, ruby=ruby, runas=user): ret["result"] = True ret["changes"][name] = "Installed" ret["comment"] = "Gem source was successfully added." else: ret["result"] = False ret["comment"] = "Could not add gem source." return ret def sources_remove(name, ruby=None, user=None): """ Make sure that a gem source is removed. name The URL of the gem source to be removed ruby: None For RVM or rbenv installations: the ruby version and gemset to target. user: None The user under which to run the ``gem`` command .. versionadded:: 0.17.0 """ ret = {"name": name, "result": None, "comment": "", "changes": {}} if name not in __salt__["gem.sources_list"](ruby, runas=user): ret["result"] = True ret["comment"] = "Gem source is already removed." return ret if __opts__["test"]: ret["comment"] = "The gem source would have been removed." return ret if __salt__["gem.sources_remove"](source_uri=name, ruby=ruby, runas=user): ret["result"] = True ret["changes"][name] = "Removed" ret["comment"] = "Gem source was successfully removed." else: ret["result"] = False ret["comment"] = "Could not remove gem source." return ret