knife-undev 0.0.9 → 0.1.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: 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