Class: Pkg
- Inherits:
-
Thor
- Object
- Thor
- Pkg
- Defined in:
- lib/pkg/pkg.rb
Direct Known Subclasses
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
-
.get_package_manager(pkgm) ⇒ Object
manager.install_all(packages, *args) end.
- .get_system_package_manager ⇒ Object
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_manager ⇒ Object
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 |