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-07-04 11:25:41 +01:00
|
|
|
require "bundle/formula_installer"
|
|
|
|
Homebrew::Bundle::FormulaInstaller.new(entry.name, entry.options)
|
2025-03-18 17:38:37 +00:00
|
|
|
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-07-04 11:25:41 +01:00
|
|
|
require "bundle/formula_dumper"
|
|
|
|
@old_names ||= Homebrew::Bundle::FormulaDumper.formula_oldnames
|
2025-03-18 17:38:37 +00:00
|
|
|
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
|