mirror of
https://github.com/Homebrew/brew.git
synced 2025-07-14 16:09:03 +08:00
53 lines
1.4 KiB
Ruby
53 lines
1.4 KiB
Ruby
# typed: true
|
|
# frozen_string_literal: true
|
|
|
|
module Utils
|
|
# Helpers for `brew services` related code.
|
|
module Service
|
|
# Check if a service is running for a specified formula.
|
|
sig { params(formula: Formula).returns(T::Boolean) }
|
|
def self.running?(formula)
|
|
if launchctl?
|
|
quiet_system(launchctl, "list", formula.plist_name)
|
|
elsif systemctl?
|
|
quiet_system(systemctl, "is-active", "--quiet", formula.service_name)
|
|
end
|
|
end
|
|
|
|
# Check if a service file is installed in the expected location.
|
|
sig { params(formula: Formula).returns(T::Boolean) }
|
|
def self.installed?(formula)
|
|
(launchctl? && formula.launchd_service_path.exist?) ||
|
|
(systemctl? && formula.systemd_service_path.exist?)
|
|
end
|
|
|
|
# Path to launchctl binary.
|
|
sig { returns(T.nilable(Pathname)) }
|
|
def self.launchctl
|
|
return @launchctl if defined? @launchctl
|
|
return if ENV["HOMEBREW_TEST_GENERIC_OS"]
|
|
|
|
@launchctl = which("launchctl")
|
|
end
|
|
|
|
# Path to systemctl binary.
|
|
sig { returns(T.nilable(Pathname)) }
|
|
def self.systemctl
|
|
return @systemctl if defined? @systemctl
|
|
return if ENV["HOMEBREW_TEST_GENERIC_OS"]
|
|
|
|
@systemctl = which("systemctl")
|
|
end
|
|
|
|
sig { returns(T::Boolean) }
|
|
def self.launchctl?
|
|
!launchctl.nil?
|
|
end
|
|
|
|
sig { returns(T::Boolean) }
|
|
def self.systemctl?
|
|
!systemctl.nil?
|
|
end
|
|
end
|
|
end
|