sshkit 1.23.2 → 1.25.0

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: deb517c2ce9ebf51e9dbb9899a16ba4993cc8159045fb6bbc0da83f980e60662
4
- data.tar.gz: 1ddc2ed93b2293a34c49f42838d3e2e6ed7bb76c622e9533db156862abf95d40
3
+ metadata.gz: ab4c2342f826356f08f688cb17f29323b90c4a7ecc85836b1ceaf323c34ab13d
4
+ data.tar.gz: 1126ee211260588192c298847ce2a00b43c356d25751a13c6268f324b822d8a9
5
5
  SHA512:
6
- metadata.gz: a06ca7e0df5e0cc49a9005cf29e97f4a229e8ccb6aa3d89f7e12cde841253d842904b2f5bbf3550a96875b1c06bee5abb54301f68826197bf3f47ad6a62d30cf
7
- data.tar.gz: 1e92da0637c7c9dbc67f3fe5a893c8a7b7e551b981054487e3d93c47e463f792449fb0edd22126b686e0a5d09aecccf2d1cfbd2bfd1fe59e99a5127b27365cac
6
+ metadata.gz: a6321a43251bc31e117660e049e53b35dec7154119a9fac2dce0e4eb855f8acc6b5539cbfe696e53457f8f6784eb8eebfa95a71c79e7b1a3a45b093d9e89e5ee
7
+ data.tar.gz: 41d021df58a4d4cd5f88762d29491fd71c603a97f31ac939d34825a42a27d1576dce5410cd6da7384833bb98fc107df1dfdaa4ca379d226b4f6417171ea2057f
@@ -8,21 +8,9 @@ jobs:
8
8
  runs-on: ubuntu-latest
9
9
  strategy:
10
10
  matrix:
11
- ruby:
12
- [
13
- "2.3",
14
- "2.4",
15
- "2.5",
16
- "2.6",
17
- "2.7",
18
- "3.0",
19
- "3.1",
20
- "3.2",
21
- "3.3",
22
- "head",
23
- ]
11
+ ruby: ["2.5", "2.6", "2.7", "3.0", "3.1", "3.2", "3.3", "3.4", "head"]
24
12
  steps:
25
- - uses: actions/checkout@v4
13
+ - uses: actions/checkout@v6
26
14
  - name: Set up Ruby
27
15
  uses: ruby/setup-ruby@v1
28
16
  with:
@@ -33,24 +21,9 @@ jobs:
33
21
  env:
34
22
  RUBYOPT: ${{ startsWith(matrix.ruby, 'head') && '--enable=frozen-string-literal' || '' }}
35
23
 
36
- test-legacy:
37
- runs-on: ubuntu-20.04
38
- strategy:
39
- matrix:
40
- ruby: ["2.0", "2.1", "2.2"]
41
- steps:
42
- - uses: actions/checkout@v4
43
- - name: Set up Ruby
44
- uses: ruby/setup-ruby@v1
45
- with:
46
- ruby-version: ${{ matrix.ruby }}
47
- bundler-cache: true
48
- - name: Run tests
49
- run: bundle exec rake test:units
50
-
51
24
  test-all:
52
25
  runs-on: ubuntu-latest
53
- needs: [test, test-legacy]
26
+ needs: test
54
27
  if: always()
55
28
  steps:
56
29
  - name: All tests ok
@@ -63,7 +36,7 @@ jobs:
63
36
  rubocop:
64
37
  runs-on: ubuntu-latest
65
38
  steps:
66
- - uses: actions/checkout@v4
39
+ - uses: actions/checkout@v6
67
40
  - name: Set up Ruby
68
41
  uses: ruby/setup-ruby@v1
69
42
  with:
@@ -76,9 +49,9 @@ jobs:
76
49
  runs-on: ubuntu-latest
77
50
  strategy:
78
51
  matrix:
79
- ruby: ["2.0", "ruby"]
52
+ ruby: ["2.5", "ruby"]
80
53
  steps:
81
- - uses: actions/checkout@v4
54
+ - uses: actions/checkout@v6
82
55
  - name: Set up Ruby
83
56
  uses: ruby/setup-ruby@v1
84
57
  with:
@@ -7,6 +7,6 @@ jobs:
7
7
  steps:
8
8
  - uses: actions/checkout@master
9
9
  - name: Draft Release
10
- uses: toolmantim/release-drafter@v6.0.0
10
+ uses: toolmantim/release-drafter@v6.1.0
11
11
  env:
12
12
  GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
data/.rubocop.yml CHANGED
@@ -3,7 +3,7 @@ inherit_from: .rubocop_todo.yml
3
3
  AllCops:
4
4
  DisplayCopNames: true
5
5
  DisplayStyleGuide: true
6
- TargetRubyVersion: 2.0
6
+ TargetRubyVersion: 2.5
7
7
 
8
8
  Lint/AmbiguousBlockAssociation:
9
9
  Enabled: false
@@ -18,12 +18,12 @@ Style/ClassAndModuleChildren:
18
18
  Enabled: false
19
19
  Style/DoubleNegation:
20
20
  Enabled: false
21
- Style/FileName:
21
+ Naming/FileName:
22
22
  Exclude:
23
23
  - "Dangerfile"
24
- Style/IndentHeredoc:
24
+ Layout/IndentHeredoc:
25
25
  Enabled: false
26
- Style/SpaceAroundEqualsInParameterDefault:
26
+ Layout/SpaceAroundEqualsInParameterDefault:
27
27
  EnforcedStyle: no_space
28
28
  Style/StringLiterals:
29
29
  EnforcedStyle: double_quotes
@@ -47,7 +47,7 @@ Metrics/CyclomaticComplexity:
47
47
  Enabled: false
48
48
  Metrics/MethodLength:
49
49
  Enabled: false
50
- Style/PredicateName:
50
+ Naming/PredicateName:
51
51
  Enabled: false
52
52
  Metrics/LineLength:
53
53
  Enabled: false
@@ -59,5 +59,5 @@ Metrics/ClassLength:
59
59
  Enabled: false
60
60
  Metrics/ModuleLength:
61
61
  Enabled: false
62
- Style/AccessorMethodName:
62
+ Naming/AccessorMethodName:
63
63
  Enabled: false
data/.rubocop_todo.yml CHANGED
@@ -439,7 +439,7 @@ Style/MethodDefParentheses:
439
439
  # Offense count: 3
440
440
  # Configuration parameters: SupportedStyles.
441
441
  # SupportedStyles: snake_case, camelCase
442
- Style/MethodName:
442
+ Naming/MethodName:
443
443
  EnforcedStyle: snake_case
444
444
  Exclude:
445
445
  - 'test/unit/test_color.rb'
@@ -460,7 +460,7 @@ Style/NumericPredicate:
460
460
  - 'lib/sshkit/command.rb'
461
461
 
462
462
  # Offense count: 1
463
- Style/OpMethod:
463
+ Naming/BinaryOperatorParameterName:
464
464
  Exclude:
465
465
  - 'lib/sshkit/host.rb'
466
466
 
@@ -611,7 +611,7 @@ Style/UnneededPercentQ:
611
611
  # Offense count: 1
612
612
  # Configuration parameters: EnforcedStyle, SupportedStyles.
613
613
  # SupportedStyles: snake_case, normalcase, non_integer
614
- Style/VariableNumber:
614
+ Naming/VariableNumber:
615
615
  Exclude:
616
616
  - 'test/unit/backends/test_connection_pool.rb'
617
617
 
data/Gemfile CHANGED
@@ -1,8 +1,3 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
3
  gemspec
4
-
5
- # public_suffix 3+ requires ruby 2.1+
6
- if Gem::Requirement.new('< 2.1').satisfied_by?(Gem::Version.new(RUBY_VERSION))
7
- gem 'public_suffix', '< 3'
8
- end
data/RELEASING.md CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  * You must have commit rights to the SSHKit repository.
6
6
  * You must have push rights for the sshkit gem on rubygems.org.
7
- * You must be using Ruby >= 2.1.0.
7
+ * You must be using Ruby >= 2.5.0.
8
8
 
9
9
  ## How to release
10
10
 
@@ -103,6 +103,7 @@ module SSHKit
103
103
  end
104
104
 
105
105
  def as(who, &_block)
106
+ who_old = [@user, @group]
106
107
  if who.is_a? Hash
107
108
  @user = who[:user] || who["user"]
108
109
  @group = who[:group] || who["group"]
@@ -118,8 +119,7 @@ module SSHKit
118
119
  EOTEST
119
120
  yield
120
121
  ensure
121
- remove_instance_variable(:@user)
122
- remove_instance_variable(:@group)
122
+ @user, @group = *who_old
123
123
  end
124
124
 
125
125
  class << self
@@ -135,8 +135,7 @@ module SSHKit
135
135
  # Backends which extend the Abstract backend should implement the following methods:
136
136
  def upload!(_local, _remote, _options = {}) raise MethodUnavailableError end
137
137
  def download!(_remote, _local=nil, _options = {}) raise MethodUnavailableError end
138
- def execute_command(_cmd) raise MethodUnavailableError end
139
- private :execute_command # Can inline after Ruby 2.1
138
+ private def execute_command(_cmd) raise MethodUnavailableError end
140
139
 
141
140
  private
142
141
 
@@ -1,5 +1,4 @@
1
1
  require "monitor"
2
- require "thread"
3
2
 
4
3
  # Since we call to_s on new connection arguments and use that as a cache key, we
5
4
  # need to make sure the memory address of the object is not used as part of the
@@ -1,5 +1,3 @@
1
- require 'thread'
2
-
3
1
  module SSHKit
4
2
 
5
3
  module Runner
@@ -1,3 +1,3 @@
1
1
  module SSHKit
2
- VERSION = "1.23.2".freeze
2
+ VERSION = "1.25.0".freeze
3
3
  end
data/sshkit.gemspec CHANGED
@@ -19,19 +19,20 @@ Gem::Specification.new do |gem|
19
19
  gem.name = "sshkit"
20
20
  gem.require_paths = ["lib"]
21
21
  gem.version = SSHKit::VERSION
22
+ gem.required_ruby_version = ">= 2.5"
22
23
 
23
- gem.add_runtime_dependency('base64') if RUBY_VERSION >= "2.4"
24
+ gem.add_runtime_dependency('base64')
25
+ gem.add_runtime_dependency('logger')
24
26
  gem.add_runtime_dependency('net-ssh', '>= 2.8.0')
25
27
  gem.add_runtime_dependency('net-scp', '>= 1.1.2')
26
28
  gem.add_runtime_dependency('net-sftp', '>= 2.1.2')
27
- gem.add_runtime_dependency('ostruct') if RUBY_VERSION >= "2.5"
29
+ gem.add_runtime_dependency('ostruct')
28
30
 
29
31
  gem.add_development_dependency('danger')
30
32
  gem.add_development_dependency('minitest', '>= 5.0.0')
31
33
  gem.add_development_dependency('minitest-reporters')
32
- gem.add_development_dependency('rainbow', '~> 2.2.2')
33
34
  gem.add_development_dependency('rake')
34
- gem.add_development_dependency('rubocop', "~> 0.49.1")
35
+ gem.add_development_dependency('rubocop', "~> 0.52.0")
35
36
  gem.add_development_dependency('mocha')
36
37
 
37
38
  gem.add_development_dependency('bcrypt_pbkdf')
@@ -131,7 +131,7 @@ module SSHKit
131
131
 
132
132
  def test_test_does_not_raise_on_non_zero_exit_status
133
133
  Netssh.new(a_host) do |_host|
134
- test :false
134
+ test :false # rubocop:disable Lint/BooleanSymbol
135
135
  end.run
136
136
  end
137
137
 
@@ -151,7 +151,7 @@ module SSHKit
151
151
  # ensure we enable connection pool
152
152
  SSHKit::Backend::Netssh.pool.idle_timeout = 10
153
153
  Netssh.new(a_host) do |_host|
154
- test :false
154
+ test :false # rubocop:disable Lint/BooleanSymbol
155
155
  end.run
156
156
  sleep 2.5
157
157
  captured_command_result = nil
@@ -111,13 +111,63 @@ module SSHKit
111
111
  assert_equal 'cd ~/foo && /usr/bin/env cat file', backend.executed_command.to_command
112
112
  end
113
113
 
114
- def test_background_logs_deprecation_warnings
115
- deprecation_out =
116
- if RUBY_VERSION < "2.3"
117
- ''
118
- else
119
- +''
114
+ def test_as_properly_clears
115
+ backend = ExampleBackend.new do
116
+ as :root do
117
+ execute :cat, 'file', :strip => false
118
+ end
119
+
120
+ execute :cat, 'file', :strip => false
121
+ end
122
+
123
+ backend.run
124
+
125
+ assert_equal '/usr/bin/env cat file', backend.executed_command.to_command
126
+ end
127
+
128
+ def test_as_root
129
+ backend = ExampleBackend.new do
130
+ as :root do
131
+ execute :cat, 'file', :strip => false
120
132
  end
133
+ end
134
+
135
+ backend.run
136
+
137
+ assert_equal 'sudo -u root -- sh -c /usr/bin/env\\ cat\\ file', backend.executed_command.to_command
138
+ end
139
+
140
+ def test_nested_as
141
+ backend = ExampleBackend.new do
142
+ as :root do
143
+ as :other_user do
144
+ execute :cat, 'file', :strip => false
145
+ end
146
+ end
147
+ end
148
+
149
+ backend.run
150
+
151
+ assert_equal 'sudo -u other_user -- sh -c /usr/bin/env\\ cat\\ file', backend.executed_command.to_command
152
+ end
153
+
154
+ def test_nested_as_properly_clears
155
+ backend = ExampleBackend.new do
156
+ as :root do
157
+ as :other_user do
158
+ execute :cat, 'file', :strip => false
159
+ end
160
+ execute :cat, 'file', :strip => false
161
+ end
162
+ end
163
+
164
+ backend.run
165
+
166
+ assert_equal 'sudo -u root -- sh -c /usr/bin/env\\ cat\\ file', backend.executed_command.to_command
167
+ end
168
+
169
+ def test_background_logs_deprecation_warnings
170
+ deprecation_out = +''
121
171
  SSHKit.config.deprecation_output = deprecation_out
122
172
 
123
173
  ExampleBackend.new do
@@ -211,12 +211,7 @@ module SSHKit
211
211
  end
212
212
 
213
213
  def test_deprecated_stdtream_accessors
214
- deprecation_out =
215
- if RUBY_VERSION < "2.3"
216
- ''
217
- else
218
- +''
219
- end
214
+ deprecation_out = +''
220
215
 
221
216
  SSHKit.config.deprecation_output = deprecation_out
222
217
 
@@ -11,12 +11,7 @@ module SSHKit
11
11
  end
12
12
 
13
13
  def test_deprecation_output
14
- output =
15
- if RUBY_VERSION < "2.3"
16
- ''
17
- else
18
- +''
19
- end
14
+ output = +''
20
15
 
21
16
  SSHKit.config.deprecation_output = output
22
17
  SSHKit.config.deprecation_logger.log('Test')
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sshkit
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.23.2
4
+ version: 1.25.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Lee Hambley
8
8
  - Tom Clements
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-10-15 00:00:00.000000000 Z
11
+ date: 1980-01-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: base64
@@ -24,6 +24,20 @@ dependencies:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: logger
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: net-ssh
29
43
  requirement: !ruby/object:Gem::Requirement
@@ -122,20 +136,6 @@ dependencies:
122
136
  - - ">="
123
137
  - !ruby/object:Gem::Version
124
138
  version: '0'
125
- - !ruby/object:Gem::Dependency
126
- name: rainbow
127
- requirement: !ruby/object:Gem::Requirement
128
- requirements:
129
- - - "~>"
130
- - !ruby/object:Gem::Version
131
- version: 2.2.2
132
- type: :development
133
- prerelease: false
134
- version_requirements: !ruby/object:Gem::Requirement
135
- requirements:
136
- - - "~>"
137
- - !ruby/object:Gem::Version
138
- version: 2.2.2
139
139
  - !ruby/object:Gem::Dependency
140
140
  name: rake
141
141
  requirement: !ruby/object:Gem::Requirement
@@ -156,14 +156,14 @@ dependencies:
156
156
  requirements:
157
157
  - - "~>"
158
158
  - !ruby/object:Gem::Version
159
- version: 0.49.1
159
+ version: 0.52.0
160
160
  type: :development
161
161
  prerelease: false
162
162
  version_requirements: !ruby/object:Gem::Requirement
163
163
  requirements:
164
164
  - - "~>"
165
165
  - !ruby/object:Gem::Version
166
- version: 0.49.1
166
+ version: 0.52.0
167
167
  - !ruby/object:Gem::Dependency
168
168
  name: mocha
169
169
  requirement: !ruby/object:Gem::Requirement
@@ -329,14 +329,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
329
329
  requirements:
330
330
  - - ">="
331
331
  - !ruby/object:Gem::Version
332
- version: '0'
332
+ version: '2.5'
333
333
  required_rubygems_version: !ruby/object:Gem::Requirement
334
334
  requirements:
335
335
  - - ">="
336
336
  - !ruby/object:Gem::Version
337
337
  version: '0'
338
338
  requirements: []
339
- rubygems_version: 3.6.0.dev
339
+ rubygems_version: 3.7.2
340
340
  specification_version: 4
341
341
  summary: SSHKit makes it easy to write structured, testable SSH commands in Ruby
342
342
  test_files: