Try non-nil params

This commit is contained in:
Douglas Eichelberger 2025-08-10 09:30:57 -07:00
parent 6c18f5c265
commit 899a6c5977
No known key found for this signature in database
GPG Key ID: F90193CBD547EB81

View File

@ -23,7 +23,7 @@ module Homebrew
PROCESS_TYPE_ADAPTIVE = :adaptive PROCESS_TYPE_ADAPTIVE = :adaptive
KEEP_ALIVE_KEYS = [:always, :successful_exit, :crashed, :path].freeze KEEP_ALIVE_KEYS = [:always, :successful_exit, :crashed, :path].freeze
SOCKET_STRING_REGEX = %r{^([a-z]+)://(.+):([0-9]+)$}i SOCKET_STRING_REGEX = %r{^(?<type>[a-z]+)://(?<host>.+):(?<port>[0-9]+)$}i
RunParam = T.type_alias { T.nilable(T.any(T::Array[T.any(String, Pathname)], String, Pathname)) } RunParam = T.type_alias { T.nilable(T.any(T::Array[T.any(String, Pathname)], String, Pathname)) }
Sockets = T.type_alias { T::Hash[Symbol, { host: String, port: String, type: String }] } Sockets = T.type_alias { T::Hash[Symbol, { host: String, port: String, type: String }] }
@ -107,8 +107,8 @@ module Homebrew
end end
end end
sig { params(path: T.nilable(T.any(String, Pathname))).returns(T.nilable(String)) } sig { params(path: T.any(String, Pathname)).returns(T.nilable(String)) }
def working_dir(path = nil) def working_dir(path = T.unsafe(nil))
if path if path
@working_dir = path.to_s @working_dir = path.to_s
else else
@ -116,8 +116,8 @@ module Homebrew
end end
end end
sig { params(path: T.nilable(T.any(String, Pathname))).returns(T.nilable(String)) } sig { params(path: T.any(String, Pathname)).returns(T.nilable(String)) }
def root_dir(path = nil) def root_dir(path = T.unsafe(nil))
if path if path
@root_dir = path.to_s @root_dir = path.to_s
else else
@ -125,8 +125,8 @@ module Homebrew
end end
end end
sig { params(path: T.nilable(T.any(String, Pathname))).returns(T.nilable(String)) } sig { params(path: T.any(String, Pathname)).returns(T.nilable(String)) }
def input_path(path = nil) def input_path(path = T.unsafe(nil))
if path if path
@input_path = path.to_s @input_path = path.to_s
else else
@ -134,8 +134,8 @@ module Homebrew
end end
end end
sig { params(path: T.nilable(T.any(String, Pathname))).returns(T.nilable(String)) } sig { params(path: T.any(String, Pathname)).returns(T.nilable(String)) }
def log_path(path = nil) def log_path(path = T.unsafe(nil))
if path if path
@log_path = path.to_s @log_path = path.to_s
else else
@ -143,8 +143,8 @@ module Homebrew
end end
end end
sig { params(path: T.nilable(T.any(String, Pathname))).returns(T.nilable(String)) } sig { params(path: T.any(String, Pathname)).returns(T.nilable(String)) }
def error_log_path(path = nil) def error_log_path(path = T.unsafe(nil))
if path if path
@error_log_path = path.to_s @error_log_path = path.to_s
else else
@ -153,10 +153,10 @@ module Homebrew
end end
sig { sig {
params(value: T.nilable(T.any(T::Boolean, T::Hash[Symbol, T.untyped]))) params(value: T.any(T::Boolean, T::Hash[Symbol, T.untyped]))
.returns(T.nilable(T::Hash[Symbol, T.untyped])) .returns(T.nilable(T::Hash[Symbol, T.untyped]))
} }
def keep_alive(value = nil) def keep_alive(value = T.unsafe(nil))
case value case value
when nil when nil
@keep_alive @keep_alive
@ -171,8 +171,8 @@ module Homebrew
end end
end end
sig { params(value: T.nilable(T::Boolean)).returns(T::Boolean) } sig { params(value: T::Boolean).returns(T::Boolean) }
def require_root(value = nil) def require_root(value = T.unsafe(nil))
if value.nil? if value.nil?
@require_root @require_root
else else
@ -186,8 +186,8 @@ module Homebrew
@require_root.present? && @require_root == true @require_root.present? && @require_root == true
end end
sig { params(value: T.nilable(T::Boolean)).returns(T.nilable(T::Boolean)) } sig { params(value: T::Boolean).returns(T.nilable(T::Boolean)) }
def run_at_load(value = nil) def run_at_load(value = T.unsafe(nil))
if value.nil? if value.nil?
@run_at_load @run_at_load
else else
@ -196,32 +196,30 @@ module Homebrew
end end
sig { sig {
params(value: T.nilable(T.any(String, T::Hash[Symbol, String]))) params(value: T.any(String, T::Hash[Symbol, String]))
.returns(T::Hash[Symbol, T::Hash[Symbol, String]]) .returns(T::Hash[Symbol, T::Hash[Symbol, String]])
} }
def sockets(value = nil) def sockets(value = T.unsafe(nil))
return @sockets if value.nil? return @sockets if value.nil?
@sockets = case value value_hash = case value
when String when String
{ listeners: value } { listeners: value }
when Hash when Hash
value value
end.transform_values do |socket_string| end
@sockets = T.must(value_hash).transform_values do |socket_string|
match = socket_string.match(SOCKET_STRING_REGEX) match = socket_string.match(SOCKET_STRING_REGEX)
raise TypeError, "Service#sockets a formatted socket definition as <type>://<host>:<port>" unless match raise TypeError, "Service#sockets a formatted socket definition as <type>://<host>:<port>" unless match
type = T.must(match[1])
host = T.must(match[2])
port = T.must(match[3])
begin begin
IPAddr.new(host) IPAddr.new(match[:host])
rescue IPAddr::InvalidAddressError rescue IPAddr::InvalidAddressError
raise TypeError, "Service#sockets expects a valid ipv4 or ipv6 host address" raise TypeError, "Service#sockets expects a valid ipv4 or ipv6 host address"
end end
{ host:, port:, type: } { host: match[:host], port: match[:port], type: match[:type] }
end end
end end
@ -231,8 +229,8 @@ module Homebrew
!@keep_alive.empty? && @keep_alive[:always] != false !@keep_alive.empty? && @keep_alive[:always] != false
end end
sig { params(value: T.nilable(T::Boolean)).returns(T::Boolean) } sig { params(value: T::Boolean).returns(T::Boolean) }
def launch_only_once(value = nil) def launch_only_once(value = T.unsafe(nil))
if value.nil? if value.nil?
@launch_only_once @launch_only_once
else else
@ -240,17 +238,17 @@ module Homebrew
end end
end end
sig { params(value: T.nilable(Integer)).returns(T.nilable(Integer)) } sig { params(value: Integer).returns(T.nilable(Integer)) }
def restart_delay(value = nil) def restart_delay(value = T.unsafe(nil))
if restart_delay if value
@restart_delay = value @restart_delay = value
else else
@restart_delay @restart_delay
end end
end end
sig { params(value: T.nilable(Symbol)).returns(T.nilable(Symbol)) } sig { params(value: Symbol).returns(T.nilable(Symbol)) }
def process_type(value = nil) def process_type(value = T.unsafe(nil))
case value case value
when nil when nil
@process_type @process_type
@ -263,8 +261,8 @@ module Homebrew
end end
end end
sig { params(value: T.nilable(Symbol)).returns(T.nilable(Symbol)) } sig { params(value: Symbol).returns(T.nilable(Symbol)) }
def run_type(value = nil) def run_type(value = T.unsafe(nil))
case value case value
when nil when nil
@run_type @run_type
@ -275,8 +273,8 @@ module Homebrew
end end
end end
sig { params(value: T.nilable(Integer)).returns(T.nilable(Integer)) } sig { params(value: Integer).returns(T.nilable(Integer)) }
def interval(value = nil) def interval(value = T.unsafe(nil))
if value if value
@interval = value @interval = value
else else
@ -284,8 +282,8 @@ module Homebrew
end end
end end
sig { params(value: T.nilable(String)).returns(T::Hash[Symbol, T.any(Integer, String)]) } sig { params(value: String).returns(T::Hash[Symbol, T.any(Integer, String)]) }
def cron(value = nil) def cron(value = T.unsafe(nil))
if value if value
@cron = parse_cron(value) @cron = parse_cron(value)
else else
@ -344,8 +342,8 @@ module Homebrew
@environment_variables = variables.transform_values(&:to_s) @environment_variables = variables.transform_values(&:to_s)
end end
sig { params(value: T.nilable(T::Boolean)).returns(T::Boolean) } sig { params(value: T::Boolean).returns(T::Boolean) }
def macos_legacy_timers(value = nil) def macos_legacy_timers(value = T.unsafe(nil))
if value.nil? if value.nil?
@macos_legacy_timers @macos_legacy_timers
else else