lex-ssh 0.2.1 → 0.2.2
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 +6 -0
- data/CLAUDE.md +11 -5
- data/README.md +3 -9
- data/lex-ssh.gemspec +7 -0
- data/lib/legion/extensions/ssh/version.rb +1 -1
- metadata +99 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 4aa797adb400275ddb8a451f286c494ed341f5a66cc7d2a5d461c15d66af1410
|
|
4
|
+
data.tar.gz: 65ec05c0ef3bb0fe7644b4b92cf3181ed07438d86a8a0ceb53749c6fa725929e
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 959cef008590aa9aa3db7ae67be38697907c05e465eb9ea791d9bb67e84bece7f6aab9b51560a33fb8233cf7505be331dfe7f55903fc9b27b9bf742bc3c7c3b4
|
|
7
|
+
data.tar.gz: 4eb06fc14f2afea9794ae2430d3d2d0844eb8a52eb61eb2221bae6f0df7ae9209537ca3371356dff4ccba4cfe05c989297915fa861457840a0b066ed6addf978
|
data/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.2.2] - 2026-03-22
|
|
4
|
+
|
|
5
|
+
### Changed
|
|
6
|
+
- Add legion-logging, legion-settings, legion-json, legion-cache, legion-crypt, legion-data, and legion-transport as runtime dependencies
|
|
7
|
+
- Update spec_helper with real sub-gem helper stubs for Legion::Extensions::Helpers::Lex
|
|
8
|
+
|
|
3
9
|
## [0.2.1] - 2026-03-18
|
|
4
10
|
|
|
5
11
|
### Fixed
|
data/CLAUDE.md
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
|
|
9
9
|
Legion Extension that executes remote SSH commands and controls remote server state. Provides runners for running arbitrary commands on remote hosts and triggering reboot/shutdown via Net::SSH.
|
|
10
10
|
|
|
11
|
-
**Version**: 0.2.
|
|
11
|
+
**Version**: 0.2.1
|
|
12
12
|
**GitHub**: https://github.com/LegionIO/lex-ssh
|
|
13
13
|
**License**: MIT
|
|
14
14
|
|
|
@@ -32,7 +32,7 @@ Legion::Extensions::Ssh
|
|
|
32
32
|
| `lib/legion/extensions/ssh/runners/command.rb` | `run`, `run_multiple` (and `alias run_multiple run_mulitple` for typo compat) |
|
|
33
33
|
| `lib/legion/extensions/ssh/runners/state.rb` | `reboot(server:, user:, delay:)`, `shutdown(server:, user:, delay:)` |
|
|
34
34
|
| `lib/legion/extensions/ssh/helpers/connection.rb` | `session(server:, user:, **opts)` — Net::SSH.start wrapper |
|
|
35
|
-
| `lib/legion/extensions/ssh/client.rb` | Standalone `Client` class
|
|
35
|
+
| `lib/legion/extensions/ssh/client.rb` | Standalone `Client` class: `initialize(server:, user: 'root', **extra)` |
|
|
36
36
|
|
|
37
37
|
## Runner Methods
|
|
38
38
|
|
|
@@ -46,9 +46,14 @@ Legion::Extensions::Ssh
|
|
|
46
46
|
|
|
47
47
|
**Connection auth** (pass as task kwargs): `password:`, `key_data:`, `keys:`, `passphrase:`, `non_interactive:`, `timeout:` (default: 5s)
|
|
48
48
|
|
|
49
|
-
##
|
|
49
|
+
## Standalone Client
|
|
50
50
|
|
|
51
|
-
|
|
51
|
+
`Client.new(server:, user: 'root', **extra)` — stores opts and delegates `session` to `Helpers::Connection` with merged opts.
|
|
52
|
+
|
|
53
|
+
```ruby
|
|
54
|
+
client = Legion::Extensions::Ssh::Client.new(server: 'server.example.com', user: 'deploy', keys: ['~/.ssh/id_ed25519'])
|
|
55
|
+
result = client.run(command: 'uptime')
|
|
56
|
+
```
|
|
52
57
|
|
|
53
58
|
## Dependencies
|
|
54
59
|
|
|
@@ -57,10 +62,11 @@ Legion::Extensions::Ssh
|
|
|
57
62
|
| `net-ssh` (>= 7.0) | SSH client |
|
|
58
63
|
| `ed25519` | Ed25519 key support |
|
|
59
64
|
| `bcrypt_pbkdf` | Bcrypt key derivation (OpenSSH private key format) |
|
|
65
|
+
| `logger` | Explicit dependency for Ruby 4.0 compatibility (extracted from stdlib) |
|
|
60
66
|
|
|
61
67
|
## Development
|
|
62
68
|
|
|
63
|
-
9 specs total
|
|
69
|
+
9 specs total.
|
|
64
70
|
|
|
65
71
|
```bash
|
|
66
72
|
bundle install
|
data/README.md
CHANGED
|
@@ -52,26 +52,20 @@ Use `Legion::Extensions::Ssh::Client` outside the full LegionIO framework.
|
|
|
52
52
|
|
|
53
53
|
```ruby
|
|
54
54
|
require 'legion/extensions/ssh'
|
|
55
|
-
client = Legion::Extensions::Ssh::Client.new(
|
|
55
|
+
client = Legion::Extensions::Ssh::Client.new(server: 'server.example.com', user: 'deploy', keys: ['~/.ssh/id_ed25519'])
|
|
56
56
|
result = client.run(command: 'uptime')
|
|
57
57
|
```
|
|
58
58
|
|
|
59
|
+
Constructor: `Client.new(server:, user: 'root', **extra)`. Additional kwargs (`keys:`, `password:`, `timeout:`, etc.) are stored and passed through to Net::SSH on each call.
|
|
60
|
+
|
|
59
61
|
## Requirements
|
|
60
62
|
|
|
61
63
|
- Ruby >= 3.4
|
|
62
|
-
- [LegionIO](https://github.com/LegionIO/LegionIO) framework
|
|
63
64
|
- SSH server access
|
|
64
65
|
- `net-ssh` >= 7.0
|
|
65
66
|
- `ed25519` — Ed25519 key support
|
|
66
67
|
- `bcrypt_pbkdf` — OpenSSH private key format support
|
|
67
68
|
|
|
68
|
-
## Changelog
|
|
69
|
-
|
|
70
|
-
### v0.2.0
|
|
71
|
-
|
|
72
|
-
- Added standalone `Client` class.
|
|
73
|
-
- Fixed `opts.key?(:timeout)` in `Helpers::Connection` — the previous `opts.key(:timeout)` always returned a truthy key object, so the `timeout` option was never read from task kwargs.
|
|
74
|
-
|
|
75
69
|
## License
|
|
76
70
|
|
|
77
71
|
MIT
|
data/lex-ssh.gemspec
CHANGED
|
@@ -28,6 +28,13 @@ Gem::Specification.new do |spec|
|
|
|
28
28
|
|
|
29
29
|
spec.add_dependency 'bcrypt_pbkdf'
|
|
30
30
|
spec.add_dependency 'ed25519'
|
|
31
|
+
spec.add_dependency 'legion-cache', '>= 1.3.11'
|
|
32
|
+
spec.add_dependency 'legion-crypt', '>= 1.4.9'
|
|
33
|
+
spec.add_dependency 'legion-data', '>= 1.4.17'
|
|
34
|
+
spec.add_dependency 'legion-json', '>= 1.2.1'
|
|
35
|
+
spec.add_dependency 'legion-logging', '>= 1.3.2'
|
|
36
|
+
spec.add_dependency 'legion-settings', '>= 1.3.14'
|
|
37
|
+
spec.add_dependency 'legion-transport', '>= 1.3.9'
|
|
31
38
|
spec.add_dependency 'logger'
|
|
32
39
|
spec.add_dependency 'net-ssh', '>= 7.0'
|
|
33
40
|
end
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: lex-ssh
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.2.
|
|
4
|
+
version: 0.2.2
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Esity
|
|
@@ -37,6 +37,104 @@ dependencies:
|
|
|
37
37
|
- - ">="
|
|
38
38
|
- !ruby/object:Gem::Version
|
|
39
39
|
version: '0'
|
|
40
|
+
- !ruby/object:Gem::Dependency
|
|
41
|
+
name: legion-cache
|
|
42
|
+
requirement: !ruby/object:Gem::Requirement
|
|
43
|
+
requirements:
|
|
44
|
+
- - ">="
|
|
45
|
+
- !ruby/object:Gem::Version
|
|
46
|
+
version: 1.3.11
|
|
47
|
+
type: :runtime
|
|
48
|
+
prerelease: false
|
|
49
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
50
|
+
requirements:
|
|
51
|
+
- - ">="
|
|
52
|
+
- !ruby/object:Gem::Version
|
|
53
|
+
version: 1.3.11
|
|
54
|
+
- !ruby/object:Gem::Dependency
|
|
55
|
+
name: legion-crypt
|
|
56
|
+
requirement: !ruby/object:Gem::Requirement
|
|
57
|
+
requirements:
|
|
58
|
+
- - ">="
|
|
59
|
+
- !ruby/object:Gem::Version
|
|
60
|
+
version: 1.4.9
|
|
61
|
+
type: :runtime
|
|
62
|
+
prerelease: false
|
|
63
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
64
|
+
requirements:
|
|
65
|
+
- - ">="
|
|
66
|
+
- !ruby/object:Gem::Version
|
|
67
|
+
version: 1.4.9
|
|
68
|
+
- !ruby/object:Gem::Dependency
|
|
69
|
+
name: legion-data
|
|
70
|
+
requirement: !ruby/object:Gem::Requirement
|
|
71
|
+
requirements:
|
|
72
|
+
- - ">="
|
|
73
|
+
- !ruby/object:Gem::Version
|
|
74
|
+
version: 1.4.17
|
|
75
|
+
type: :runtime
|
|
76
|
+
prerelease: false
|
|
77
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
78
|
+
requirements:
|
|
79
|
+
- - ">="
|
|
80
|
+
- !ruby/object:Gem::Version
|
|
81
|
+
version: 1.4.17
|
|
82
|
+
- !ruby/object:Gem::Dependency
|
|
83
|
+
name: legion-json
|
|
84
|
+
requirement: !ruby/object:Gem::Requirement
|
|
85
|
+
requirements:
|
|
86
|
+
- - ">="
|
|
87
|
+
- !ruby/object:Gem::Version
|
|
88
|
+
version: 1.2.1
|
|
89
|
+
type: :runtime
|
|
90
|
+
prerelease: false
|
|
91
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
92
|
+
requirements:
|
|
93
|
+
- - ">="
|
|
94
|
+
- !ruby/object:Gem::Version
|
|
95
|
+
version: 1.2.1
|
|
96
|
+
- !ruby/object:Gem::Dependency
|
|
97
|
+
name: legion-logging
|
|
98
|
+
requirement: !ruby/object:Gem::Requirement
|
|
99
|
+
requirements:
|
|
100
|
+
- - ">="
|
|
101
|
+
- !ruby/object:Gem::Version
|
|
102
|
+
version: 1.3.2
|
|
103
|
+
type: :runtime
|
|
104
|
+
prerelease: false
|
|
105
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
106
|
+
requirements:
|
|
107
|
+
- - ">="
|
|
108
|
+
- !ruby/object:Gem::Version
|
|
109
|
+
version: 1.3.2
|
|
110
|
+
- !ruby/object:Gem::Dependency
|
|
111
|
+
name: legion-settings
|
|
112
|
+
requirement: !ruby/object:Gem::Requirement
|
|
113
|
+
requirements:
|
|
114
|
+
- - ">="
|
|
115
|
+
- !ruby/object:Gem::Version
|
|
116
|
+
version: 1.3.14
|
|
117
|
+
type: :runtime
|
|
118
|
+
prerelease: false
|
|
119
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
120
|
+
requirements:
|
|
121
|
+
- - ">="
|
|
122
|
+
- !ruby/object:Gem::Version
|
|
123
|
+
version: 1.3.14
|
|
124
|
+
- !ruby/object:Gem::Dependency
|
|
125
|
+
name: legion-transport
|
|
126
|
+
requirement: !ruby/object:Gem::Requirement
|
|
127
|
+
requirements:
|
|
128
|
+
- - ">="
|
|
129
|
+
- !ruby/object:Gem::Version
|
|
130
|
+
version: 1.3.9
|
|
131
|
+
type: :runtime
|
|
132
|
+
prerelease: false
|
|
133
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
134
|
+
requirements:
|
|
135
|
+
- - ">="
|
|
136
|
+
- !ruby/object:Gem::Version
|
|
137
|
+
version: 1.3.9
|
|
40
138
|
- !ruby/object:Gem::Dependency
|
|
41
139
|
name: logger
|
|
42
140
|
requirement: !ruby/object:Gem::Requirement
|