execute 0.1.35 → 0.1.36

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.
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