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