Module: Utils::Service Private
- Defined in:
- utils/service.rb
Overview
This module is part of a private API. This module may only be used in the Homebrew/brew repository. Third parties should avoid using this module if possible, as it may be removed or changed without warning.
Helpers for brew services related code.
Class Method Summary collapse
-
.installed?(formula) ⇒ Boolean
private
Check if a service file is installed in the expected location.
-
.launchctl ⇒ Pathname?
private
Path to launchctl binary.
- .launchctl? ⇒ Boolean private
-
.running?(formula) ⇒ Boolean
private
Check if a service is running for a specified formula.
-
.systemctl ⇒ Pathname?
private
Path to systemctl binary.
- .systemctl? ⇒ Boolean private
-
.systemd_quote(str) ⇒ String
private
Quote a string for use in systemd command lines, e.g., in
ExecStart.
Class Method Details
.installed?(formula) ⇒ Boolean
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
Check if a service file is installed in the expected location.
23 24 25 26 |
# File 'utils/service.rb', line 23 def self.installed?(formula) (launchctl? && formula.launchd_service_path.exist?) || (systemctl? && formula.systemd_service_path.exist?) end |
.launchctl ⇒ Pathname?
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
Path to launchctl binary.
30 31 32 33 34 35 |
# File 'utils/service.rb', line 30 def self.launchctl return @launchctl if defined? @launchctl return if ENV["HOMEBREW_TEST_GENERIC_OS"] @launchctl = T.let(which("launchctl"), T.nilable(Pathname)) end |
.launchctl? ⇒ Boolean
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
47 48 49 |
# File 'utils/service.rb', line 47 def self.launchctl? !launchctl.nil? end |
.running?(formula) ⇒ Boolean
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
Check if a service is running for a specified formula.
11 12 13 14 15 16 17 18 19 |
# File 'utils/service.rb', line 11 def self.running?(formula) if launchctl? Homebrew::Services::System.launchctl_service_running?(formula.plist_name) elsif systemctl? quiet_system(systemctl, "is-active", "--quiet", formula.service_name) else false end end |
.systemctl ⇒ Pathname?
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
Path to systemctl binary.
39 40 41 42 43 44 |
# File 'utils/service.rb', line 39 def self.systemctl return @systemctl if defined? @systemctl return if ENV["HOMEBREW_TEST_GENERIC_OS"] @systemctl = T.let(which("systemctl"), T.nilable(Pathname)) end |
.systemctl? ⇒ Boolean
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
52 53 54 |
# File 'utils/service.rb', line 52 def self.systemctl? !systemctl.nil? end |
.systemd_quote(str) ⇒ String
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
Quote a string for use in systemd command lines, e.g., in ExecStart.
https://www.freedesktop.org/software/systemd/man/latest/systemd.syntax.html#Quoting
59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 |
# File 'utils/service.rb', line 59 def self.systemd_quote(str) result = +"\"" # No need to escape single quotes and spaces, as we're always double # quoting the entire string. str.each_char do |char| result << case char when "\a" then "\\a" when "\b" then "\\b" when "\f" then "\\f" when "\n" then "\\n" when "\r" then "\\r" when "\t" then "\\t" when "\v" then "\\v" when "\\" then "\\\\" when "\"" then "\\\"" else char end end result << "\"" result.freeze end |