class ConfigCurator::PackageLookup

Lookup if a package is installed on the system. See {TOOLS} for supported package tools. If {#tool} is not explicitly set, it will try and choose one automatically. @example Lookup a package

PackageLookup.new.installed? 'ruby' #=> true

@example Lookup a package using `pacman`

PackageLookup.new(tool: :pacman).installed? 'ruby' #=> true

Constants

TOOLS

Default list of supported package tools. @see tools

Attributes

tool[RW]
tools[RW]

Public Class Methods

new(tool: nil) click to toggle source
# File lib/config_curator/package_lookup.rb, line 29
def initialize(tool: nil)
  self.tool = tool
end

Public Instance Methods

installed?(package) click to toggle source

Checks if package is installed. @param package [String] package name to check @return [Boolean] if package is installed

# File lib/config_curator/package_lookup.rb, line 55
def installed?(package)
  fail LookupFailed, 'No supported package tool found.' if tool.nil?

  cmd = tools[tool]
  fail LookupFailed, "Package tool '#{cmd}' not found." if command?(cmd).nil?

  send tool, package
end

Private Instance Methods

brew(package) click to toggle source
# File lib/config_curator/package_lookup.rb, line 91
def brew(package)
  cmd = command? 'brew'
  stdout = `#{cmd} ls --versions #{package}`
  !stdout.empty?
end
dpkg(package) click to toggle source

Tool specific package lookup methods below.

# File lib/config_curator/package_lookup.rb, line 70
def dpkg(package)
  cmd = command? 'dpkg'
  Open3.popen3 cmd, '-s', package do |_, _, _, wait_thr|
    wait_thr.value.to_i == 0
  end
end
pacman(package) click to toggle source
# File lib/config_curator/package_lookup.rb, line 77
def pacman(package)
  cmd = command? 'pacman'
  Open3.popen3 cmd, '-qQ', package do |_, _, _, wait_thr|
    wait_thr.value.to_i == 0
  end
end
pkgng(package) click to toggle source
# File lib/config_curator/package_lookup.rb, line 84
def pkgng(package)
  cmd = command? 'pkg'
  Open3.popen3 cmd, 'info', package do |_, _, _, wait_thr|
    wait_thr.value.to_i == 0
  end
end