odysseus-cli 0.9.0 → 0.10.1

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: 1a6fb5fd56accf0b7051db85619b6e7c9303b9a46d04466e5c77e863cce23b2b
4
- data.tar.gz: e8eca22a11595c8febbe6649563c8c7bcfd79075c4e12c8c5192c0a39db53804
3
+ metadata.gz: c0eb25b1702c32b92d66cde114b8b031fa31b551c52e74b4cfb99d6bfe07c463
4
+ data.tar.gz: fc97e09aea1e18234e89a4b439a06180ae11793265d2df5e3f075eed5b031d32
5
5
  SHA512:
6
- metadata.gz: a32d16273041d33d8edd3c9f7a58c43e174c1327f6528756531db4f90b50d02841df5a95f5fb56f9b0a38f8742f13d617013f45564e94605e06a30bb4ec64177
7
- data.tar.gz: d2859b817e910833e116a135a775d7603102db90bb4ecbe6841c3dc1085f245e61060e09f78de3723629ace393e09ee40163e86520b28dab43a1cd3f5257f76a
6
+ metadata.gz: a8054d607b4d1bd6878c9e3f3f880c2c35a70cb8ee9df9c16db05c4f310d1d21dadff4410504e7f1e31fb6cfdac670cdc688db27ee7694d356b99a0a0c3066ad
7
+ data.tar.gz: 3693ec2a1e91cd7b7f0a4c71b0dfe265fe9f69cebb0c9fa14fbd366b7a8472e9cda7b0ef03dfa85590351490712730602d4dbf84568361b9fe5df357dfb8f15a
data/CHANGELOG.md CHANGED
@@ -7,6 +7,22 @@ gem artifacts, so they are summaries rather than contemporaneous notes.
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.10.1] - 2026-09-18
11
+
12
+ ### Fixed
13
+
14
+ - `deploy --build` no longer dies with `incompatible character encodings:
15
+ UTF-8 and BINARY` after the build has already succeeded. The streamed-output
16
+ reader accumulated chunks from `IO#read_nonblock`, which returns ASCII-8BIT,
17
+ into a UTF-8 string literal -- which silently takes the chunk's encoding on
18
+ the first append. Any byte above 0x7F in the build or push output then
19
+ reached the spinner's UTF-8 format string as binary and raised there. Bytes
20
+ are now accumulated as binary and decoded once a line is complete, so a read
21
+ boundary falling inside a multi-byte character cannot mangle it either.
22
+ Reported from a real deploy that failed while pushing to a host.
23
+
24
+ ## [0.10.0] - 2026-08-28
25
+
10
26
  ### Changed
11
27
 
12
28
  - `cleanup`'s documentation now describes what the command does. It was
@@ -203,7 +203,13 @@ module Odysseus
203
203
  end
204
204
 
205
205
  frame_idx = 0
206
- buf = ''
206
+ # Binary on purpose. IO#read_nonblock below returns ASCII-8BIT, and a
207
+ # UTF-8 literal here would silently take that encoding on the first
208
+ # append -- then any byte above 0x7F reaching the spinner's UTF-8
209
+ # format string raises Encoding::CompatibilityError, after the build it
210
+ # was reporting on has already succeeded. Accumulate bytes; decode a
211
+ # line once it is complete.
212
+ buf = String.new(encoding: Encoding::BINARY)
207
213
 
208
214
  loop do
209
215
  # Non-blocking read from pipe
@@ -218,7 +224,12 @@ module Odysseus
218
224
 
219
225
  # Process complete lines
220
226
  while (nl = buf.index("\n"))
221
- line = buf.slice!(0..nl).strip
227
+ # Decode here rather than per chunk: a read boundary can fall
228
+ # inside a multi-byte character, and scrubbing a half-read chunk
229
+ # would destroy it. By the time a newline is in the buffer, every
230
+ # byte of that line has arrived, so scrub can only be removing
231
+ # genuinely invalid sequences.
232
+ line = buf.slice!(0..nl).force_encoding(Encoding::UTF_8).scrub('').strip
222
233
  next if line.empty?
223
234
 
224
235
  line = clean_line(line)
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Odysseus
4
4
  module CLI
5
- VERSION = '0.9.0'
5
+ VERSION = '0.10.1'
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: odysseus-cli
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.0
4
+ version: 0.10.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Thomas
@@ -15,14 +15,14 @@ dependencies:
15
15
  requirements:
16
16
  - - "~>"
17
17
  - !ruby/object:Gem::Version
18
- version: 0.9.0
18
+ version: 0.10.0
19
19
  type: :runtime
20
20
  prerelease: false
21
21
  version_requirements: !ruby/object:Gem::Requirement
22
22
  requirements:
23
23
  - - "~>"
24
24
  - !ruby/object:Gem::Version
25
- version: 0.9.0
25
+ version: 0.10.0
26
26
  description: Command-line interface for deploying with Odysseus
27
27
  email:
28
28
  - thomas@imfiny.com
@@ -64,7 +64,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
64
64
  - !ruby/object:Gem::Version
65
65
  version: '0'
66
66
  requirements: []
67
- rubygems_version: 4.0.16
67
+ rubygems_version: 4.0.19
68
68
  specification_version: 4
69
69
  summary: CLI for Odysseus deployment tool
70
70
  test_files: []