1- # typed: true # rubocop:todo Sorbet/StrictSigil
1+ # typed: strict
22# frozen_string_literal: true
33
44require "services/system"
@@ -12,10 +12,12 @@ class Services < Homebrew::Bundle::Brew
1212 extend Utils ::Output ::Mixin
1313
1414 class << self
15+ sig { override . void }
1516 def reset!
16- @started_services = nil
17+ @started_services = T . let ( nil , T . nilable ( T :: Array [ String ] ) )
1718 end
1819
20+ sig { params ( name : String , keep : T ::Boolean , verbose : T ::Boolean ) . returns ( T . nilable ( T ::Boolean ) ) }
1921 def stop ( name , keep : false , verbose : false )
2022 return true unless started? ( name )
2123
@@ -27,6 +29,7 @@ def stop(name, keep: false, verbose: false)
2729 true
2830 end
2931
32+ sig { params ( name : String , file : T . nilable ( Pathname ) , verbose : T ::Boolean ) . returns ( T . nilable ( T ::Boolean ) ) }
3033 def start ( name , file : nil , verbose : false )
3134 args = [ "services" , "start" , name ]
3235 args << "--file=#{ file } " if file
@@ -36,6 +39,7 @@ def start(name, file: nil, verbose: false)
3639 true
3740 end
3841
42+ sig { params ( name : String , file : T . nilable ( Pathname ) , verbose : T ::Boolean ) . returns ( T . nilable ( T ::Boolean ) ) }
3943 def run ( name , file : nil , verbose : false )
4044 args = [ "services" , "run" , name ]
4145 args << "--file=#{ file } " if file
@@ -45,6 +49,7 @@ def run(name, file: nil, verbose: false)
4549 true
4650 end
4751
52+ sig { params ( name : String , file : T . nilable ( Pathname ) , verbose : T ::Boolean ) . returns ( T . nilable ( T ::Boolean ) ) }
4853 def restart ( name , file : nil , verbose : false )
4954 args = [ "services" , "restart" , name ]
5055 args << "--file=#{ file } " if file
@@ -54,10 +59,12 @@ def restart(name, file: nil, verbose: false)
5459 true
5560 end
5661
62+ sig { params ( name : String ) . returns ( T ::Boolean ) }
5763 def started? ( name )
5864 started_services . include? name
5965 end
6066
67+ sig { returns ( T ::Array [ String ] ) }
6168 def started_services
6269 @started_services ||= begin
6370 if !Homebrew ::Services ::System . launchctl? && !Homebrew ::Services ::System . systemctl?
@@ -73,6 +80,7 @@ def started_services
7380 end
7481 end
7582
83+ sig { params ( name : String ) . returns ( T . nilable ( Pathname ) ) }
7684 def versioned_service_file ( name )
7785 env_version = Bundle . formula_versions_from_env ( name )
7886 return if env_version . nil?
@@ -91,14 +99,17 @@ def versioned_service_file(name)
9199 end
92100 end
93101
102+ sig { override . params ( name : Object , no_upgrade : T ::Boolean ) . returns ( String ) }
94103 def failure_reason ( name , no_upgrade :)
95104 _ = no_upgrade
96105
97106 "Service #{ name } needs to be started."
98107 end
99108
109+ sig { override . params ( formula : Object , no_upgrade : T ::Boolean ) . returns ( T ::Boolean ) }
100110 def installed_and_up_to_date? ( formula , no_upgrade : false )
101111 _ = no_upgrade
112+ formula = T . cast ( formula , Homebrew ::Bundle ::Dsl ::Entry )
102113
103114 return true unless formula_needs_to_start? ( entry_to_formula ( formula ) )
104115 return true if self . class . started? ( formula . name )
@@ -109,21 +120,26 @@ def installed_and_up_to_date?(formula, no_upgrade: false)
109120 false
110121 end
111122
123+ sig { params ( entry : Homebrew ::Bundle ::Dsl ::Entry ) . returns ( Homebrew ::Bundle ::Brew ) }
112124 def entry_to_formula ( entry )
113125 Homebrew ::Bundle ::Brew . new ( entry . name , entry . options )
114126 end
115127
128+ sig { params ( formula : Homebrew ::Bundle ::Brew ) . returns ( T ::Boolean ) }
116129 def formula_needs_to_start? ( formula )
117130 formula . start_service? || formula . restart_service?
118131 end
119132
133+ sig { params ( service_name : String ) . returns ( T . nilable ( String ) ) }
120134 def lookup_old_name ( service_name )
135+ @old_names ||= T . let ( nil , T . nilable ( T ::Hash [ String , String ] ) )
121136 @old_names ||= Homebrew ::Bundle ::Brew . formula_oldnames
122137 old_name = @old_names [ service_name ]
123138 old_name ||= @old_names [ service_name . split ( "/" ) . last ]
124139 old_name
125140 end
126141
142+ sig { override . params ( entries : T ::Array [ Object ] ) . returns ( T ::Array [ Object ] ) }
127143 def format_checkable ( entries )
128144 checkable_entries ( entries )
129145 end
0 commit comments