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.
19 20 21 22 |
# File 'utils/service.rb', line 19 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.
26 27 28 29 30 31 |
# File 'utils/service.rb', line 26 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.
43 44 45 |
# File 'utils/service.rb', line 43 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.
9 10 11 12 13 14 15 |
# File 'utils/service.rb', line 9 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 |
.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.
35 36 37 38 39 40 |
# File 'utils/service.rb', line 35 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.
48 49 50 |
# File 'utils/service.rb', line 48 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
55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 |
# File 'utils/service.rb', line 55 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 |