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/bower.py |
""" Installation of Bower Packages ============================== These states manage the installed packages using Bower. Note that npm, git and bower must be installed for these states to be available, so bower states should include requisites to pkg.installed states for the packages which provide npm and git (simply ``npm`` and ``git`` in most cases), and npm.installed state for the package which provides bower. Example: .. code-block:: yaml npm: pkg.installed git: pkg.installed bower: npm.installed require: - pkg: npm - pkg: git underscore: bower.installed: - dir: /path/to/project - require: - npm: bower """ from salt.exceptions import CommandExecutionError, CommandNotFoundError def __virtual__(): """ Only load if the bower module is available in __salt__ """ if "bower.list" in __salt__: return "bower" return (False, "bower module could not be loaded") def installed(name, dir, pkgs=None, user=None, env=None): """ Verify that the given package is installed and is at the correct version (if specified). .. code-block:: yaml underscore: bower.installed: - dir: /path/to/project - user: someuser jquery#2.0: bower.installed: - dir: /path/to/project name The package to install dir The target directory in which to install the package pkgs A list of packages to install with a single Bower invocation; specifying this argument will ignore the ``name`` argument user The user to run Bower with env A list of environment variables to be set prior to execution. The format is the same as the :py:func:`cmd.run <salt.states.cmd.run>`. state function. """ ret = {"name": name, "result": None, "comment": "", "changes": {}} if pkgs is not None: pkg_list = pkgs else: pkg_list = [name] try: installed_pkgs = __salt__["bower.list"](dir=dir, runas=user, env=env) except (CommandNotFoundError, CommandExecutionError) as err: ret["result"] = False ret["comment"] = f"Error looking up '{name}': {err}" return ret else: installed_pkgs = {p: info for p, info in installed_pkgs.items()} pkgs_satisfied = [] pkgs_to_install = [] for pkg in pkg_list: pkg_name, _, pkg_ver = pkg.partition("#") pkg_name = pkg_name.strip() if pkg_name not in installed_pkgs: pkgs_to_install.append(pkg) continue if pkg_name in installed_pkgs: installed_pkg = installed_pkgs[pkg_name] installed_pkg_ver = installed_pkg.get("pkgMeta").get("version") installed_name_ver = f"{pkg_name}#{installed_pkg_ver}" # If given an explicit version check the installed version matches. if pkg_ver: if installed_pkg_ver != pkg_ver: pkgs_to_install.append(pkg) else: pkgs_satisfied.append(installed_name_ver) continue else: pkgs_satisfied.append(installed_name_ver) continue if __opts__["test"]: ret["result"] = None comment_msg = [] if pkgs_to_install: comment_msg.append( "Bower package(s) '{}' are set to be installed".format( ", ".join(pkgs_to_install) ) ) ret["changes"] = {"old": [], "new": pkgs_to_install} if pkgs_satisfied: comment_msg.append( "Package(s) '{}' satisfied by {}".format( ", ".join(pkg_list), ", ".join(pkgs_satisfied) ) ) ret["comment"] = ". ".join(comment_msg) return ret if not pkgs_to_install: ret["result"] = True ret["comment"] = "Package(s) '{}' satisfied by {}".format( ", ".join(pkg_list), ", ".join(pkgs_satisfied) ) return ret try: cmd_args = { "pkg": None, "dir": dir, "pkgs": None, "runas": user, "env": env, } if pkgs is not None: cmd_args["pkgs"] = pkgs else: cmd_args["pkg"] = pkg_name call = __salt__["bower.install"](**cmd_args) except (CommandNotFoundError, CommandExecutionError) as err: ret["result"] = False ret["comment"] = "Error installing '{}': {}".format(", ".join(pkg_list), err) return ret if call: ret["result"] = True ret["changes"] = {"old": [], "new": pkgs_to_install} ret["comment"] = "Package(s) '{}' successfully installed".format( ", ".join(pkgs_to_install) ) else: ret["result"] = False ret["comment"] = "Could not install package(s) '{}'".format(", ".join(pkg_list)) return ret def removed(name, dir, user=None): """ Verify that the given package is not installed. dir The target directory in which to install the package user The user to run Bower with """ ret = {"name": name, "result": None, "comment": "", "changes": {}} try: installed_pkgs = __salt__["bower.list"](dir=dir, runas=user) except (CommandExecutionError, CommandNotFoundError) as err: ret["result"] = False ret["comment"] = f"Error removing '{name}': {err}" return ret if name not in installed_pkgs: ret["result"] = True ret["comment"] = f"Package '{name}' is not installed" return ret if __opts__["test"]: ret["result"] = None ret["comment"] = f"Package '{name}' is set to be removed" return ret try: if __salt__["bower.uninstall"](pkg=name, dir=dir, runas=user): ret["result"] = True ret["changes"] = {name: "Removed"} ret["comment"] = f"Package '{name}' was successfully removed" else: ret["result"] = False ret["comment"] = f"Error removing '{name}'" except (CommandExecutionError, CommandNotFoundError) as err: ret["result"] = False ret["comment"] = f"Error removing '{name}': {err}" return ret def bootstrap(name, user=None): """ Bootstraps a frontend distribution. Will execute 'bower install' on the specified directory. user The user to run Bower with """ ret = {"name": name, "result": None, "comment": "", "changes": {}} if __opts__["test"]: ret["result"] = None ret["comment"] = f"Directory '{name}' is set to be bootstrapped" return ret try: call = __salt__["bower.install"](pkg=None, dir=name, runas=user) except (CommandNotFoundError, CommandExecutionError) as err: ret["result"] = False ret["comment"] = f"Error bootstrapping '{name}': {err}" return ret if not call: ret["result"] = True ret["comment"] = "Directory is already bootstrapped" return ret ret["result"] = True ret["changes"] = {name: "Bootstrapped"} ret["comment"] = "Directory was successfully bootstrapped" return ret def pruned(name, user=None, env=None): """ .. versionadded:: 2017.7.0 Cleans up local bower_components directory. Will execute 'bower prune' on the specified directory (param: name) user The user to run Bower with """ ret = {"name": name, "result": None, "comment": "", "changes": {}} if __opts__["test"]: ret["result"] = None ret["comment"] = f"Directory '{name}' is set to be pruned" return ret try: call = __salt__["bower.prune"](dir=name, runas=user, env=env) except (CommandNotFoundError, CommandExecutionError) as err: ret["result"] = False ret["comment"] = f"Error pruning '{name}': {err}" return ret ret["result"] = True if call: ret["comment"] = f"Directory '{name}' was successfully pruned" ret["changes"] = {"old": [], "new": call} else: ret["comment"] = f"No packages were pruned from directory '{name}'" return ret