shexecutor 0.0.9 → 0.0.10

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: aad6688b5702d0fe813942cd1749b98d0052550e
4
- data.tar.gz: bb27e39942ee31f1676dc14246d62a09a0566efb
3
+ metadata.gz: 3dbf10b351afc189794bb119a82b063c7c68bb90
4
+ data.tar.gz: 52b64aa38d6c94ca2bd678a1a6bceb854fd5acbc
5
5
  SHA512:
6
- metadata.gz: c69fbb39f9224e05fc0458fc838815a27325af30f17fa25dd0e230e6867f3ccdc0ef54e7052a2ac6b482f99fc259e5fffc92afaa8102c437366dd78936e749e0
7
- data.tar.gz: 9343f519a5f804a3b1eeac85f91b85138f75440f78f0fa8710a49379d5ddb30fe098ebe097c99af2a1aa62c34e7c3c5f7aa3e39e55b50bd8d498144162f85bdf
6
+ metadata.gz: 8104a387512908469f7bf9d9887900c848905956e4a03fd75e6a69d30218922b2e67a49b82ff0c4353b5dd89fb4b0d1e36f23d9d9c1a6c3878378aede0caba2a
7
+ data.tar.gz: 3185e4df180990e334bb2240cca83dc01423de2e40c18ad546c7ff6b4e51dfb4614f80d7511bc7607c5e0b21cdbc6fe3bebafb69363197f3f556ff1317a1227b
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- shexecutor (0.0.8)
4
+ shexecutor (0.0.9)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
data/README.md CHANGED
@@ -5,7 +5,7 @@ SHExecutor is a convenience wrapper for executing shell commands from with-in a
5
5
  ## It supports:
6
6
  - blocking indefinitely, on exit you can get status, stdout and stderr
7
7
  - blocking with timeout, on exit you can get status, stdout, stderr, timeout exception (then output streams are not available)
8
- - non-blocking, then you get no output streams, but status of the forked process
8
+ - non-blocking, then you get handles to the output streams and the status of the forked process
9
9
  - replacement, then you get a replaced process and none of the above
10
10
  - redirecting of stderr and stdout, separately, to file, with the option to overwrite or append
11
11
 
@@ -65,12 +65,12 @@ Or install it yourself as:
65
65
 
66
66
  ```
67
67
  iut = SHExecutor::Executor.new({:wait_for_completion => true, :application_path => "/bin/echo", :params => ["hello world"]})
68
- iut.execute
68
+ result = iut.execute
69
69
  iut.flush
70
70
  puts "After execution status is: #{iut.status}"
71
71
  # "no longer executing"
72
72
  puts "out: #{iut.stdout} err: #{iut.stderr}"
73
- puts "#{iut.result.pid} success? #{iut.result.success?} with code #{iut.result.exitstatus}"
73
+ puts "#{result.pid} success? #{result.success?} with code #{result.exitstatus}"
74
74
  puts "For more see: #{iut.result.methods}"
75
75
  ```
76
76
 
@@ -78,7 +78,7 @@ puts "For more see: #{iut.result.methods}"
78
78
 
79
79
  ```
80
80
  iut = SHExecutor::Executor.new({:timeout => 1, :wait_for_completion => true, :application_path => "/bin/sleep", :params => ["2"]})
81
- iut.execute
81
+ result = iut.execute
82
82
  # Timeout::Error gets raised. The spawned process continues and needs to be managed separately if required.
83
83
  ```
84
84
 
@@ -86,8 +86,9 @@ iut.execute
86
86
 
87
87
  ```
88
88
  iut = SHExecutor::Executor.new({:wait_for_completion => false, :application_path => "/bin/sleep", :params => ["1"]})
89
- iut.execute
89
+ stdout, stderr, thr = iut.execute
90
90
  puts "Status: #{iut.status}"
91
+ puts "PID: #{thr.pid}"
91
92
  # "run" or "sleep"
92
93
  sleep 2
93
94
  puts "Status: #{iut.status}"
@@ -1,3 +1,3 @@
1
1
  module SHExecutor
2
- VERSION = "0.0.9"
2
+ VERSION = "0.0.10"
3
3
  end
data/lib/shexecutor.rb CHANGED
@@ -19,14 +19,21 @@ module SHExecutor
19
19
  end
20
20
 
21
21
  class Executor
22
- attr_accessor :options
22
+ public
23
+
23
24
  attr_accessor :stdout
24
25
  attr_accessor :stderr
26
+ attr_accessor :options
27
+
28
+ private
29
+
25
30
  attr_accessor :result
26
31
  attr_accessor :pid
27
32
  attr_accessor :data_out
28
33
  attr_accessor :data_err
29
34
 
35
+ public
36
+
30
37
  def initialize(options = ::SHExecutor::default_options)
31
38
  # set default options
32
39
  @options = ::SHExecutor::default_options.dup
@@ -50,10 +57,6 @@ module SHExecutor
50
57
  @result.value
51
58
  end
52
59
 
53
- def possible_injection?(application_path)
54
- (@options[:protect_against_injection]) and (@options[:application_path].include?(" ") or @options[:application_path].tainted?)
55
- end
56
-
57
60
  def validate
58
61
  errors = []
59
62
  if (@options[:protect_against_injection]) and (!@options[:application_path].nil? and @options[:application_path].strip != "")
@@ -104,8 +107,31 @@ module SHExecutor
104
107
  stderr_to_file if (@options[:stderr_path])
105
108
  end
106
109
 
110
+ def execute_blocking(application_path, params = nil)
111
+ executor = SHExecutor::Executor.new({:wait_for_completion => true, :application_path => application_path, :params => params})
112
+ result = executor.execute
113
+ executor.flush
114
+ return result, executor.stdout, executor.stderr
115
+ end
116
+
117
+ def execute_and_timeout_after(application_path, params = nil, timeout = -1)
118
+ executor = SHExecutor::Executor.new({:timeout => timeout, :wait_for_completion => true, :application_path => application_path, :params => params})
119
+ result = executor.execute
120
+ executor.flush
121
+ return result, executor.stdout, executor.stderr
122
+ end
123
+
124
+ def execute_non_blocking(application_path, params = nil)
125
+ executor = SHExecutor::Executor.new({:wait_for_completion => false, :application_path => application_path, :params => params})
126
+ executor.execute
127
+ end
128
+
107
129
  private
108
130
 
131
+ def possible_injection?(application_path)
132
+ (@options[:protect_against_injection]) and (@options[:application_path].include?(" ") or @options[:application_path].tainted?)
133
+ end
134
+
109
135
  def buffer_to_file(buffer, path, append)
110
136
  if not append
111
137
  FileUtils.rm_f(path)
@@ -199,6 +225,7 @@ module SHExecutor
199
225
  def fork_process
200
226
  validate
201
227
  @stdin_stream, @stdout_stream, @stderr_stream, @result = Open3::popen3(@options[:application_path], *@options[:params])
228
+ return @result, @stdout_stream, @stderr_stream
202
229
  end
203
230
 
204
231
  def should_timeout?
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: shexecutor
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.9
4
+ version: 0.0.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ernst van Graan