Skip to content

Commit 17b257f

Browse files
committed
bundle/brew_services: typed strict
1 parent 8add6b5 commit 17b257f

File tree

2 files changed

+22
-5
lines changed

2 files changed

+22
-5
lines changed

Library/Homebrew/bundle/brew_services.rb

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# typed: true # rubocop:todo Sorbet/StrictSigil
1+
# typed: strict
22
# frozen_string_literal: true
33

44
require "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

Library/Homebrew/bundle/commands/exec.rb

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -312,10 +312,11 @@ def self.run(
312312
end
313313

314314
conflicting_services.each do |conflict|
315-
if Bundle::Brew::Services.stop(conflict["name"], keep: true)
316-
services_to_restart << conflict["name"] if conflict["registered"]
315+
name = T.cast(conflict["name"], String)
316+
if Bundle::Brew::Services.stop(name, keep: true)
317+
services_to_restart << name if conflict["registered"]
317318
else
318-
opoo "Failed to stop #{conflict["name"]} service"
319+
opoo "Failed to stop #{name} service"
319320
end
320321
end
321322

0 commit comments

Comments
 (0)