@@ -23,7 +23,7 @@ class Service
23
23
PROCESS_TYPE_ADAPTIVE = :adaptive
24
24
25
25
KEEP_ALIVE_KEYS = [ :always , :successful_exit , :crashed , :path ] . freeze
26
- SOCKET_STRING_REGEX = %r{^([a-z]+)://(.+):([0-9]+)$}i
26
+ SOCKET_STRING_REGEX = %r{^(?<type> [a-z]+)://(?<host> .+):(?<port> [0-9]+)$}i
27
27
28
28
RunParam = T . type_alias { T . nilable ( T . any ( T ::Array [ T . any ( String , Pathname ) ] , String , Pathname ) ) }
29
29
Sockets = T . type_alias { T ::Hash [ Symbol , { host : String , port : String , type : String } ] }
@@ -107,44 +107,44 @@ def run(command = nil, macos: nil, linux: nil)
107
107
end
108
108
end
109
109
110
- sig { params ( path : T . nilable ( T . any ( String , Pathname ) ) ) . returns ( T . nilable ( String ) ) }
111
- def working_dir ( path = nil )
110
+ sig { params ( path : T . any ( String , Pathname ) ) . returns ( T . nilable ( String ) ) }
111
+ def working_dir ( path = T . unsafe ( nil ) )
112
112
if path
113
113
@working_dir = path . to_s
114
114
else
115
115
@working_dir
116
116
end
117
117
end
118
118
119
- sig { params ( path : T . nilable ( T . any ( String , Pathname ) ) ) . returns ( T . nilable ( String ) ) }
120
- def root_dir ( path = nil )
119
+ sig { params ( path : T . any ( String , Pathname ) ) . returns ( T . nilable ( String ) ) }
120
+ def root_dir ( path = T . unsafe ( nil ) )
121
121
if path
122
122
@root_dir = path . to_s
123
123
else
124
124
@root_dir
125
125
end
126
126
end
127
127
128
- sig { params ( path : T . nilable ( T . any ( String , Pathname ) ) ) . returns ( T . nilable ( String ) ) }
129
- def input_path ( path = nil )
128
+ sig { params ( path : T . any ( String , Pathname ) ) . returns ( T . nilable ( String ) ) }
129
+ def input_path ( path = T . unsafe ( nil ) )
130
130
if path
131
131
@input_path = path . to_s
132
132
else
133
133
@input_path
134
134
end
135
135
end
136
136
137
- sig { params ( path : T . nilable ( T . any ( String , Pathname ) ) ) . returns ( T . nilable ( String ) ) }
138
- def log_path ( path = nil )
137
+ sig { params ( path : T . any ( String , Pathname ) ) . returns ( T . nilable ( String ) ) }
138
+ def log_path ( path = T . unsafe ( nil ) )
139
139
if path
140
140
@log_path = path . to_s
141
141
else
142
142
@log_path
143
143
end
144
144
end
145
145
146
- sig { params ( path : T . nilable ( T . any ( String , Pathname ) ) ) . returns ( T . nilable ( String ) ) }
147
- def error_log_path ( path = nil )
146
+ sig { params ( path : T . any ( String , Pathname ) ) . returns ( T . nilable ( String ) ) }
147
+ def error_log_path ( path = T . unsafe ( nil ) )
148
148
if path
149
149
@error_log_path = path . to_s
150
150
else
@@ -153,10 +153,10 @@ def error_log_path(path = nil)
153
153
end
154
154
155
155
sig {
156
- params ( value : T . nilable ( T . any ( T ::Boolean , T ::Hash [ Symbol , T . untyped ] ) ) )
156
+ params ( value : T . any ( T ::Boolean , T ::Hash [ Symbol , T . untyped ] ) )
157
157
. returns ( T . nilable ( T ::Hash [ Symbol , T . untyped ] ) )
158
158
}
159
- def keep_alive ( value = nil )
159
+ def keep_alive ( value = T . unsafe ( nil ) )
160
160
case value
161
161
when nil
162
162
@keep_alive
@@ -171,8 +171,8 @@ def keep_alive(value = nil)
171
171
end
172
172
end
173
173
174
- sig { params ( value : T . nilable ( T ::Boolean ) ) . returns ( T ::Boolean ) }
175
- def require_root ( value = nil )
174
+ sig { params ( value : T ::Boolean ) . returns ( T ::Boolean ) }
175
+ def require_root ( value = T . unsafe ( nil ) )
176
176
if value . nil?
177
177
@require_root
178
178
else
@@ -186,8 +186,8 @@ def requires_root?
186
186
@require_root . present? && @require_root == true
187
187
end
188
188
189
- sig { params ( value : T . nilable ( T ::Boolean ) ) . returns ( T . nilable ( T ::Boolean ) ) }
190
- def run_at_load ( value = nil )
189
+ sig { params ( value : T ::Boolean ) . returns ( T . nilable ( T ::Boolean ) ) }
190
+ def run_at_load ( value = T . unsafe ( nil ) )
191
191
if value . nil?
192
192
@run_at_load
193
193
else
@@ -196,32 +196,30 @@ def run_at_load(value = nil)
196
196
end
197
197
198
198
sig {
199
- params ( value : T . nilable ( T . any ( String , T ::Hash [ Symbol , String ] ) ) )
199
+ params ( value : T . any ( String , T ::Hash [ Symbol , String ] ) )
200
200
. returns ( T ::Hash [ Symbol , T ::Hash [ Symbol , String ] ] )
201
201
}
202
- def sockets ( value = nil )
202
+ def sockets ( value = T . unsafe ( nil ) )
203
203
return @sockets if value . nil?
204
204
205
- @sockets = case value
205
+ value_hash = case value
206
206
when String
207
207
{ listeners : value }
208
208
when Hash
209
209
value
210
- end . transform_values do |socket_string |
210
+ end
211
+
212
+ @sockets = T . must ( value_hash ) . transform_values do |socket_string |
211
213
match = socket_string . match ( SOCKET_STRING_REGEX )
212
214
raise TypeError , "Service#sockets a formatted socket definition as <type>://<host>:<port>" unless match
213
215
214
- type = T . must ( match [ 1 ] )
215
- host = T . must ( match [ 2 ] )
216
- port = T . must ( match [ 3 ] )
217
-
218
216
begin
219
- IPAddr . new ( host )
217
+ IPAddr . new ( match [ : host] )
220
218
rescue IPAddr ::InvalidAddressError
221
219
raise TypeError , "Service#sockets expects a valid ipv4 or ipv6 host address"
222
220
end
223
221
224
- { host :, port :, type : }
222
+ { host : match [ :host ] , port : match [ :port ] , type : match [ :type ] }
225
223
end
226
224
end
227
225
@@ -231,26 +229,26 @@ def keep_alive?
231
229
!@keep_alive . empty? && @keep_alive [ :always ] != false
232
230
end
233
231
234
- sig { params ( value : T . nilable ( T ::Boolean ) ) . returns ( T ::Boolean ) }
235
- def launch_only_once ( value = nil )
232
+ sig { params ( value : T ::Boolean ) . returns ( T ::Boolean ) }
233
+ def launch_only_once ( value = T . unsafe ( nil ) )
236
234
if value . nil?
237
235
@launch_only_once
238
236
else
239
237
@launch_only_once = value
240
238
end
241
239
end
242
240
243
- sig { params ( value : T . nilable ( Integer ) ) . returns ( T . nilable ( Integer ) ) }
244
- def restart_delay ( value = nil )
245
- if restart_delay
241
+ sig { params ( value : Integer ) . returns ( T . nilable ( Integer ) ) }
242
+ def restart_delay ( value = T . unsafe ( nil ) )
243
+ if value
246
244
@restart_delay = value
247
245
else
248
246
@restart_delay
249
247
end
250
248
end
251
249
252
- sig { params ( value : T . nilable ( Symbol ) ) . returns ( T . nilable ( Symbol ) ) }
253
- def process_type ( value = nil )
250
+ sig { params ( value : Symbol ) . returns ( T . nilable ( Symbol ) ) }
251
+ def process_type ( value = T . unsafe ( nil ) )
254
252
case value
255
253
when nil
256
254
@process_type
@@ -263,8 +261,8 @@ def process_type(value = nil)
263
261
end
264
262
end
265
263
266
- sig { params ( value : T . nilable ( Symbol ) ) . returns ( T . nilable ( Symbol ) ) }
267
- def run_type ( value = nil )
264
+ sig { params ( value : Symbol ) . returns ( T . nilable ( Symbol ) ) }
265
+ def run_type ( value = T . unsafe ( nil ) )
268
266
case value
269
267
when nil
270
268
@run_type
@@ -275,17 +273,17 @@ def run_type(value = nil)
275
273
end
276
274
end
277
275
278
- sig { params ( value : T . nilable ( Integer ) ) . returns ( T . nilable ( Integer ) ) }
279
- def interval ( value = nil )
276
+ sig { params ( value : Integer ) . returns ( T . nilable ( Integer ) ) }
277
+ def interval ( value = T . unsafe ( nil ) )
280
278
if value
281
279
@interval = value
282
280
else
283
281
@interval
284
282
end
285
283
end
286
284
287
- sig { params ( value : T . nilable ( String ) ) . returns ( T ::Hash [ Symbol , T . any ( Integer , String ) ] ) }
288
- def cron ( value = nil )
285
+ sig { params ( value : String ) . returns ( T ::Hash [ Symbol , T . any ( Integer , String ) ] ) }
286
+ def cron ( value = T . unsafe ( nil ) )
289
287
if value
290
288
@cron = parse_cron ( value )
291
289
else
@@ -344,8 +342,8 @@ def environment_variables(variables = {})
344
342
@environment_variables = variables . transform_values ( &:to_s )
345
343
end
346
344
347
- sig { params ( value : T . nilable ( T ::Boolean ) ) . returns ( T ::Boolean ) }
348
- def macos_legacy_timers ( value = nil )
345
+ sig { params ( value : T ::Boolean ) . returns ( T ::Boolean ) }
346
+ def macos_legacy_timers ( value = T . unsafe ( nil ) )
349
347
if value . nil?
350
348
@macos_legacy_timers
351
349
else
0 commit comments