class Chef::Provider::Package::Pacman

Public Instance Methods

candidate_version() click to toggle source
# File lib/chef/provider/package/pacman.rb, line 51
def candidate_version
  return @candidate_version if @candidate_version

  repos = %w{extra core community}

  if ::File.exist?("/etc/pacman.conf")
    pacman = ::File.read("/etc/pacman.conf")
    repos = pacman.scan(/\[(.+)\]/).flatten
  end

  package_repos = repos.map { |r| Regexp.escape(r) }.join("|")

  status = shell_out("pacman", "-Sl")
  status.stdout.each_line do |line|
    case line
    when /^(#{package_repos}) #{Regexp.escape(new_resource.package_name)} (.+)$/
      # $2 contains a string like "4.4.0-1" or "3.10-4 [installed]"
      # simply split by space and use first token
      @candidate_version = $2.split(" ").first
    end
  end

  unless status.exitstatus == 0 || status.exitstatus == 1
    raise Chef::Exceptions::Package, "pacman failed - #{status.inspect}!"
  end

  unless @candidate_version
    raise Chef::Exceptions::Package, "pacman does not have a version of package #{new_resource.package_name}"
  end

  @candidate_version
end
install_package(name, version) click to toggle source
# File lib/chef/provider/package/pacman.rb, line 84
def install_package(name, version)
  shell_out!( "pacman", "--sync", "--noconfirm", "--noprogressbar", options, name)
end
load_current_resource() click to toggle source
# File lib/chef/provider/package/pacman.rb, line 30
def load_current_resource
  @current_resource = Chef::Resource::Package.new(new_resource.name)
  current_resource.package_name(new_resource.package_name)

  logger.trace("#{new_resource} checking pacman for #{new_resource.package_name}")
  status = shell_out("pacman", "-Qi", new_resource.package_name)
  status.stdout.each_line do |line|
    case line
    when /^Version(\s?)*: (.+)$/
      logger.trace("#{new_resource} current version is #{$2}")
      current_resource.version($2)
    end
  end

  unless status.exitstatus == 0 || status.exitstatus == 1
    raise Chef::Exceptions::Package, "pacman failed - #{status.inspect}!"
  end

  current_resource
end
purge_package(name, version) click to toggle source
# File lib/chef/provider/package/pacman.rb, line 96
def purge_package(name, version)
  remove_package(name, version)
end
remove_package(name, version) click to toggle source
# File lib/chef/provider/package/pacman.rb, line 92
def remove_package(name, version)
  shell_out!( "pacman", "--remove", "--noconfirm", "--noprogressbar", options, name )
end
upgrade_package(name, version) click to toggle source
# File lib/chef/provider/package/pacman.rb, line 88
def upgrade_package(name, version)
  install_package(name, version)
end