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