def _install_plugin(cls, plugin, force_user=False, pip_command=None, pip_args=None, on_log=None): if pip_args is None: pip_args = [] if on_log is None: on_log = logging.getLogger(__name__).info # prepare pip caller def log(prefix, *lines): for line in lines: on_log("{} {}".format(prefix, line.rstrip())) def log_call(*lines): log(">", *lines) def log_stdout(*lines): log("<", *lines) def log_stderr(*lines): log("!", *lines) if cls._pip_caller is None: cls._pip_caller = create_pip_caller(command=pip_command, force_user=force_user) cls._pip_caller.on_log_call = log_call cls._pip_caller.on_log_stdout = log_stdout cls._pip_caller.on_log_stderr = log_stderr # install plugin pip = [ "install", sarge.shell_quote(plugin["archive"]), "--no-cache-dir" ] if plugin.get("follow_dependency_links"): pip.append("--process-dependency-links") if force_user: pip.append("--user") if pip_args: pip += pip_args cls._pip_caller.execute(*pip)
def _install_plugin(cls, plugin, force_user=False, pip_args=None, on_log=None): if pip_args is None: pip_args = [] if on_log is None: on_log = logging.getLogger(__name__).info # prepare pip caller def log(prefix, *lines): for line in lines: on_log(u"{} {}".format(prefix, line.rstrip())) def log_call(*lines): log(u">", *lines) def log_stdout(*lines): log(u"<", *lines) def log_stderr(*lines): log(u"!", *lines) if cls._pip_caller is None: cls._pip_caller = LocalPipCaller(force_user=force_user) cls._pip_caller.on_log_call = log_call cls._pip_caller.on_log_stdout = log_stdout cls._pip_caller.on_log_stderr = log_stderr # install plugin pip = ["install", sarge.shell_quote(plugin["archive"]), '--no-cache-dir'] if plugin.get("follow_dependency_links"): pip.append("--process-dependency-links") if force_user: pip.append("--user") if pip_args: pip += pip_args cls._pip_caller.execute(*pip)