Module: Stable::Utils::PackageManager

Defined in:
lib/stable/utils/package_manager.rb

Overview

Cross-platform package manager utilities

Class Method Summary collapse

Class Method Details

.available?Boolean

Returns:

  • (Boolean)


36
37
38
39
40
41
42
43
44
# File 'lib/stable/utils/package_manager.rb', line 36

def available?
  pm = Platform.package_manager
  if pm == :yum
    system('which yum > /dev/null 2>&1') || system('which dnf > /dev/null 2>&1')
  else
    cmd = package_manager_commands.dig(pm, 0)
    cmd ? system("#{cmd} > /dev/null 2>&1") : false
  end
end

.install_command(package) ⇒ Object



10
11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/stable/utils/package_manager.rb', line 10

def install_command(package)
  case Platform.package_manager
  when :brew
    "brew install #{package}"
  when :apt
    "sudo apt update && sudo apt install -y #{package}"
  when :yum
    "sudo yum install -y #{package}"
  when :pacman
    "sudo pacman -S --noconfirm #{package}"
  else
    raise "Unsupported package manager on #{Platform.current} platform"
  end
end

.nameObject



46
47
48
49
# File 'lib/stable/utils/package_manager.rb', line 46

def name
  pm = Platform.package_manager
  package_manager_commands[pm]&.last || 'Unknown'
end

.service_start_command(service) ⇒ Object



25
26
27
28
29
30
31
32
33
34
# File 'lib/stable/utils/package_manager.rb', line 25

def service_start_command(service)
  case Platform.current
  when :macos
    "brew services start #{service}"
  when :linux
    "sudo systemctl start #{service}" if systemctl_available?
  else
    raise "Service management not supported on #{Platform.current} platform"
  end
end