Class: Pkg

Inherits:
Thor
  • Object
show all
Defined in:
lib/pkg/pkg.rb

Direct Known Subclasses

Cmt

Constant Summary collapse

SYSTEM_PACKAGE_MANGER =
{
  'manjaro' => 'pacman',
  'fedora' => 'dnf',
  'windows' => 'winget'
}.freeze
PACKAGE_MANGER =
{
  'pacman' => Pacman,
  'dnf' => Dnf,
  'winget' => Winget,
  'pip' => Pip,
  'snap' => Snap,
  'yay' => Yay
}.freeze
RELEASE_FILE =
'/etc/os-release'.freeze

Class Method Summary collapse

Class Method Details

.get_package_manager(pkgm) ⇒ Object

manager.install_all(packages, *args) end



41
42
43
44
45
46
47
48
49
50
51
52
53
# File 'lib/pkg/pkg.rb', line 41

def self.get_package_manager(pkgm)
  pkgm = Pkg.get_system_package_manager unless pkgm != 'system'
  manager = PACKAGE_MANGER[pkgm]

  if manager.nil?
    Log::LOGGER.error("'#{pkgm}' is not supported")
    abort("'#{pkgm}' is not supported")
  end

  Log::LOGGER.info("Using package manager '#{manager}'")

  manager
end

.get_system_package_managerObject



55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
# File 'lib/pkg/pkg.rb', line 55

def self.get_system_package_manager
  manager = nil

  if Gem.win_platform?
    manager = SYSTEM_PACKAGE_MANGER['windows']
  else
    r = { 'distro' => nil }
    unless File.exist?(RELEASE_FILE)
      Log::LOGGER.error("'#{RELEASE_FILE}' does not exist")
      abort("'#{RELEASE_FILE}' does not exist")
    end

    File.foreach(RELEASE_FILE) do |line|
      r = { 'distro' => ::Regexp.last_match(1) } if line =~ /^ID=(.*)/
    end

    manager = SYSTEM_PACKAGE_MANGER[r['distro']]
  end

  return manager
end