knife-undev 0.0.9 → 0.1.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
  SHA1:
3
- metadata.gz: 2ba84740385210e9d5e64a67a37f43919da6539f
4
- data.tar.gz: 527e5ae42dbe266d9903d749c6c4189d214d5b28
3
+ metadata.gz: e09cbba180c82143cdccd926a2dc205ee42edd73
4
+ data.tar.gz: 98a6c5e9535847af87761bb0a292feed16d07d4b
5
5
  SHA512:
6
- metadata.gz: 78e2afbe003643a7906208f7d3c8ebe4472cfa5522b1d66a5b090eae68b439903edf34ebc35367ce43c55bd08b8f2f3ad7567e95a55540db3bd8e90790b64dc1
7
- data.tar.gz: 44fd9445f1badce11fb05991c3d5747eca43c726bba015a2a88c1eb666df8d8b7fdf5ecbead9a643890325247f9b0f51ec5b9fe7e9439d4ad515794d9f711bab
6
+ metadata.gz: 476fb6d05a27529993bd2524cd0c3fc9ec553a998ada45ee04b7f169b10b1e56add6688022c6437dab3ec94ab21cfa7dd26cfad17805574e5ccb419f84b861e6
7
+ data.tar.gz: 3f418df25482182b1cc764a1775f1c190000daa76a299af2dd9eb680e0179d61c05ac16ceca1b9280b1940e47330ba3ef6f50e34356195a11fd4470adcb61e23
@@ -26,7 +26,7 @@ class Chef
26
26
 
27
27
  attr_writer :password
28
28
 
29
- banner "knife private_ssh QUERY COMMAND (options)"
29
+ banner "knife cloud_ssh QUERY COMMAND (options)"
30
30
 
31
31
  option :concurrency,
32
32
  :short => "-C NUM",
@@ -264,6 +264,55 @@ class Chef
264
264
  "private_ipaddress").strip
265
265
  end
266
266
 
267
+ def read_line
268
+ loop do
269
+ command = reader.readline("#{ui.color('knife-ssh>', :bold)} ", true)
270
+
271
+ if command.nil?
272
+ command = "exit"
273
+ puts(command)
274
+ else
275
+ command.strip!
276
+ end
277
+
278
+ unless command.empty?
279
+ return command
280
+ end
281
+ end
282
+ end
283
+
284
+ def reader
285
+ Readline
286
+ end
287
+
288
+ def interactive
289
+ puts "Connected to #{ui.list(session.servers_for.collect { |s| ui.color(s.host, :cyan) }, :inline, " and ")}"
290
+ puts
291
+ puts "To run a command on a list of servers, do:"
292
+ puts " on SERVER1 SERVER2 SERVER3; COMMAND"
293
+ puts " Example: on latte foamy; echo foobar"
294
+ puts
295
+ puts "To exit interactive mode, use 'quit!'"
296
+ puts
297
+ while 1
298
+ command = read_line
299
+ case command
300
+ when 'quit!'
301
+ puts 'Bye!'
302
+ break
303
+ when /^on (.+?); (.+)$/
304
+ raw_list = $1.split(" ")
305
+ server_list = Array.new
306
+ session.servers.each do |session_server|
307
+ server_list << session_server if raw_list.include?(session_server.host)
308
+ end
309
+ command = $2
310
+ ssh_command(command, session.on(*server_list))
311
+ else
312
+ ssh_command(command)
313
+ end
314
+ end
315
+ end
267
316
 
268
317
  def get_stripped_unfrozen_value(value)
269
318
  return nil if value.nil?
@@ -305,7 +354,14 @@ class Chef
305
354
  configure_gateway
306
355
  configure_session
307
356
 
308
- exit_status = ssh_command(@name_args[1..-1].join(" "))
357
+ exit_status =
358
+ case @name_args[1]
359
+ when "interactive"
360
+ interactive
361
+ else
362
+ ssh_command(@name_args[1..-1].join(" "))
363
+ end
364
+
309
365
 
310
366
  session.close
311
367
 
@@ -1,5 +1,5 @@
1
1
  module Knife
2
2
  module Undev
3
- VERSION = "0.0.9"
3
+ VERSION = "0.1.0"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: knife-undev
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.9
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Vasiliev Dmitry