class Itamae::Resource::GemPackage

Public Instance Methods

action_install(action_options) click to toggle source
# File lib/itamae/resource/gem_package.rb, line 34
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/resource/gem_package.rb, line 46
def action_uninstall(action_options)
  uninstall! if current.installed
end
action_upgrade(action_options) click to toggle source
# File lib/itamae/resource/gem_package.rb, line 50
def action_upgrade(action_options)
  return if current.installed && attributes.version && current.version == attributes.version

  install!
  updated!
end
install!() click to toggle source
# File lib/itamae/resource/gem_package.rb, line 71
def install!
  cmd = [*Array(attributes.gem_binary), 'install', *Array(attributes.options)]
  if attributes.version
    cmd << '-v' << attributes.version
  end
  if attributes.source
    cmd << '--source' << attributes.source
  end
  cmd << attributes.package_name

  run_command(cmd)
end
installed_gems() click to toggle source
# File lib/itamae/resource/gem_package.rb, line 57
def installed_gems
  gems = []
  run_command([*Array(attributes.gem_binary), 'list', '-l']).stdout.each_line do |line|
    if /\A([^ ]+) \(([^\)]+)\)\z/ =~ line.strip
      name = $1
      versions = $2.split(', ')
      gems << {name: name, versions: versions}
    end
  end
  gems
rescue Backend::CommandExecutionError
  []
end
pre_action() click to toggle source
# File lib/itamae/resource/gem_package.rb, line 11
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/resource/gem_package.rb, line 20
def set_current_attributes
  installed = installed_gems.find {|g| g[:name] == attributes.package_name }
  current.installed = !!installed

  if current.installed
    versions = installed[:versions]
    if versions.include?(attributes.version)
      current.version = attributes.version
    else
      current.version = versions.first
    end
  end
end
uninstall!() click to toggle source
# File lib/itamae/resource/gem_package.rb, line 84
def uninstall!
  cmd = [*Array(attributes.gem_binary), 'uninstall', '--ignore-dependencies', '--executables', *Array(attributes.options)]
  if attributes.version
    cmd << '-v' << attributes.version
  else
    cmd << '--all'
  end
  cmd << attributes.package_name

  run_command(cmd)
end