legionio 1.6.0 → 1.6.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 +4 -4
- data/CHANGELOG.md +8 -0
- data/legionio.gemspec +2 -2
- data/lib/legion/cli/update_command.rb +40 -14
- data/lib/legion/version.rb +1 -1
- metadata +5 -5
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 97707f0bdbc4ad1ce6b714bcb703b6d53725210b6565d700e8677db9912a9ab8
|
|
4
|
+
data.tar.gz: 3e2171d5dd1de801ed929a0581e4d3920845be921a528147c4d6e9ddd122e2de
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 1f9f67128de7fa3eac1cff947d2275fdc595f5bec7150c218af10cf08b4245abc455b48324492104c92da9f44e31633792d513eddcb1b6316313381eace45c00
|
|
7
|
+
data.tar.gz: 7b5d3952a503ce07268076a20eecc86828ef5d7b53d87614c2bb874fbe6b55398e740f3bd8ab448f7047130917612bb2b3a18dcb2c116699c32663ab80862647
|
data/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
# Legion Changelog
|
|
2
2
|
|
|
3
|
+
## [1.6.1] - 2026-03-26
|
|
4
|
+
|
|
5
|
+
### Fixed
|
|
6
|
+
- `legionio update` now shows "(remote check failed)" instead of "(already latest)" when rubygems.org fetch fails
|
|
7
|
+
- Add HTTP timeouts (5s connect, 10s read) to remote version checks to prevent thread pool exhaustion
|
|
8
|
+
- Install failures now show "(install may have failed)" instead of "(already latest)"
|
|
9
|
+
- Distinct statuses: current, check_failed, installed, failed (was single ambiguous "updated" for all)
|
|
10
|
+
|
|
3
11
|
## [1.6.0] - 2026-03-26
|
|
4
12
|
|
|
5
13
|
### Added
|
data/legionio.gemspec
CHANGED
|
@@ -60,8 +60,8 @@ Gem::Specification.new do |spec|
|
|
|
60
60
|
spec.add_dependency 'legion-settings', '>= 1.3.19'
|
|
61
61
|
spec.add_dependency 'legion-transport', '>= 1.4.0'
|
|
62
62
|
|
|
63
|
-
spec.add_dependency 'legion-apollo', '>= 0.
|
|
64
|
-
spec.add_dependency 'legion-gaia', '>= 0.9.
|
|
63
|
+
spec.add_dependency 'legion-apollo', '>= 0.3.1'
|
|
64
|
+
spec.add_dependency 'legion-gaia', '>= 0.9.26'
|
|
65
65
|
spec.add_dependency 'legion-llm', '>= 0.5.8'
|
|
66
66
|
spec.add_dependency 'legion-tty', '>= 0.4.35'
|
|
67
67
|
spec.add_dependency 'lex-node'
|
|
@@ -89,24 +89,38 @@ module Legion
|
|
|
89
89
|
remote && local && Gem::Version.new(remote) > Gem::Version.new(local)
|
|
90
90
|
end
|
|
91
91
|
|
|
92
|
-
if dry_run
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
92
|
+
return dry_run_results(gem_names, local_versions, remote_versions, outdated) if dry_run
|
|
93
|
+
|
|
94
|
+
return current_results(gem_names, remote_versions) if outdated.empty?
|
|
95
|
+
|
|
96
|
+
install_results(gem_names, gem_bin, remote_versions, outdated)
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
def dry_run_results(gem_names, local_versions, remote_versions, outdated)
|
|
100
|
+
gem_names.map do |name|
|
|
101
|
+
remote = remote_versions[name]
|
|
102
|
+
status = if outdated.include?(name) then 'available'
|
|
103
|
+
elsif remote then 'current'
|
|
104
|
+
else 'check_failed'
|
|
105
|
+
end
|
|
106
|
+
{ name: name, from: local_versions[name], to: remote, status: status }
|
|
99
107
|
end
|
|
108
|
+
end
|
|
100
109
|
|
|
101
|
-
|
|
110
|
+
def current_results(gem_names, remote_versions)
|
|
111
|
+
gem_names.map do |name|
|
|
112
|
+
{ name: name, status: remote_versions[name] ? 'current' : 'check_failed', remote: remote_versions[name] }
|
|
113
|
+
end
|
|
114
|
+
end
|
|
102
115
|
|
|
116
|
+
def install_results(gem_names, gem_bin, remote_versions, outdated)
|
|
103
117
|
output = `#{gem_bin} install #{outdated.join(' ')} --no-document 2>&1`
|
|
104
118
|
success = $CHILD_STATUS.success?
|
|
105
119
|
gem_names.map do |name|
|
|
106
120
|
if outdated.include?(name)
|
|
107
|
-
{ name: name, status: success ? '
|
|
121
|
+
{ name: name, status: success ? 'installed' : 'failed', remote: remote_versions[name], output: output.strip }
|
|
108
122
|
else
|
|
109
|
-
{ name: name, status: '
|
|
123
|
+
{ name: name, status: remote_versions[name] ? 'current' : 'check_failed', remote: remote_versions[name] }
|
|
110
124
|
end
|
|
111
125
|
end
|
|
112
126
|
end
|
|
@@ -134,7 +148,11 @@ module Legion
|
|
|
134
148
|
|
|
135
149
|
def fetch_remote_version(name)
|
|
136
150
|
uri = URI("https://rubygems.org/api/v1/versions/#{name}/latest.json")
|
|
137
|
-
|
|
151
|
+
http = Net::HTTP.new(uri.host, uri.port)
|
|
152
|
+
http.use_ssl = true
|
|
153
|
+
http.open_timeout = 5
|
|
154
|
+
http.read_timeout = 10
|
|
155
|
+
response = http.request(Net::HTTP::Get.new(uri))
|
|
138
156
|
return nil unless response.is_a?(Net::HTTPSuccess)
|
|
139
157
|
|
|
140
158
|
data = ::JSON.parse(response.body)
|
|
@@ -144,6 +162,7 @@ module Legion
|
|
|
144
162
|
def display_results(out, results, before, after)
|
|
145
163
|
updated = []
|
|
146
164
|
failed = []
|
|
165
|
+
check_failures = 0
|
|
147
166
|
|
|
148
167
|
results.each do |r|
|
|
149
168
|
name = r[:name]
|
|
@@ -152,12 +171,17 @@ module Legion
|
|
|
152
171
|
puts " #{name}: #{r[:from]} -> #{r[:to]}"
|
|
153
172
|
updated << name
|
|
154
173
|
when 'current'
|
|
155
|
-
|
|
156
|
-
|
|
174
|
+
local = r[:from] || before[name]
|
|
175
|
+
puts " #{name}: #{local || '?'} (already latest)"
|
|
176
|
+
when 'check_failed'
|
|
177
|
+
puts " #{name}: #{before[name]} (remote check failed)"
|
|
178
|
+
check_failures += 1
|
|
179
|
+
when 'installed'
|
|
157
180
|
old_v = before[name]
|
|
158
181
|
new_v = after[name]
|
|
159
182
|
if old_v == new_v
|
|
160
|
-
|
|
183
|
+
out.error(" #{name}: #{old_v} (install may have failed)")
|
|
184
|
+
failed << name
|
|
161
185
|
else
|
|
162
186
|
out.success(" #{name}: #{old_v} -> #{new_v}")
|
|
163
187
|
updated << name
|
|
@@ -171,6 +195,8 @@ module Legion
|
|
|
171
195
|
out.spacer
|
|
172
196
|
if updated.any?
|
|
173
197
|
out.success("Updated #{updated.size} gem(s)")
|
|
198
|
+
elsif check_failures.positive?
|
|
199
|
+
puts "#{check_failures} gem(s) could not be checked - retry or use --dry-run for details"
|
|
174
200
|
else
|
|
175
201
|
puts 'All gems are up to date'
|
|
176
202
|
end
|
data/lib/legion/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: legionio
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.6.
|
|
4
|
+
version: 1.6.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Esity
|
|
@@ -323,28 +323,28 @@ dependencies:
|
|
|
323
323
|
requirements:
|
|
324
324
|
- - ">="
|
|
325
325
|
- !ruby/object:Gem::Version
|
|
326
|
-
version: 0.
|
|
326
|
+
version: 0.3.1
|
|
327
327
|
type: :runtime
|
|
328
328
|
prerelease: false
|
|
329
329
|
version_requirements: !ruby/object:Gem::Requirement
|
|
330
330
|
requirements:
|
|
331
331
|
- - ">="
|
|
332
332
|
- !ruby/object:Gem::Version
|
|
333
|
-
version: 0.
|
|
333
|
+
version: 0.3.1
|
|
334
334
|
- !ruby/object:Gem::Dependency
|
|
335
335
|
name: legion-gaia
|
|
336
336
|
requirement: !ruby/object:Gem::Requirement
|
|
337
337
|
requirements:
|
|
338
338
|
- - ">="
|
|
339
339
|
- !ruby/object:Gem::Version
|
|
340
|
-
version: 0.9.
|
|
340
|
+
version: 0.9.26
|
|
341
341
|
type: :runtime
|
|
342
342
|
prerelease: false
|
|
343
343
|
version_requirements: !ruby/object:Gem::Requirement
|
|
344
344
|
requirements:
|
|
345
345
|
- - ">="
|
|
346
346
|
- !ruby/object:Gem::Version
|
|
347
|
-
version: 0.9.
|
|
347
|
+
version: 0.9.26
|
|
348
348
|
- !ruby/object:Gem::Dependency
|
|
349
349
|
name: legion-llm
|
|
350
350
|
requirement: !ruby/object:Gem::Requirement
|