selective-ruby-core 0.1.8-x86_64-darwin → 0.1.9-x86_64-darwin

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 164b76eb2ba7ea0f2288f2e04caf54856493f60941a135dd5a482b044b8a34b2
4
- data.tar.gz: c0c7ed6a8abf72672db0e24a89027a2b6a4aaf1ed01e3e41d84f81eb2be91179
3
+ metadata.gz: 2746663da0fe07784b895d8f97f656f4c74840807a72232c349a0d00f1b486f2
4
+ data.tar.gz: ba160431dd6038984e7ebcff4d7adb1f2f6f6367d3048797a89ab6444d91886e
5
5
  SHA512:
6
- metadata.gz: c316b0ba6f024fda6ead228365204679b26f107889982266f4829ed5293831b9630686e547777840864ef1f74bad58192317537c766e9f69e3e9efbda998f53e
7
- data.tar.gz: bb52780b100195417d93a2020ea459b695200517d35830790f22516c719255c09cd26cc3cae73fbb913cbaf919d16fe1e7ffd6fa5dac8aba41089eab8a373fbb
6
+ metadata.gz: 94d96358799b56b9331d2889dad207e39e75c696005d9539c33960ec816be311060be385fb3eab4dab62c08157fabcadd7345280a1c72cc26eae973d36cc3ddf
7
+ data.tar.gz: e9755f904263b71c6550fc7eaf8f45fcd736645b73c32113fc7a16d4d21adebcce11e1d9d497e8df5184f69ab3c4496a0cacbb5452f260f0a1ed559fbd6ec88b
data/lib/bin/build_env.sh CHANGED
@@ -33,6 +33,8 @@ fi
33
33
  # Output the JSON
34
34
  cat <<EOF
35
35
  {
36
+ "api_key": "$SELECTIVE_API_KEY",
37
+ "host": "${SELECTIVE_HOST:-wss://app.selective.ci}",
36
38
  "platform": "$platform",
37
39
  "branch": "$branch",
38
40
  "pr_title": "$SELECTIVE_PR_TITLE",
@@ -9,6 +9,14 @@ module Selective
9
9
  include Helper
10
10
  @@selective_suppress_reporting = false
11
11
 
12
+ REQUIRED_CONFIGURATION = {
13
+ "host" => "SELECTIVE_HOST",
14
+ "api_key" => "SELECTIVE_API_KEY",
15
+ "platform" => "SELECTIVE_PLATFORM",
16
+ "run_id" => "SELECTIVE_RUN_ID",
17
+ "branch" => "SELECTIVE_BRANCH"
18
+ }.freeze
19
+
12
20
  def initialize(runner, debug: false, log: false)
13
21
  @debug = debug
14
22
  @runner = runner
@@ -101,12 +109,8 @@ module Selective
101
109
 
102
110
  def transport_url(reconnect: false)
103
111
  @transport_url ||= begin
104
- api_key = ENV.fetch("SELECTIVE_API_KEY")
105
- host = ENV.fetch("SELECTIVE_HOST", "wss://app.selective.ci")
106
-
107
- # Validate that host is a valid websocket url(starts with ws:// or wss://)
108
- raise "Invalid host: #{host}" unless host.match?(/^wss?:\/\//)
109
-
112
+ api_key = build_env.delete("api_key")
113
+ host = build_env.delete("host")
110
114
  run_id = build_env.delete("run_id")
111
115
  run_attempt = build_env.delete("run_attempt")
112
116
  run_attempt = SecureRandom.uuid if run_attempt.nil? || run_attempt.empty?
@@ -134,7 +138,20 @@ module Selective
134
138
  def build_env
135
139
  @build_env ||= begin
136
140
  result = `#{File.join(ROOT_GEM_PATH, "lib", "bin", "build_env.sh")}`
137
- JSON.parse(result)
141
+ JSON.parse(result).tap do |env|
142
+ validate_build_env(env)
143
+ end
144
+ end
145
+ end
146
+
147
+ def validate_build_env(env)
148
+ missing = REQUIRED_CONFIGURATION.each_with_object([]) do |(key, env_var), arry|
149
+ arry << env_var if env[key].nil? || env[key].empty?
150
+ end
151
+
152
+ with_error_handling do
153
+ raise "Missing required environment variables: #{missing.join(", ")}" unless missing.empty?
154
+ raise "Invalid host: #{env['host']}" unless env['host'].match?(/^wss?:\/\//)
138
155
  end
139
156
  end
140
157
 
@@ -220,9 +237,11 @@ module Selective
220
237
  end
221
238
 
222
239
  def handle_command(data)
223
- send("handle_#{data[:command]}", data)
224
- rescue NoMethodError
225
- raise "Unknown command received: #{data[:command]}" if debug?
240
+ if respond_to? "handle_#{data[:command]}", true
241
+ send("handle_#{data[:command]}", data)
242
+ else
243
+ raise "Unknown command received: #{data[:command]}" if debug?
244
+ end
226
245
  end
227
246
 
228
247
  def handle_print_notice(data)
@@ -262,7 +281,7 @@ module Selective
262
281
  def handle_close(data)
263
282
  exit_status = data[:exit_status]
264
283
  self.class.restore_reporting!
265
- runner.finish unless exit_status.is_a?(Integer)
284
+ with_error_handling { runner.finish } unless exit_status.is_a?(Integer)
266
285
 
267
286
  kill_transport
268
287
  pipe.delete_pipes
@@ -3,7 +3,7 @@
3
3
  module Selective
4
4
  module Ruby
5
5
  module Core
6
- VERSION = "0.1.8"
6
+ VERSION = "0.1.9"
7
7
  end
8
8
  end
9
9
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: selective-ruby-core
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.8
4
+ version: 0.1.9
5
5
  platform: x86_64-darwin
6
6
  authors:
7
7
  - Benjamin Wood
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: exe
11
11
  cert_chain: []
12
- date: 2024-01-05 00:00:00.000000000 Z
12
+ date: 2024-01-12 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: zeitwerk