execute 0.1.35 → 0.1.36

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/cmd.rb +16 -11
  3. metadata +1 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 6d65d79f1bc16f9472cc48aa7f5d346800f6c359
4
- data.tar.gz: b8f2bc998ec198049ebb11740681bde43e4257d4
3
+ metadata.gz: 7b4d882f012fc41a6d197fe677340d1cd163c251
4
+ data.tar.gz: 9869de1e75989008ae341953b9f1b06998b82063
5
5
  SHA512:
6
- metadata.gz: 49cbc3ceb5ab3b33597bfea0a281403d83c8a80d264ec588fce56bd0ad251cc23b9732f25a0545005a50777ef9be2c663353896f506aaad997ea993fe80317a7
7
- data.tar.gz: 84cd40d6473bbbcda35c14e4a2e182288b145159ce078a9254c16bc3c9a4e23c5ef7adddfdbc5ecc13ce45c9d8787d32ff28762fcc758292f920a582e28da8b6
6
+ metadata.gz: 92e498355cf119dd509c03856bbf1c90c30fb94adf02220565a9ee6c5a7c6d7144923e6da5fdee00ae55b1aa605c121cb34c40f14fc5630de34079835cdf9e8e
7
+ data.tar.gz: ef50e6daaf13a94c8b2bca18893370c97d0d4d50dc21616c204b66101637209078d5784824b1f756e764f3a3298bbe1266dc5059ae86d2af16636a7f603339c3
data/lib/cmd.rb CHANGED
@@ -37,6 +37,7 @@ class CMD < Hash
37
37
  puts "exit_code: #{self[:exit_code]}"
38
38
  end
39
39
 
40
+ puts "exit_code: #{self[:exit_code]}"
40
41
  if((self[:exit_code] != 0) && !self[:ignore_exit_code])
41
42
  exception_text = "Exit code: #{self[:exit_code]}"
42
43
  exception_text = "#{exception_text}\nError: '#{self[:error]}'"
@@ -47,20 +48,25 @@ class CMD < Hash
47
48
 
48
49
  def system
49
50
  begin
50
- output = {output: [], error: [] }
51
-
51
+ output = ''
52
+ error = ''
52
53
  Thread.abort_on_exception = true
53
54
  mutex = Mutex.new
55
+
54
56
  Open3.popen3(self[:command]) do |stdin, stdout, stderr, wait_thr|
55
57
  self[:pid] = wait_thr.pid
56
58
  {:output => stdout,:error => stderr}.each do |key, stream|
57
- Thread.new do
58
- while wait_thr.alive? do
59
+ Thread.new do
60
+ while wait_thr.alive? do
59
61
  if(!(char = stream.getc).nil?)
60
- mutex.synchronize do
61
- output[key] << char
62
- putc char if(self[:echo_output])
63
- end
62
+ case key
63
+ when :output
64
+ output << char
65
+ when :error
66
+ error << char
67
+ end
68
+
69
+ mutex.synchronize { putc char if(self[:echo_output]) }
64
70
  else
65
71
  sleep(0.1)
66
72
  end
@@ -70,14 +76,13 @@ class CMD < Hash
70
76
 
71
77
  wait_thr.join
72
78
 
73
- self[:output] = output[:output].join unless(output[:output].empty?)
74
- self[:error] = output[:error].join unless(output[:error].empty?)
79
+ self[:output] = output.join unless(output.empty?)
80
+ self[:error] = error.join unless(error.empty?)
75
81
  self[:exit_code] = wait_thr.value.to_i
76
82
  end
77
83
  rescue Exception => e
78
84
  self[:error] = "#{self[:error]}\nException: #{e.to_s}"
79
85
  self[:exit_code]=1 unless(self[:exit_code].nil? || (self[:exit_code] == 0))
80
- raise e
81
86
  rescue => e
82
87
  self[:error] = "#{self[:error]}\nException: #{e.to_s}"
83
88
  self[:exit_code]=1 unless(self[:exit_code].nil? || (self[:exit_code] == 0))
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: execute
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.35
4
+ version: 0.1.36
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kevin Marshall