dizby 2.0.0 → 2.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: 38bb5b303f7f0773cd06e2cfaaa4f155444d046f
4
- data.tar.gz: 72c687978802a978963575d4269c1f1dfa85eb9b
3
+ metadata.gz: 0b885bb489fe18e78bb9813c27dc0f3ebfac80f6
4
+ data.tar.gz: 93737792f91064f3100c5a82447acd49e6987f21
5
5
  SHA512:
6
- metadata.gz: a5a08a6e1f17ee01d269167cb3e1ffeec8a4dd32471ca6cd4965b3819681e4c1be564fafdca6ce58a0663ef96733d1560bd3f81c5c2d3b845d45eda9a8c86a36
7
- data.tar.gz: c94f327e1100ee6eb4361686dbd5fe15f10e2961ad8ea0226657f2c95e0de2afbb6af32c4b7f7eb3815137baf0bafa00f4bf35043815c25430190c10abcdd98e
6
+ metadata.gz: dacc04d4adc114372d745b41757386e22b9f3f6b8fe7407ae0c52095eaaf6e423cc00e52d53a10bcc8b7f6c185371901579322d0dcaab1020c152998a747ab8e
7
+ data.tar.gz: fa557fb76b9aae31c94061820e880f423dc4b44b64e3359079dfe0903f9954e2914f12a4dd3c75c984d2e03c0791b84fbd0773c5d77cdee49aa36cf4107f8036
@@ -30,7 +30,7 @@ module Dizby
30
30
  end
31
31
  # rubocop:enable Style/MethodMissing
32
32
 
33
- def respond_to_missing?(msg_id, priv = false)
33
+ def respond_to?(msg_id, priv = false)
34
34
  responds =
35
35
  case msg_id
36
36
  when :_dump
@@ -45,6 +45,10 @@ module Dizby
45
45
  responds
46
46
  end
47
47
 
48
+ # rubocop:disable Style/Alias
49
+ alias_method(:respond_to_missing?, :respond_to?)
50
+ # rubocop:enable Style/Alias
51
+
48
52
  undef :to_s
49
53
  end
50
54
  end
@@ -28,10 +28,14 @@ module Dizby
28
28
  end
29
29
  # rubocop:enable Style/MethodMissing
30
30
 
31
- def respond_to_missing?(msg_id, priv = false)
31
+ def respond_to?(msg_id, priv = false)
32
32
  method_missing(:respond_to?, msg_id, priv)
33
33
  end
34
34
 
35
+ # rubocop:disable Style/Alias
36
+ alias_method(:respond_to_missing?, :respond_to?)
37
+ # rubocop:enable Style/Alias
38
+
35
39
  undef :to_s
36
40
  end
37
41
 
@@ -24,7 +24,7 @@ module Dizby
24
24
  :spawn,
25
25
  "#{scheme}://%{user}?%{host}%{port}?%{query}?"
26
26
  ) do |args, server, (user, host, port, query)|
27
- port &&= port.to_i
27
+ port = port.to_i
28
28
 
29
29
  factory = TunnelFactory.new(server, port)
30
30
  tunnel = factory.create(BasicSpawnTunnel).with(user, host, args)
@@ -46,7 +46,7 @@ module Dizby
46
46
  :client,
47
47
  "#{scheme}://%{user}?%{host}%{port}%{query}?"
48
48
  ) do |args, server, (user, host, port, query)|
49
- port &&= port.to_i
49
+ port = port.to_i
50
50
 
51
51
  factory = TunnelFactory.new(server, port)
52
52
  tunnel = factory.create(BasicTunnel).with(user, host, args)
@@ -14,16 +14,7 @@ module Dizby
14
14
  @config = [host, user, ssh_config]
15
15
  @strategy = strategy
16
16
 
17
- reader, writer = IO.pipe
18
-
19
- @thread =
20
- Thread.start(Net::SSH.start(*@config)) do |ssh|
21
- loop_ssh(ssh, writer)
22
- writer.close
23
- end
24
-
25
- read_ports(reader)
26
- reader.close
17
+ open_ssh_tunnel
27
18
  end
28
19
 
29
20
  # wait(ssh) is not defined in this class
@@ -31,6 +22,7 @@ module Dizby
31
22
  get_and_write_ports(ssh, output)
32
23
  wait(ssh)
33
24
  ensure
25
+ output.close
34
26
  ssh.close if ssh
35
27
  end
36
28
 
@@ -42,8 +34,24 @@ module Dizby
42
34
  @strategy.write(ssh, output)
43
35
  end
44
36
 
37
+ def open_ssh_tunnel
38
+ reader, writer = IO.pipe
39
+
40
+ @thread =
41
+ Thread.start(Net::SSH.start(*@config)) do |ssh|
42
+ loop_ssh(ssh, writer)
43
+ end
44
+
45
+ read_ports(reader)
46
+ rescue
47
+ @thread.abort_on_exception = true
48
+ close
49
+ ensure
50
+ reader.close
51
+ end
52
+
45
53
  def close
46
- @thread.join
54
+ @thread.join if @thread && @thread.alive?
47
55
  end
48
56
 
49
57
  attr_reader :local_port, :remote_port
@@ -16,7 +16,7 @@ module Dizby
16
16
  end
17
17
 
18
18
  def get_and_write_ports(ssh, output)
19
- @command.set_dynamic_mode unless @tunnel.server_port
19
+ @command.set_dynamic_mode if @strategy.server_port.zero?
20
20
 
21
21
  @channel =
22
22
  ssh.open_channel do |ch|
@@ -39,7 +39,7 @@ module Dizby
39
39
  ch[:triggered] = false
40
40
 
41
41
  ch.on_data { |_, data| ch[:data] << data }
42
- ch.on_extended_data { |_, _, data| @server.log(data.inspect) }
42
+ ch.on_extended_data { |_, _, data| @server.log.error(data.inspect) }
43
43
 
44
44
  ch.on_process do |_|
45
45
  if !ch[:triggered] && ch[:data] =~ /Running on port (\d+)\./
@@ -17,6 +17,8 @@ module Dizby
17
17
  @client_port = client_port
18
18
  end
19
19
 
20
+ attr_reader :server_port
21
+
20
22
  def write(ssh, stream)
21
23
  local_tunnel = create_local_tunnel(ssh, @server_port)
22
24
  remote_tunnel = create_remote_tunnel(ssh, @client_port)
@@ -14,6 +14,8 @@ module Dizby
14
14
  @server_port = server_port
15
15
  end
16
16
 
17
+ attr_reader :server_port
18
+
17
19
  def write(ssh, stream)
18
20
  local_tunnel = create_local_tunnel(ssh, @server_port)
19
21
 
@@ -4,14 +4,12 @@
4
4
  # License, v. 2.0. If a copy of the MPL was not distributed with this
5
5
  # file, You can obtain one at http://mozilla.org/MPL/2.0/.
6
6
 
7
- require 'shellwords'
8
-
9
7
  module Dizby
10
8
  class SpawnCommand
11
9
  TEMPLATE =
12
10
  "require'dizby/tunnel/spawned';Dizby::Spawned.%s('%s',%s){%s}".freeze
13
11
 
14
- def initialize(data, config = {})
12
+ def initialize(data, **config)
15
13
  @data = data
16
14
  @ruby_cmd = 'ruby'
17
15
  @uri = 'drb://'
@@ -30,9 +28,12 @@ module Dizby
30
28
  attr_accessor :ruby_cmd, :config, :uri
31
29
 
32
30
  def to_cmd
33
- # TODO: needs a lot of work...
34
- args = [@mode, @uri.shellescape, @config.inspect, @data.shellescape]
35
- [@ruby_cmd, '-e', %("#{TEMPLATE % args}")].join ' '
31
+ <<~EOF
32
+ #{@ruby_cmd} -e "$(cat <<DIZBY
33
+ #{format(TEMPLATE, @mode, @uri, @config.inspect, @data)}
34
+ DIZBY
35
+ )"
36
+ EOF
36
37
  end
37
38
  alias to_s to_cmd
38
39
 
@@ -16,7 +16,8 @@ module Dizby
16
16
 
17
17
  def self.dynamic(uri, config, &block)
18
18
  handle_spawned(uri, config, block) do |service|
19
- $stdout.puts "Running on port #{service.server.port}."
19
+ port = service.instance_variable_get(:@server).port
20
+ $stdout.puts "Running on port #{port}."
20
21
  end
21
22
  end
22
23
 
@@ -29,7 +30,7 @@ module Dizby
29
30
  service.close if service
30
31
  end
31
32
 
32
- service = Service.new(uri, obj, Marshal.load(config))
33
+ service = Service.new(uri: uri, front: obj, **config)
33
34
  yield service if block_given?
34
35
  ensure
35
36
  service.wait if service
@@ -5,5 +5,5 @@
5
5
  # file, You can obtain one at http://mozilla.org/MPL/2.0/.
6
6
 
7
7
  module Dizby
8
- VERSION = '2.0.0'.freeze
8
+ VERSION = '2.1.0'.freeze
9
9
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dizby
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0
4
+ version: 2.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nathan Currier
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-08-13 00:00:00.000000000 Z
11
+ date: 2016-08-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: net-ssh