vagrant/plugins/provisioners/ansible/cap/guest/pip/pip.rb

47 lines
1.5 KiB
Ruby

module VagrantPlugins
module Ansible
module Cap
module Guest
module Pip
DEFAULT_PIP_INSTALL_CMD = "curl https://bootstrap.pypa.io/get-pip.py | sudo python".freeze
def self.pip_install(machine, package = "", version = "", pip_args = "", upgrade = true)
upgrade_arg = "--upgrade" if upgrade
version_arg = ""
if !version.to_s.empty? && version.to_s.to_sym != :latest
version_arg = "==#{version}"
end
args_array = [pip_args, upgrade_arg, "#{package}#{version_arg}"]
args_array.reject! { |a| a.nil? || a.empty? }
pip_install = "pip install"
pip_install += " #{args_array.join(' ')}" unless args_array.empty?
machine.communicate.sudo pip_install
end
def self.get_pip(machine, pip_install_cmd = DEFAULT_PIP_INSTALL_CMD)
# The objective here is to get pip either by default
# or by the argument passed in. The objective is not
# to circumvent the pip setup by passing in nothing.
# Thus, we stick with the default on an empty string.
# Typecast added in the check for safety.
if pip_install_cmd.to_s.empty?
pip_install_cmd = DEFAULT_PIP_INSTALL_CMD
end
machine.ui.detail I18n.t("vagrant.provisioners.ansible.installing_pip")
machine.communicate.execute pip_install_cmd
end
end
end
end
end
end