Merge pull request #12019 from valrus/services-plist-add-process-type

Add process_type to service DSL
This commit is contained in:
Rylan Polster 2021-09-10 21:01:37 -04:00 committed by GitHub
commit bf95782ee2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 26 additions and 0 deletions

View File

@ -13,6 +13,11 @@ module Homebrew
RUN_TYPE_INTERVAL = "interval" RUN_TYPE_INTERVAL = "interval"
RUN_TYPE_CRON = "cron" RUN_TYPE_CRON = "cron"
PROCESS_TYPE_BACKGROUND = "background"
PROCESS_TYPE_STANDARD = "standard"
PROCESS_TYPE_INTERACTIVE = "interactive"
PROCESS_TYPE_ADAPTIVE = "adaptive"
# sig { params(formula: Formula).void } # sig { params(formula: Formula).void }
def initialize(formula, &block) def initialize(formula, &block)
@formula = formula @formula = formula
@ -119,6 +124,22 @@ module Homebrew
end end
end end
sig { params(type: T.nilable(String)).returns(T.nilable(String)) }
def process_type(type = nil)
case T.unsafe(type)
when nil
@process_type
when PROCESS_TYPE_BACKGROUND, PROCESS_TYPE_STANDARD, PROCESS_TYPE_INTERACTIVE, PROCESS_TYPE_ADAPTIVE
@process_type = type.to_s
when String
raise TypeError, "Service#process_type allows: "\
"'#{PROCESS_TYPE_BACKGROUND}'/'#{PROCESS_TYPE_STANDARD}'/"\
"'#{PROCESS_TYPE_INTERACTIVE}'/'#{PROCESS_TYPE_ADAPTIVE}'"
else
raise TypeError, "Service#process_type expects a String"
end
end
sig { params(type: T.nilable(T.any(String, Symbol))).returns(T.nilable(String)) } sig { params(type: T.nilable(T.any(String, Symbol))).returns(T.nilable(String)) }
def run_type(type = nil) def run_type(type = nil)
case T.unsafe(type) case T.unsafe(type)
@ -193,6 +214,7 @@ module Homebrew
base[:KeepAlive] = @keep_alive if @keep_alive == true base[:KeepAlive] = @keep_alive if @keep_alive == true
base[:LegacyTimers] = @macos_legacy_timers if @macos_legacy_timers == true base[:LegacyTimers] = @macos_legacy_timers if @macos_legacy_timers == true
base[:TimeOut] = @restart_delay if @restart_delay.present? base[:TimeOut] = @restart_delay if @restart_delay.present?
base[:ProcessType] = @process_type.capitalize if @process_type.present?
base[:WorkingDirectory] = @working_dir if @working_dir.present? base[:WorkingDirectory] = @working_dir if @working_dir.present?
base[:RootDirectory] = @root_dir if @root_dir.present? base[:RootDirectory] = @root_dir if @root_dir.present?
base[:StandardInPath] = @input_path if @input_path.present? base[:StandardInPath] = @input_path if @input_path.present?

View File

@ -76,6 +76,7 @@ describe Homebrew::Service do
root_dir var root_dir var
working_dir var working_dir var
keep_alive true keep_alive true
process_type "interactive"
restart_delay 30 restart_delay 30
macos_legacy_timers true macos_legacy_timers true
end end
@ -101,6 +102,8 @@ describe Homebrew::Service do
\t<string>homebrew.mxcl.formula_name</string> \t<string>homebrew.mxcl.formula_name</string>
\t<key>LegacyTimers</key> \t<key>LegacyTimers</key>
\t<true/> \t<true/>
\t<key>ProcessType</key>
\t<string>Interactive</string>
\t<key>ProgramArguments</key> \t<key>ProgramArguments</key>
\t<array> \t<array>
\t\t<string>#{HOMEBREW_PREFIX}/opt/formula_name/bin/beanstalkd</string> \t\t<string>#{HOMEBREW_PREFIX}/opt/formula_name/bin/beanstalkd</string>
@ -165,6 +168,7 @@ describe Homebrew::Service do
root_dir var root_dir var
working_dir var working_dir var
keep_alive true keep_alive true
process_type "interactive"
restart_delay 30 restart_delay 30
macos_legacy_timers true macos_legacy_timers true
end end