class AutomateIt::PackageManager::Portage

PackageManager::Portage

The Portage driver for the PackageManager provides a way to manage software packages on Gentoo systems using.

Public Instance Methods

install(*packages) click to toggle source

See AutomateIt::PackageManager#install

# File lib/automateit/package_manager/portage.rb, line 48
def install(*packages)
  return _install_helper(*packages) do |list, opts|
    cmd = "emerge --color n --nospinner --tree --usepkg --quiet #{list.join(' ')} < /dev/null"
    cmd << " > /dev/null" if opts[:quiet]
    cmd << " 2>&1"

    interpreter.sh(cmd)
  end
end
installed?(*packages) click to toggle source

See AutomateIt::PackageManager#installed?

# File lib/automateit/package_manager/portage.rb, line 13
def installed?(*packages)
  return _installed_helper?(*packages) do |list, opts|
    # Emerge throws an error when called with invalid packages, so it's
    # necessary to find the invalid packages and re-run the command without
    # them to find out what is actually installed.
    missing = []
    available = []
    while true
      cmd = "emerge --color n --nospinner --tree --usepkg --quiet --pretend " + \
        (list-missing).join(' ') + " < /dev/null 2>&1"
      log.debug(PEXEC+cmd)
      output = `#{cmd}`

      if output.match(/no ebuilds to satisfy "(.+)"/)
        invalid = $1
        log.debug(PNOTE+"PackageManager::Portage.installed? skipping invalid package '#{invalid}'")
        missing << invalid
        break if (list-missing).size.zero?
      else
        matches = output.scan(%r{^\[\w+\s+R\s*\] .+/(\w+?)-.+$}).flatten
        available = list & matches
        break
      end
    end

    available
  end
end
not_installed?(*packages) click to toggle source

See AutomateIt::PackageManager#not_installed?

# File lib/automateit/package_manager/portage.rb, line 43
def not_installed?(*packages)
  return _not_installed_helper?(*packages)
end
uninstall(*packages) click to toggle source

See AutomateIt::PackageManager#uninstall

# File lib/automateit/package_manager/portage.rb, line 59
def uninstall(*packages)
  return _uninstall_helper(*packages) do |list, opts|
    cmd = "emerge --color n --nospinner --tree --unmerge --quiet #{list.join(' ')} < /dev/null"
    cmd << " > /dev/null" if opts[:quiet]
    cmd << " 2>&1"

    interpreter.sh(cmd)
  end
end