require 'open3' module MacOSSystem def os_name "macOS" end def cpus stdout, stderr, status = Open3.capture3("sysctl -n hw.ncpu") stdout.strip.to_i end def install(packages) missing_packages = packages.reject { |pkg| package_installed?(pkg) } if missing_packages.empty? puts "All packages are already installed." return end pkg_list = missing_packages.join(' ') puts "Installing missing packages: #{pkg_list}" success = system("brew install #{pkg_list}") unless success puts "Failed to install some packages." end end def package_installed?(package) system("brew list --formula | grep -qx #{package}") end def uninstall(packages) installed_packages = packages.select { |pkg| package_installed?(pkg) } if installed_packages.empty? puts "None of the specified packages are installed." return end pkg_list = installed_packages.join(' ') puts "Uninstalling packages: #{pkg_list}" success = system("brew uninstall #{pkg_list}") unless success puts "Failed to uninstall some packages." end end end