ruby_expect 1.5 → 1.6.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/ruby_expect/expect.rb +40 -0
  3. metadata +18 -4
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: aae7564291f071fcddf3d57a076cd2fa88c26cbb
4
- data.tar.gz: 49e142d0d9a17e8c27461938915573cc7ccae623
3
+ metadata.gz: 64ab7f0e6b76231b1d7d190291a40dc31cc2f7c9
4
+ data.tar.gz: 57c2411697a5f8360015d23906403a2f56094090
5
5
  SHA512:
6
- metadata.gz: fe85ffc733d458dfa2d026a4f836acd878edf2188dbf2fb69802fa760d84ba7770066e2ba2181827b2ff9ab2aac6c8da24f89d11e6d9a62120e3f17f5aad0069
7
- data.tar.gz: 79bca0c7efff5f225082680cb5a34f935902012770ef0ba8c5afe380fc3834cc8701943191849998245a8b5053ae1b6037fef3b6e75ab1f8abb70e5dec663158
6
+ metadata.gz: 0c0e90e541aaab4c945292ba687d1dc416ea5453ee3746aff47cd23054fe43f80744f12f0579ac8f0f0f3908f6751d161b22ae0ac52c8fc4fd18ec836c1a4d7b
7
+ data.tar.gz: b45370d25213967730c4e023b7e87747f9296bfe11776174eaf5c7feeef57f2d5eddb8d94e7590e481f36b734742f2358a0745f3a100821eaa26b706bdfc1255
@@ -17,6 +17,7 @@
17
17
  require 'thread'
18
18
  require 'ruby_expect/procedure'
19
19
  require 'pty'
20
+ require 'io/console'
20
21
 
21
22
  #####
22
23
  #
@@ -276,7 +277,46 @@ module RubyExpect
276
277
  return true
277
278
  end
278
279
 
280
+ ###
281
+ # Provides the ability to hand control back to the user and
282
+ # allow them to interact with the spawned process.
283
+ def interact
284
+ if ($stdin.tty?)
285
+ $stdin.raw do |stdin|
286
+ interact_loop(stdin)
287
+ end
288
+ else
289
+ interact_loop($stdin)
290
+ end
291
+ end
292
+
279
293
  private
294
+ def interact_loop stdin
295
+ done = false
296
+ while (! done)
297
+ avail = IO.select([@read_fh, stdin])
298
+ avail[0].each do |fh|
299
+ if (fh == stdin)
300
+ if (stdin.eof?)
301
+ done = true
302
+ else
303
+ c = stdin.read_nonblock(1)
304
+ $stdout.flush
305
+ @write_fh.write(c)
306
+ @write_fh.flush
307
+ end
308
+ elsif (fh == @read_fh)
309
+ if (@read_fh.eof?)
310
+ done = true
311
+ else
312
+ $stdout.write(@read_fh.read_nonblock(1024))
313
+ $stdout.flush
314
+ end
315
+ end
316
+ end
317
+ end
318
+ end
319
+
280
320
  def read_proc
281
321
  begin
282
322
  ready = IO.select([@read_fh], nil, nil, 1)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby_expect
3
3
  version: !ruby/object:Gem::Version
4
- version: '1.5'
4
+ version: 1.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrew Bates
@@ -9,7 +9,21 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
  date: 2014-10-27 00:00:00.000000000 Z
12
- dependencies: []
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: minitest
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ~>
18
+ - !ruby/object:Gem::Version
19
+ version: '5.3'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ version: '5.3'
13
27
  description: Ruby implementation for send/expect interaction
14
28
  email: abates@omeganetserv.com
15
29
  executables: []
@@ -28,12 +42,12 @@ require_paths:
28
42
  - lib
29
43
  required_ruby_version: !ruby/object:Gem::Requirement
30
44
  requirements:
31
- - - ">="
45
+ - - '>='
32
46
  - !ruby/object:Gem::Version
33
47
  version: '0'
34
48
  required_rubygems_version: !ruby/object:Gem::Requirement
35
49
  requirements:
36
- - - ">="
50
+ - - '>='
37
51
  - !ruby/object:Gem::Version
38
52
  version: '0'
39
53
  requirements: []