module Evesync::OS::BasePackageManager
Public Class Methods
new()
click to toggle source
# File lib/evesync/os/linux/base_package_manager.rb, line 7 def initialize @packages = make_pkg_snapshot end
Public Instance Methods
changes()
click to toggle source
# File lib/evesync/os/linux/base_package_manager.rb, line 11 def changes # make hash of all packages snapshot = make_pkg_snapshot # diff with last version diff = HashDiff.diff(@packages, snapshot) # parse changes into IPC::Data::Package array packages = parse_pkg_diff(diff) # use new hash as default # FIXME: wait if the changes were saved # and properly handled @packages = snapshot packages end
Private Instance Methods
installed_package(diff)
click to toggle source
# File lib/evesync/os/linux/base_package_manager.rb, line 51 def installed_package(diff) IPC::Data::Package.new( name: diff[1], version: diff[2], command: IPC::Data::Package::Command::INSTALL ) end
parse_pkg_diff(diffs)
click to toggle source
Parses changes, given by 'hashdiff' gem into IPC::Data::Package
array
# File lib/evesync/os/linux/base_package_manager.rb, line 29 def parse_pkg_diff(diffs) packages = [] diffs.each do |diff| package = case diff[0] when '-' then removed_package(diff) when '+' then installed_package(diff) when '~' then updated_package(diff) end packages.push(package) end packages end
pkg_version_less(a, b)
click to toggle source
FIXME:
- research about restrictions and make sure this work
# File lib/evesync/os/linux/base_package_manager.rb, line 75 def pkg_version_less(a, b) a < b end
removed_package(diff)
click to toggle source
# File lib/evesync/os/linux/base_package_manager.rb, line 43 def removed_package(diff) IPC::Data::Package.new( name: diff[1], version: diff[2], command: IPC::Data::Package::Command::REMOVE ) end
updated_package(diff)
click to toggle source
# File lib/evesync/os/linux/base_package_manager.rb, line 59 def updated_package(diff) command = if pkg_version_less(diff[2], diff[3]) IPC::Data::Package::Command::UPDATE else IPC::Data::Package::Command::DOWNGRADE end IPC::Data::Package.new( name: diff[1], version: diff[3], command: command ) end