class Itamae::Plugin::Resource::Pip
Public Instance Methods
action_install(action_options)
click to toggle source
# File lib/itamae/plugin/resource/pip.rb, line 32 def action_install(action_options) if current.installed if attributes.version && current.version != attributes.version install! updated! end else install! updated! end end
action_uninstall(action_options)
click to toggle source
# File lib/itamae/plugin/resource/pip.rb, line 50 def action_uninstall(action_options) install! updated! end
action_upgrade(action_options)
click to toggle source
# File lib/itamae/plugin/resource/pip.rb, line 44 def action_upgrade(action_options) return if current.installed && attributes.version && attributes.version == current.version install! updated! end
pre_action()
click to toggle source
# File lib/itamae/plugin/resource/pip.rb, line 13 def pre_action case @current_action when :install attributes.installed = true when :uninstall attributes.installed = false end end
set_current_attributes()
click to toggle source
# File lib/itamae/plugin/resource/pip.rb, line 22 def set_current_attributes installed = installed_pips.find {|pip| pip[:name] == attributes.package_name } current.installed = !!installed if current.installed version = installed[:version] current.version = version if version != attributes.version end end
Private Instance Methods
build_pip_install_command()
click to toggle source
# File lib/itamae/plugin/resource/pip.rb, line 68 def build_pip_install_command cmd = [*Array(attributes.pip_binary), 'install'] cmd << attributes.options if attributes.options if attributes.version cmd << "#{attributes.package_name}==#{attributes.version}" else cmd << attributes.package_name end case @current_action when :upgrade cmd << '--upgrade' when :uninstall cmd.find {|w| w =~ /\Ainstall\z/ }.sub!(/\A/, 'un') cmd << '-y' end cmd end
install!()
click to toggle source
# File lib/itamae/plugin/resource/pip.rb, line 89 def install! run_command(build_pip_install_command) end
installed_pips()
click to toggle source
# File lib/itamae/plugin/resource/pip.rb, line 57 def installed_pips pips = [] run_command([*Array(attributes.pip_binary), 'freeze']).stdout.each_line do |line| name, version = line.split(/==/) pips << {name: name, version: version.chomp} end pips rescue Backend::CommandExecutionError [] end