class Autoproj::PackageManagers::ZypperManager
Package manger for OpenSuse and Suse (untested)
Public Class Methods
new(ws)
click to toggle source
Calls superclass method
Autoproj::PackageManagers::ShellScriptManager::new
# File lib/autoproj/package_managers/zypper_manager.rb, line 5 def initialize(ws) super(ws, true, %w[zypper install], %w[zypper -n install]) end
Public Instance Methods
filter_uptodate_packages(packages)
click to toggle source
# File lib/autoproj/package_managers/zypper_manager.rb, line 11 def filter_uptodate_packages(packages) `LANG=C rpm -q --whatprovides '#{packages.join("' '")}'` has_all_pkgs = $?.success? if has_all_pkgs [] else packages # let zypper filter, we need root now anyways end end
install(packages, filter_uptodate_packages: false, install_only: false)
click to toggle source
Calls superclass method
Autoproj::PackageManagers::ShellScriptManager#install
# File lib/autoproj/package_managers/zypper_manager.rb, line 22 def install(packages, filter_uptodate_packages: false, install_only: false) if filter_uptodate_packages || install_only packages = filter_uptodate_packages(packages) end patterns, packages = packages.partition { |pkg| pkg =~ /^@/ } patterns = patterns.map { |str| str[1..-1] } result = false unless patterns.empty? result |= super(patterns, auto_install_cmd: %w[zypper --non-interactive install --type pattern], user_install_cmd: %w[zypper install --type pattern]) end result |= super(packages) unless packages.empty? if result # Invalidate caching of installed packages, as we just # installed new packages ! @installed_packages = nil end end