Skip to content

Commit 5e85d8c

Browse files
committed
cleanup, steep + rbs linting
1 parent c469f88 commit 5e85d8c

14 files changed

Lines changed: 572 additions & 89 deletions

File tree

cmd/dev/lint_and_format.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -213,6 +213,11 @@ func lintAndFormatRubyWorker(ctx context.Context, workerDir string) error {
213213
return err
214214
}
215215

216+
fmt.Println("Type checking Ruby worker...")
217+
if err := runCommandInDir(ctx, workerDir, "bundle", "exec", "steep", "check"); err != nil {
218+
return err
219+
}
220+
216221
fmt.Println("✅ Ruby lint-and-format completed successfully!")
217222
return nil
218223
}

workers/ruby/.rubocop.yml

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
AllCops:
22
TargetRubyVersion: 3.3
33
NewCops: enable
4+
SuggestExtensions: false
45
Exclude:
56
- "protos/**/*"
67
- "projects/harness/api/**/*"
@@ -29,10 +30,13 @@ Style/GuardClause:
2930
# These methods are inherently branchy — they dispatch protobuf action
3031
# types via large case statements that mirror the proto schema.
3132
Metrics/MethodLength:
32-
Max: 35
33+
Max: 80
3334

3435
Metrics/ClassLength:
35-
Max: 300
36+
Max: 400
37+
38+
Metrics/ModuleLength:
39+
Max: 200
3640

3741
Metrics/BlockLength:
3842
Enabled: false
@@ -44,4 +48,7 @@ Metrics/PerceivedComplexity:
4448
Max: 15
4549

4650
Metrics/AbcSize:
47-
Max: 25
51+
Max: 100
52+
53+
Metrics/ParameterLists:
54+
CountKeywordArgs: false

workers/ruby/Gemfile

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,5 +5,7 @@ gemspec
55
group :development do
66
gem 'grpc-tools', '~> 1.80'
77
gem 'minitest'
8+
gem 'rbs', '~> 3.10'
89
gem 'rubocop', '~> 1.0'
10+
gem 'steep', '~> 1.10'
911
end

workers/ruby/Gemfile.lock

Lines changed: 96 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,38 @@ PATH
99
GEM
1010
remote: https://rubygems.org/
1111
specs:
12+
activesupport (8.1.3)
13+
base64
14+
bigdecimal
15+
concurrent-ruby (~> 1.0, >= 1.3.1)
16+
connection_pool (>= 2.2.5)
17+
drb
18+
i18n (>= 1.6, < 2)
19+
json
20+
logger (>= 1.4.2)
21+
minitest (>= 5.1)
22+
securerandom (>= 0.3)
23+
tzinfo (~> 2.0, >= 2.0.5)
24+
uri (>= 0.13.1)
1225
addressable (2.8.9)
1326
public_suffix (>= 2.0.2, < 8.0)
1427
ast (2.4.3)
28+
base64 (0.3.0)
1529
bigdecimal (4.0.1)
30+
concurrent-ruby (1.3.6)
31+
connection_pool (3.0.2)
32+
csv (3.3.5)
1633
drb (2.2.3)
34+
ffi (1.17.4)
35+
ffi (1.17.4-aarch64-linux-gnu)
36+
ffi (1.17.4-aarch64-linux-musl)
37+
ffi (1.17.4-arm64-darwin)
38+
ffi (1.17.4-x86-linux-gnu)
39+
ffi (1.17.4-x86-linux-musl)
40+
ffi (1.17.4-x86_64-darwin)
41+
ffi (1.17.4-x86_64-linux-gnu)
42+
ffi (1.17.4-x86_64-linux-musl)
43+
fileutils (1.8.0)
1744
google-protobuf (4.34.1)
1845
bigdecimal
1946
rake (~> 13.3)
@@ -71,18 +98,25 @@ GEM
7198
google-protobuf (>= 3.25, < 5.0)
7299
googleapis-common-protos-types (~> 1.0)
73100
grpc-tools (1.80.0)
101+
i18n (1.14.8)
102+
concurrent-ruby (~> 1.0)
74103
json (2.19.2)
75104
json-schema (6.2.0)
76105
addressable (~> 2.8)
77106
bigdecimal (>= 3.1, < 5)
78107
language_server-protocol (3.17.0.5)
79108
lint_roller (1.1.0)
109+
listen (3.10.0)
110+
logger
111+
rb-fsevent (~> 0.10, >= 0.10.3)
112+
rb-inotify (~> 0.9, >= 0.9.10)
80113
logger (1.7.0)
81114
mcp (0.9.0)
82115
json-schema (>= 4.1)
83116
minitest (6.0.5)
84117
drb (~> 2.0)
85118
prism (~> 1.5)
119+
mutex_m (0.3.0)
86120
parallel (1.27.0)
87121
parser (3.3.10.2)
88122
ast (~> 2.4.1)
@@ -92,6 +126,12 @@ GEM
92126
racc (1.8.1)
93127
rainbow (3.1.1)
94128
rake (13.3.1)
129+
rb-fsevent (0.11.2)
130+
rb-inotify (0.11.1)
131+
ffi (~> 1.0)
132+
rbs (3.10.4)
133+
logger
134+
tsort
95135
regexp_parser (2.11.3)
96136
rubocop (1.85.1)
97137
json (~> 2.3)
@@ -109,6 +149,25 @@ GEM
109149
parser (>= 3.3.7.2)
110150
prism (~> 1.7)
111151
ruby-progressbar (1.13.0)
152+
securerandom (0.4.1)
153+
steep (1.10.0)
154+
activesupport (>= 5.1)
155+
concurrent-ruby (>= 1.1.10)
156+
csv (>= 3.0.9)
157+
fileutils (>= 1.1.0)
158+
json (>= 2.1.0)
159+
language_server-protocol (>= 3.17.0.4, < 4.0)
160+
listen (~> 3.0)
161+
logger (>= 1.3.0)
162+
mutex_m (>= 0.3.0)
163+
parser (>= 3.1)
164+
rainbow (>= 2.2.2, < 4.0)
165+
rbs (~> 3.9)
166+
securerandom (>= 0.1)
167+
strscan (>= 1.0.0)
168+
terminal-table (>= 2, < 5)
169+
uri (>= 0.12.0)
170+
strscan (3.1.8)
112171
temporalio (1.3.0)
113172
google-protobuf (>= 3.25.0)
114173
logger
@@ -130,9 +189,15 @@ GEM
130189
temporalio (1.3.0-x86_64-linux-musl)
131190
google-protobuf (>= 3.25.0)
132191
logger
192+
terminal-table (4.0.0)
193+
unicode-display_width (>= 1.1.1, < 4)
194+
tsort (0.2.0)
195+
tzinfo (2.0.6)
196+
concurrent-ruby (~> 1.0)
133197
unicode-display_width (3.2.0)
134198
unicode-emoji (~> 4.1)
135199
unicode-emoji (4.2.0)
200+
uri (1.1.1)
136201

137202
PLATFORMS
138203
aarch64-linux
@@ -151,13 +216,30 @@ DEPENDENCIES
151216
grpc-tools (~> 1.80)
152217
minitest
153218
omes!
219+
rbs (~> 3.10)
154220
rubocop (~> 1.0)
221+
steep (~> 1.10)
155222

156223
CHECKSUMS
224+
activesupport (8.1.3) sha256=21a5e0dfbd4c3ddd9e1317ec6a4d782fa226e7867dc70b0743acda81a1dca20e
157225
addressable (2.8.9) sha256=cc154fcbe689711808a43601dee7b980238ce54368d23e127421753e46895485
158226
ast (2.4.3) sha256=954615157c1d6a382bc27d690d973195e79db7f55e9765ac7c481c60bdb4d383
227+
base64 (0.3.0) sha256=27337aeabad6ffae05c265c450490628ef3ebd4b67be58257393227588f5a97b
159228
bigdecimal (4.0.1) sha256=8b07d3d065a9f921c80ceaea7c9d4ae596697295b584c296fe599dd0ad01c4a7
229+
concurrent-ruby (1.3.6) sha256=6b56837e1e7e5292f9864f34b69c5a2cbc75c0cf5338f1ce9903d10fa762d5ab
230+
connection_pool (3.0.2) sha256=33fff5ba71a12d2aa26cb72b1db8bba2a1a01823559fb01d29eb74c286e62e0a
231+
csv (3.3.5) sha256=6e5134ac3383ef728b7f02725d9872934f523cb40b961479f69cf3afa6c8e73f
160232
drb (2.2.3) sha256=0b00d6fdb50995fe4a45dea13663493c841112e4068656854646f418fda13373
233+
ffi (1.17.4) sha256=bcd1642e06f0d16fc9e09ac6d49c3a7298b9789bcb58127302f934e437d60acf
234+
ffi (1.17.4-aarch64-linux-gnu) sha256=b208f06f91ffd8f5e1193da3cae3d2ccfc27fc36fba577baf698d26d91c080df
235+
ffi (1.17.4-aarch64-linux-musl) sha256=9286b7a615f2676245283aef0a0a3b475ae3aae2bb5448baace630bb77b91f39
236+
ffi (1.17.4-arm64-darwin) sha256=19071aaf1419251b0a46852abf960e77330a3b334d13a4ab51d58b31a937001b
237+
ffi (1.17.4-x86-linux-gnu) sha256=38e150df5f4ca555e25beca4090823ae09657bceded154e3c52f8631c1ed72cf
238+
ffi (1.17.4-x86-linux-musl) sha256=fbeec0fc7c795bcf86f623bb18d31ea1820f7bd580e1703a3d3740d527437809
239+
ffi (1.17.4-x86_64-darwin) sha256=aa70390523cf3235096cf64962b709b4cfbd5c082a2cb2ae714eb0fe2ccda496
240+
ffi (1.17.4-x86_64-linux-gnu) sha256=9d3db14c2eae074b382fa9c083fe95aec6e0a1451da249eab096c34002bc752d
241+
ffi (1.17.4-x86_64-linux-musl) sha256=3fdf9888483de005f8ef8d1cf2d3b20d86626af206cbf780f6a6a12439a9c49e
242+
fileutils (1.8.0) sha256=8c6b1df54e2540bdb2f39258f08af78853aa70bad52b4d394bbc6424593c6e02
161243
google-protobuf (4.34.1) sha256=347181542b8d659c60f028fa3791c9cccce651a91ad27782dbc5c5e374796cdc
162244
google-protobuf (4.34.1-aarch64-linux-gnu) sha256=f9c07607dc139c895f2792a7740fcd01cd94d4d7b0e0a939045b50d7999f0b1d
163245
google-protobuf (4.34.1-aarch64-linux-musl) sha256=db58e5a4a492b43c6614486aea31b7fb86955b175d1d48f28ebf388f058d78a9
@@ -178,13 +260,16 @@ CHECKSUMS
178260
grpc (1.80.0-x86_64-linux-gnu) sha256=25ba8beb5438152fb60656161dc729c1258c6963ec568361f601e19b2fb7ac23
179261
grpc (1.80.0-x86_64-linux-musl) sha256=15a62e816c690bece9f5fd320a4b61aa735a2390daa8141596672a6e820ff342
180262
grpc-tools (1.80.0) sha256=49076fbc7b34556365694202ed7ffd1e959e68ba8c339e99b437ba2a985a2cf2
263+
i18n (1.14.8) sha256=285778639134865c5e0f6269e0b818256017e8cde89993fdfcbfb64d088824a5
181264
json (2.19.2) sha256=e7e1bd318b2c37c4ceee2444841c86539bc462e81f40d134cf97826cb14e83cf
182265
json-schema (6.2.0) sha256=e8bff46ed845a22c1ab2bd0d7eccf831c01fe23bb3920caa4c74db4306813666
183266
language_server-protocol (3.17.0.5) sha256=fd1e39a51a28bf3eec959379985a72e296e9f9acfce46f6a79d31ca8760803cc
184267
lint_roller (1.1.0) sha256=2c0c845b632a7d172cb849cc90c1bce937a28c5c8ccccb50dfd46a485003cc87
268+
listen (3.10.0) sha256=c6e182db62143aeccc2e1960033bebe7445309c7272061979bb098d03760c9d2
185269
logger (1.7.0) sha256=196edec7cc44b66cfb40f9755ce11b392f21f7967696af15d274dde7edff0203
186270
mcp (0.9.0) sha256=a0a3737b0ac9df0772f4ef7e2b013c260ddbcf217a5d50a66bff0baeddf03e47
187271
minitest (6.0.5) sha256=f007d7246bf4feea549502842cd7c6aba8851cdc9c90ba06de9c476c0d01155c
272+
mutex_m (0.3.0) sha256=cfcb04ac16b69c4813777022fdceda24e9f798e48092a2b817eb4c0a782b0751
188273
omes (0.1.0)
189274
parallel (1.27.0) sha256=4ac151e1806b755fb4e2dc2332cbf0e54f2e24ba821ff2d3dcf86bf6dc4ae130
190275
parser (3.3.10.2) sha256=6f60c84aa4bdcedb6d1a2434b738fe8a8136807b6adc8f7f53b97da9bc4e9357
@@ -193,19 +278,29 @@ CHECKSUMS
193278
racc (1.8.1) sha256=4a7f6929691dbec8b5209a0b373bc2614882b55fc5d2e447a21aaa691303d62f
194279
rainbow (3.1.1) sha256=039491aa3a89f42efa1d6dec2fc4e62ede96eb6acd95e52f1ad581182b79bc6a
195280
rake (13.3.1) sha256=8c9e89d09f66a26a01264e7e3480ec0607f0c497a861ef16063604b1b08eb19c
281+
rb-fsevent (0.11.2) sha256=43900b972e7301d6570f64b850a5aa67833ee7d87b458ee92805d56b7318aefe
282+
rb-inotify (0.11.1) sha256=a0a700441239b0ff18eb65e3866236cd78613d6b9f78fea1f9ac47a85e47be6e
283+
rbs (3.10.4) sha256=b17d7c4be4bb31a11a3b529830f0aa206a807ca42f2e7921a3027dfc6b7e5ce8
196284
regexp_parser (2.11.3) sha256=ca13f381a173b7a93450e53459075c9b76a10433caadcb2f1180f2c741fc55a4
197285
rubocop (1.85.1) sha256=3dbcf9e961baa4c376eeeb2a03913dca5e3987033b04d38fa538aa1e7406cc77
198286
rubocop-ast (1.49.1) sha256=4412f3ee70f6fe4546cc489548e0f6fcf76cafcfa80fa03af67098ffed755035
199287
ruby-progressbar (1.13.0) sha256=80fc9c47a9b640d6834e0dc7b3c94c9df37f08cb072b7761e4a71e22cff29b33
288+
securerandom (0.4.1) sha256=cc5193d414a4341b6e225f0cb4446aceca8e50d5e1888743fac16987638ea0b1
289+
steep (1.10.0) sha256=1b295b55f9aaff1b8d3ee42453ee55bc2a1078fda0268f288edb2dc014f4d7d1
290+
strscan (3.1.8) sha256=aae2db611a225559f21ffbb71765c9a4e60fd262534a9ea84f4f11c7f32f679e
200291
temporalio (1.3.0) sha256=672260631f419d1ec01a2230cc6a72d665ef9d385c5d96351bc68f639dbdc704
201292
temporalio (1.3.0-aarch64-linux) sha256=1ec4230251bc1771455fa20f1d1e9006639f3da3657ce4d15d09e27970d5a248
202293
temporalio (1.3.0-aarch64-linux-musl) sha256=135a676e60ba8ee6f49c7fa793505fee7479b78a3c0b31298073845560a32aed
203294
temporalio (1.3.0-arm64-darwin) sha256=22c1f0fbbbfacf7c61ddd0d75e9ffc86590ba39ccbabb87f670821c9152fff7a
204295
temporalio (1.3.0-x86_64-darwin) sha256=f2a4b35302564b6d2969a1daf6b2d7f2b86c9d1a50c59d1620b327b2af38c124
205296
temporalio (1.3.0-x86_64-linux) sha256=5122f3c2bd2b540565fc9ec4e2083401c00a7056c8408cd9922ebe570b366eef
206297
temporalio (1.3.0-x86_64-linux-musl) sha256=0b9c19a94d6703155618d02facf46481467bde1cdcd86ccb6b4f38896d847560
298+
terminal-table (4.0.0) sha256=f504793203f8251b2ea7c7068333053f0beeea26093ec9962e62ea79f94301d2
299+
tsort (0.2.0) sha256=9650a793f6859a43b6641671278f79cfead60ac714148aabe4e3f0060480089f
300+
tzinfo (2.0.6) sha256=8daf828cc77bcf7d63b0e3bdb6caa47e2272dcfaf4fbfe46f8c3a9df087a829b
207301
unicode-display_width (3.2.0) sha256=0cdd96b5681a5949cdbc2c55e7b420facae74c4aaf9a9815eee1087cb1853c42
208302
unicode-emoji (4.2.0) sha256=519e69150f75652e40bf736106cfbc8f0f73aa3fb6a65afe62fefa7f80b0f80f
303+
uri (1.1.1) sha256=379fa58d27ffb1387eaada68c749d1426738bd0f654d812fcc07e7568f5c57c6
209304

210305
BUNDLED WITH
211-
4.0.8
306+
4.0.10

workers/ruby/Steepfile

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
# frozen_string_literal: true
2+
3+
D = Steep::Diagnostic
4+
5+
common_diagnostics = {
6+
D::Ruby::UnknownConstant => :information,
7+
D::Ruby::UnannotatedEmptyCollection => :information,
8+
D::Ruby::UndeclaredMethodDefinition => :information
9+
}
10+
11+
target :harness do
12+
signature 'sig'
13+
check 'projects/harness.rb'
14+
check 'projects/harness'
15+
ignore 'projects/harness/api', 'projects/harness/tests'
16+
library 'json', 'logger', 'optparse', 'time'
17+
configure_code_diagnostics do |hash|
18+
hash.update(common_diagnostics)
19+
end
20+
end

workers/ruby/omes.gemspec

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@ Gem::Specification.new do |s|
77
s.license = 'MIT'
88
s.files = Dir['**/*.rb']
99
s.require_paths = ['.']
10-
s.add_dependency 'grpc', '~> 1.80'
1110
s.add_dependency 'google-protobuf', '~> 4.0'
11+
s.add_dependency 'grpc', '~> 1.80'
1212
s.add_dependency 'temporalio', '~> 1.3'
1313
s.metadata['rubygems_mfa_required'] = 'true'
1414
end

workers/ruby/projects/harness/client.rb

Lines changed: 9 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -4,28 +4,17 @@
44
require 'temporalio/runtime'
55

66
module Harness
7-
ClientConfig = Struct.new(
7+
ClientConfig = Data.define(
88
:target_host,
99
:namespace,
1010
:api_key,
1111
:tls,
12-
:runtime,
13-
keyword_init: true
12+
:runtime
1413
)
1514

1615
module ClientHelpers
1716
module_function
1817

19-
def default_client_factory(config)
20-
Temporalio::Client.connect(
21-
config.target_host,
22-
config.namespace,
23-
api_key: config.api_key,
24-
tls: config.tls,
25-
runtime: config.runtime
26-
)
27-
end
28-
2918
def build_client_config(
3019
server_address:,
3120
namespace:,
@@ -107,6 +96,12 @@ def build_runtime(prom_listen_address)
10796
end
10897

10998
def self.default_client_factory(config)
110-
ClientHelpers.default_client_factory(config)
99+
Temporalio::Client.connect(
100+
config.target_host,
101+
config.namespace,
102+
api_key: config.api_key,
103+
tls: config.tls,
104+
runtime: config.runtime
105+
)
111106
end
112107
end

workers/ruby/projects/harness/helpers.rb

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,7 @@ module Helpers
1212
'ERROR' => Logger::ERROR,
1313
'WARN' => Logger::WARN,
1414
'INFO' => Logger::INFO,
15-
'DEBUG' => Logger::DEBUG,
16-
'NOTSET' => Logger::DEBUG
15+
'DEBUG' => Logger::DEBUG
1716
}.freeze
1817

1918
module_function

workers/ruby/projects/harness/main.rb

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,10 @@ def initialize(worker:, client_factory:, project: nil)
1616

1717
def self.run(app, argv = ARGV)
1818
argv = Array(argv).dup
19-
if argv.empty? || argv.first == 'worker'
20-
worker_argv = argv.first == 'worker' ? argv.drop(1) : argv
21-
WorkerCLI.run_cli(app.worker, app.client_factory, worker_argv)
19+
if argv.first == 'worker'
20+
WorkerCLI.run_cli(app.worker, app.client_factory, argv.drop(1))
2221
elsif argv.first == 'project-server'
23-
if app.project.nil?
24-
raise SystemExit, 'Wanted project-server but no project handlers registered for this app'
25-
end
22+
raise SystemExit, 'Wanted project-server but no project handlers registered for this app' if app.project.nil?
2623

2724
ProjectCLI.run_cli(app.project, app.client_factory, argv.drop(1))
2825
else

0 commit comments

Comments
 (0)