em-systemcommand 1.2.0 → 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/em-systemcommand/pipe.rb +13 -4
- data/lib/em-systemcommand/version.rb +1 -1
- data/spec/em-systemcommand/pipe_spec.rb +19 -2
- metadata +3 -3
@@ -17,12 +17,20 @@ module EventMachine
|
|
17
17
|
@outputbuffer.string
|
18
18
|
end
|
19
19
|
|
20
|
-
|
20
|
+
##
|
21
|
+
# Convenience method to create a callback that matches a regular
|
22
|
+
# expression
|
21
23
|
def match regexp, opt = {}, &block
|
22
|
-
opt = { in: :line }.merge opt
|
24
|
+
opt = { in: :line, match: :first }.merge opt
|
23
25
|
(opt[:in] == :output ? receive_update_callbacks : receive_line_callbacks) << lambda do |data|
|
24
|
-
|
25
|
-
|
26
|
+
matches = data.scan regexp
|
27
|
+
if matches.length > 0
|
28
|
+
case opt[:match]
|
29
|
+
when :first
|
30
|
+
block.call *matches[0]
|
31
|
+
when :last
|
32
|
+
block.call *matches[matches.length-1]
|
33
|
+
end
|
26
34
|
end
|
27
35
|
end
|
28
36
|
end
|
@@ -122,6 +130,7 @@ module EventMachine
|
|
122
130
|
end
|
123
131
|
end
|
124
132
|
|
133
|
+
##
|
125
134
|
# Invoked when the connection is terminated. Calls
|
126
135
|
# `unbind(@name)` on master.
|
127
136
|
def unbind
|
@@ -128,7 +128,7 @@ describe 'Pipe' do
|
|
128
128
|
received = []
|
129
129
|
EM.run do
|
130
130
|
EM::SystemCommand.execute 'echo "-123-"; echo "-456-"' do |on|
|
131
|
-
on.stdout.match /-([0-9]+)-/, in: :line do |
|
131
|
+
on.stdout.match /-([0-9]+)-/, in: :line do |number|
|
132
132
|
received << number
|
133
133
|
end
|
134
134
|
|
@@ -144,7 +144,7 @@ describe 'Pipe' do
|
|
144
144
|
received = []
|
145
145
|
EM.run do
|
146
146
|
EM::SystemCommand.execute %q{ruby -e '$stdout.sync = true; print "-123-\r"; sleep 0.1; print "-456-\r"; exit 0'} do |on|
|
147
|
-
on.stdout.match /-([0-9]+)-/, in: :output do |
|
147
|
+
on.stdout.match /-([0-9]+)-/, in: :output do |number|
|
148
148
|
received << number
|
149
149
|
end
|
150
150
|
|
@@ -155,5 +155,22 @@ describe 'Pipe' do
|
|
155
155
|
end
|
156
156
|
end
|
157
157
|
end
|
158
|
+
|
159
|
+
it 'should match last occurence on receive_update' do
|
160
|
+
received = []
|
161
|
+
EM.run do
|
162
|
+
EM::SystemCommand.execute %q{ruby -e '$stdout.sync = true; print "-123-\n"; sleep 0.1; print "-456-\n"; exit 0'} do |on|
|
163
|
+
on.stdout.match /-([0-9]+)-/, match: :last, in: :output do |number|
|
164
|
+
received << number
|
165
|
+
end
|
166
|
+
|
167
|
+
on.success do
|
168
|
+
EM.stop_event_loop
|
169
|
+
received.should == ["123","456"]
|
170
|
+
end
|
171
|
+
end
|
172
|
+
end
|
173
|
+
end
|
174
|
+
|
158
175
|
end
|
159
176
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: em-systemcommand
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.0.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -163,7 +163,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
163
163
|
version: '0'
|
164
164
|
segments:
|
165
165
|
- 0
|
166
|
-
hash:
|
166
|
+
hash: 1829514624315752226
|
167
167
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
168
168
|
none: false
|
169
169
|
requirements:
|
@@ -172,7 +172,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
172
172
|
version: '0'
|
173
173
|
segments:
|
174
174
|
- 0
|
175
|
-
hash:
|
175
|
+
hash: 1829514624315752226
|
176
176
|
requirements: []
|
177
177
|
rubyforge_project:
|
178
178
|
rubygems_version: 1.8.24
|