| 
									
										
										
										
											2025-03-18 17:38:37 +00:00
										 |  |  | # typed: true # rubocop:todo Sorbet/StrictSigil | 
					
						
							|  |  |  | # frozen_string_literal: true | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | module Homebrew | 
					
						
							|  |  |  |   module Bundle | 
					
						
							|  |  |  |     module Checker | 
					
						
							|  |  |  |       class BrewServiceChecker < Homebrew::Bundle::Checker::Base | 
					
						
							|  |  |  |         PACKAGE_TYPE = :brew | 
					
						
							|  |  |  |         PACKAGE_TYPE_NAME = "Service" | 
					
						
							|  |  |  |         PACKAGE_ACTION_PREDICATE = "needs to be started." | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         def failure_reason(name, no_upgrade:) | 
					
						
							|  |  |  |           "#{PACKAGE_TYPE_NAME} #{name} needs to be started." | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         def installed_and_up_to_date?(formula, no_upgrade: false) | 
					
						
							|  |  |  |           return true unless formula_needs_to_start?(entry_to_formula(formula)) | 
					
						
							|  |  |  |           return true if service_is_started?(formula.name) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |           old_name = lookup_old_name(formula.name) | 
					
						
							|  |  |  |           return true if old_name && service_is_started?(old_name) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |           false | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         def entry_to_formula(entry) | 
					
						
							| 
									
										
										
										
											2025-03-24 21:55:47 +08:00
										 |  |  |           require "bundle/brew_installer" | 
					
						
							| 
									
										
										
										
											2025-03-18 17:38:37 +00:00
										 |  |  |           Homebrew::Bundle::BrewInstaller.new(entry.name, entry.options) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         def formula_needs_to_start?(formula) | 
					
						
							|  |  |  |           formula.start_service? || formula.restart_service? | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         def service_is_started?(service_name) | 
					
						
							| 
									
										
										
										
											2025-03-24 21:55:47 +08:00
										 |  |  |           require "bundle/brew_services" | 
					
						
							| 
									
										
										
										
											2025-03-18 17:38:37 +00:00
										 |  |  |           Homebrew::Bundle::BrewServices.started?(service_name) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         def lookup_old_name(service_name) | 
					
						
							| 
									
										
										
										
											2025-03-24 21:55:47 +08:00
										 |  |  |           require "bundle/brew_dumper" | 
					
						
							| 
									
										
										
										
											2025-03-18 17:38:37 +00:00
										 |  |  |           @old_names ||= Homebrew::Bundle::BrewDumper.formula_oldnames | 
					
						
							|  |  |  |           old_name = @old_names[service_name] | 
					
						
							|  |  |  |           old_name ||= @old_names[service_name.split("/").last] | 
					
						
							|  |  |  |           old_name | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         def format_checkable(entries) | 
					
						
							|  |  |  |           checkable_entries(entries) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | end |