class Chef::Provider::Package::Pacman

Public Instance Methods

candidate_version() click to toggle source
# File lib/chef/provider/package/pacman.rb, line 71
def candidate_version
  @candidate_version
end
install_package(name, version) click to toggle source
# File lib/chef/provider/package/pacman.rb, line 75
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 33
def load_current_resource
  @current_resource = Chef::Resource::Package.new(new_resource.name)
  current_resource.package_name(new_resource.package_name)
  current_resource.version = []

  repos = %w{extra core community}

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

  repos = Regexp.union(repos)
  status = shell_out("pacman", "-Sl")

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

  pkg_db_data = status.stdout
  @candidate_version = []
  package_name_array.each do |pkg|
    pkg_data = pkg_db_data.match(/(#{repos}) #{pkg} (?<candidate>.*?-[0-9]+)(?<installed> \[.*?( (?<current>.*?-[0-9]+))?\])?\n/m)
    unless pkg_data
      raise Chef::Exceptions::Package, "pacman does not have a version of package #{pkg}"
    end

    @candidate_version << pkg_data[:candidate]
    if pkg_data[:installed]
      current_resource.version << (pkg_data[:current] || pkg_data[:candidate])
    else
      current_resource.version << nil
    end
  end

  current_resource
end
purge_package(name, version) click to toggle source
# File lib/chef/provider/package/pacman.rb, line 87
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 83
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 79
def upgrade_package(name, version)
  install_package(name, version)
end