sshkit 1.11.5 → 1.12.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ecbcaab38ec3846d9404e17a66d3f7b194934e5f
4
- data.tar.gz: 89adc14d1a4c2b827b9f059aacad981930e9f11d
3
+ metadata.gz: 2075a49a2e5d52e26409761fffbb3da8dd6bc46d
4
+ data.tar.gz: d9579584daf0ac0f3d2170fa4dc0c2bc57d3ac55
5
5
  SHA512:
6
- metadata.gz: 390afcddc35aebf0a039b31fbe467a0c4d0d964ccb280fea07ac4780c9cd699ddfc474c596c398543335c679e9e5b63554cc76654c61e0c34e83cf18ab427265
7
- data.tar.gz: f2925bc0750c885668a01462ce43ea3335e4fcd55f7ef369e8a777d0acac2a1c689e9db6da6ba35e99c947ffb3793ad29d09da2958465d879773f98c3252900f
6
+ metadata.gz: 4a84ef1bf0b996cf4a3ecb0d855f8d7b872c1d0bc31f46804908b3f51f31cb1f2af0ff7d39e7bc498f8a7aecf05576116bff008b8955b853b6e39c3fcb6f71bf
7
+ data.tar.gz: b2e42bf3216b4fdfbdd531329a09e9534775b71eb15dd2853319dca4ac358623b494474f179f136034beee435fd424f03b13d64fe6eb64dd283da39fcd6ae3f8
data/.travis.yml CHANGED
@@ -4,8 +4,9 @@ rvm:
4
4
  - 2.2.4
5
5
  - 2.1.8
6
6
  - 2.0.0
7
- include:
8
- # Run Danger only once, on 2.3.3
9
- - rvm: 2.3.3
10
- before_script: bundle exec danger
11
- script: "rake test:units lint"
7
+ matrix:
8
+ include:
9
+ # Run Danger only once, on 2.3.3
10
+ - rvm: 2.3.3
11
+ script: bundle exec danger
12
+ script: bundle exec rake test:units lint
data/CHANGELOG.md CHANGED
@@ -7,6 +7,16 @@ appear at the top.
7
7
 
8
8
  * Your contribution here!
9
9
 
10
+ ## [1.12.0][] (2017-02-10)
11
+
12
+ ### Breaking changes
13
+
14
+ * None
15
+
16
+ ### New features
17
+
18
+ * Add `SSHKit.config.default_runner_config` option that allows overriding default runner configs.
19
+
10
20
  ## [1.11.5][] (2016-12-16)
11
21
 
12
22
  ### Bug fixes
@@ -662,7 +672,8 @@ version `0.0.5`.
662
672
 
663
673
  First release.
664
674
 
665
- [Unreleased]: https://github.com/capistrano/sshkit/compare/v1.11.5...HEAD
675
+ [Unreleased]: https://github.com/capistrano/sshkit/compare/v1.12.0...HEAD
676
+ [1.12.0]: https://github.com/capistrano/sshkit/compare/v1.11.5...v1.12.0
666
677
  [1.11.5]: https://github.com/capistrano/sshkit/compare/v1.11.4...v1.11.5
667
678
  [1.11.4]: https://github.com/capistrano/sshkit/compare/v1.11.3...v1.11.4
668
679
  [1.11.3]: https://github.com/capistrano/sshkit/compare/v1.11.2...v1.11.3
data/Dangerfile CHANGED
@@ -45,7 +45,7 @@ end
45
45
  # Did you remove the CHANGELOG's "Your contribution here!" line?
46
46
  # ------------------------------------------------------------------------------
47
47
  if has_changelog_changes
48
- unless IO.read("CHANGELOG.md") =~ /^\* Your contribution here/i
48
+ unless IO.read("CHANGELOG.md") =~ /^\s*\* Your contribution here/i
49
49
  fail(
50
50
  "Please put the `* Your contribution here!` line back into CHANGELOG.md.",
51
51
  :sticky => false
data/README.md CHANGED
@@ -136,6 +136,26 @@ it too hard.
136
136
  Sequential runs were intended to be used for rolling restarts, amongst other
137
137
  similar use-cases.
138
138
 
139
+ The default runner can be set with the `SSHKit.config.default_runner` option. For
140
+ example:
141
+ ```ruby
142
+ SSHKit.config.default_runner = :parallel
143
+ SSHKit.config.default_runner = :sequence
144
+ SSHKit.config.default_runner = :groups
145
+ SSHKit.config.default_runner = MyRunner # A custom runner
146
+ ```
147
+
148
+ If more control over the default runner is needed, the `SSHKit.config.default_runner_config`
149
+ can be set.
150
+ ```ruby
151
+ # Set the runner and then the config for the runner
152
+ SSHKit.config.default_runner = :sequence
153
+ SSHKit.config.default_runner_config = { wait: 5 }
154
+
155
+ # Or just set everything once
156
+ SSHKit.config.default_runner_config = { in: :sequence, wait: 5 }
157
+ ```
158
+
139
159
  ## Synchronisation
140
160
 
141
161
  The `on()` block is the unit of synchronisation, one `on()` block will wait
@@ -29,6 +29,16 @@ module SSHKit
29
29
  @default_runner ||= :parallel
30
30
  end
31
31
 
32
+ def default_runner_config
33
+ @default_runner_config ||= { in: default_runner }
34
+ end
35
+
36
+ def default_runner_config=(config_hash)
37
+ config = config_hash.dup
38
+ SSHKit.config.default_runner = config.delete(:in) if config[:in]
39
+ @default_runner_config = config.merge(in: SSHKit.config.default_runner)
40
+ end
41
+
32
42
  def backend
33
43
  @backend ||= SSHKit::Backend::Netssh
34
44
  end
@@ -27,7 +27,7 @@ module SSHKit
27
27
  private
28
28
 
29
29
  def default_options
30
- { in: SSHKit.config.default_runner }
30
+ SSHKit.config.default_runner_config
31
31
  end
32
32
 
33
33
  def resolve_hosts
@@ -1,3 +1,3 @@
1
1
  module SSHKit
2
- VERSION = "1.11.5".freeze
2
+ VERSION = "1.12.0".freeze
3
3
  end
data/sshkit.gemspec CHANGED
@@ -23,6 +23,7 @@ Gem::Specification.new do |gem|
23
23
  gem.add_development_dependency('danger')
24
24
  gem.add_development_dependency('minitest', '>= 5.0.0')
25
25
  gem.add_development_dependency('minitest-reporters')
26
+ gem.add_development_dependency('rainbow', '~> 2.1.0')
26
27
  gem.add_development_dependency('rake')
27
28
  gem.add_development_dependency('rubocop')
28
29
  gem.add_development_dependency('mocha')
@@ -50,8 +50,8 @@ module SSHKit
50
50
  end
51
51
 
52
52
  def test_connections_are_reused_if_checked_in
53
- conn1 = pool.with(connect, "conn") {}
54
- conn2 = pool.with(connect, "conn") {}
53
+ conn1 = pool.with(connect, "conn") { |c| c }
54
+ conn2 = pool.with(connect, "conn") { |c| c }
55
55
 
56
56
  assert_equal conn1, conn2
57
57
  end
@@ -218,7 +218,7 @@ module SSHKit
218
218
 
219
219
  def test_setting_exit_status
220
220
  c = Command.new(:whoami, raise_on_non_zero_exit: false)
221
- assert_equal nil, c.exit_status
221
+ assert_nil c.exit_status
222
222
  assert c.exit_status = 1
223
223
  assert_equal 1, c.exit_status
224
224
  end
@@ -57,6 +57,19 @@ module SSHKit
57
57
  assert_equal :sequence, SSHKit.config.default_runner
58
58
  end
59
59
 
60
+ def test_default_runner_config
61
+ config_hash = { wait: 5 }
62
+ config_hash_with_runner = { in: :groups, limit: 5 }
63
+ default_hash = { in: SSHKit.config.default_runner }
64
+
65
+ assert_equal default_hash, SSHKit.config.default_runner_config
66
+ SSHKit.config.default_runner_config = config_hash
67
+ assert_equal default_hash.merge(config_hash), SSHKit.config.default_runner_config
68
+ SSHKit.config.default_runner_config = config_hash_with_runner
69
+ assert_equal config_hash_with_runner, SSHKit.config.default_runner_config
70
+ assert_equal config_hash_with_runner[:in], SSHKit.config.default_runner
71
+ end
72
+
60
73
  def test_backend
61
74
  assert_equal SSHKit::Backend::Netssh, SSHKit.config.backend
62
75
  assert SSHKit.config.backend = SSHKit::Backend::Printer
@@ -82,6 +82,32 @@ module SSHKit
82
82
  end
83
83
  end
84
84
 
85
+ def test_the_connection_manager_can_run_things_with_custom_runner_configs
86
+ begin
87
+ $original_runner = SSHKit.config.default_runner
88
+ SSHKit.config.default_runner = :groups
89
+ $original_runner_config = SSHKit.config.default_runner_config
90
+ SSHKit.config.default_runner_config = { limit: 2, wait: 5 }
91
+
92
+ Coordinator.new(
93
+ %w{
94
+ 1.example.com
95
+ 2.example.com
96
+ 3.example.com
97
+ 4.example.com
98
+ }
99
+ ).each(&echo_time)
100
+ assert_equal 4, actual_execution_times.length
101
+ assert_within_10_ms(actual_execution_times[0..1])
102
+ assert_within_10_ms(actual_execution_times[2..3])
103
+ assert_at_least_5_sec_apart(actual_execution_times[0], actual_execution_times[2])
104
+ assert_at_least_5_sec_apart(actual_execution_times[1], actual_execution_times[3])
105
+ ensure
106
+ SSHKit.config.default_runner = $original_runner
107
+ SSHKit.config.default_runner_config = $original_runner_config
108
+ end
109
+ end
110
+
85
111
  def test_the_connection_manager_can_run_things_in_sequence_with_wait
86
112
  start = Time.now
87
113
  Coordinator.new(%w{1.example.com 2.example.com}).each in: :sequence, wait: 10, &echo_time
@@ -114,6 +140,10 @@ module SSHKit
114
140
  assert_operator(last_time - first_time, :>, 1.0)
115
141
  end
116
142
 
143
+ def assert_at_least_5_sec_apart(first_time, last_time)
144
+ assert_operator(last_time - first_time, :>, 5.0)
145
+ end
146
+
117
147
  def assert_within_10_ms(array)
118
148
  assert_in_delta(*array, 0.01) # 10 msec
119
149
  end
@@ -75,7 +75,7 @@ module SSHKit
75
75
 
76
76
  def test_arbitrary_host_properties
77
77
  h = Host.new('example.com')
78
- assert_equal nil, h.properties.roles
78
+ assert_nil h.properties.roles
79
79
  assert h.properties.roles = [:web, :app]
80
80
  assert_equal [:web, :app], h.properties.roles
81
81
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sshkit
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.11.5
4
+ version: 1.12.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Lee Hambley
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2016-12-17 00:00:00.000000000 Z
12
+ date: 2017-02-10 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: net-ssh
@@ -81,6 +81,20 @@ dependencies:
81
81
  - - ">="
82
82
  - !ruby/object:Gem::Version
83
83
  version: '0'
84
+ - !ruby/object:Gem::Dependency
85
+ name: rainbow
86
+ requirement: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - "~>"
89
+ - !ruby/object:Gem::Version
90
+ version: 2.1.0
91
+ type: :development
92
+ prerelease: false
93
+ version_requirements: !ruby/object:Gem::Requirement
94
+ requirements:
95
+ - - "~>"
96
+ - !ruby/object:Gem::Version
97
+ version: 2.1.0
84
98
  - !ruby/object:Gem::Dependency
85
99
  name: rake
86
100
  requirement: !ruby/object:Gem::Requirement
@@ -234,7 +248,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
234
248
  version: '0'
235
249
  requirements: []
236
250
  rubyforge_project:
237
- rubygems_version: 2.6.8
251
+ rubygems_version: 2.6.10
238
252
  signing_key:
239
253
  specification_version: 4
240
254
  summary: SSHKit makes it easy to write structured, testable SSH commands in Ruby