komenda 0.1.3 → 0.1.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +4 -3
- data/lib/komenda/process.rb +2 -1
- data/lib/komenda/process_builder.rb +32 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 80c7a7ea911cf08c74bd57d47c5d29f2e3200b66
|
4
|
+
data.tar.gz: f78bddae9c9776b3103c0c488447416ffc86cebf
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 41ca723a231269e4b5c67d715a8f9415ef15cbfadc3a45bdb84aa8540d4b8fd1784e9ffe63ca25f5edefb3c1745a64f3ef770b20f92c2a43058b29694a31fc23
|
7
|
+
data.tar.gz: 355cb97d2e3d2c9aafcf09e423358c09883ab8c1ce06bb980777cb5cb4c0aadb8111fc3118985aa466bfe0434323d99d19d6faa2eae2f9cc676e592a1cb13ca8
|
data/README.md
CHANGED
@@ -30,9 +30,10 @@ result = Komenda.run(['echo', '-n', 'hello'])
|
|
30
30
|
result.output # => "hello"
|
31
31
|
```
|
32
32
|
|
33
|
-
The `run()` method has a second argument `options`, which
|
34
|
-
- **`env`** (Hash):
|
35
|
-
- **`
|
33
|
+
The `run()` method has a second argument `options`, which accepts these optional keys:
|
34
|
+
- **`env`** (Hash): Additional environment variables to set.
|
35
|
+
- **`reset_bundler_env`** (Boolean): Reset environment variables from your current Ruby bundle using `Bundler.clean_env`. Defaults to `true`.
|
36
|
+
- **`cwd`** (String): Directory to change to before running the process.
|
36
37
|
|
37
38
|
### Advanced usage
|
38
39
|
The `create()` method creates a `Process` which can be `run()` (or `start()`ed as a Thread).
|
data/lib/komenda/process.rb
CHANGED
@@ -76,7 +76,8 @@ module Komenda
|
|
76
76
|
def run_process(process_builder)
|
77
77
|
opts = {}
|
78
78
|
opts[:chdir] = process_builder.cwd unless process_builder.cwd.nil?
|
79
|
-
|
79
|
+
opts[:unsetenv_others] = true
|
80
|
+
run_popen3(process_builder.env_final, process_builder.command, opts)
|
80
81
|
rescue Exception => exception
|
81
82
|
emit(:error, exception)
|
82
83
|
raise exception
|
@@ -1,7 +1,9 @@
|
|
1
1
|
module Komenda
|
2
2
|
class ProcessBuilder
|
3
3
|
attr_reader :command
|
4
|
+
|
4
5
|
attr_reader :env
|
6
|
+
attr_reader :reset_bundler_env
|
5
7
|
attr_reader :cwd
|
6
8
|
attr_reader :events
|
7
9
|
|
@@ -9,7 +11,8 @@ module Komenda
|
|
9
11
|
# @param [Hash] options
|
10
12
|
def initialize(command, options = {})
|
11
13
|
defaults = {
|
12
|
-
env:
|
14
|
+
env: {},
|
15
|
+
reset_bundler_env: true,
|
13
16
|
cwd: nil,
|
14
17
|
events: {}
|
15
18
|
}
|
@@ -17,6 +20,7 @@ module Komenda
|
|
17
20
|
|
18
21
|
self.command = command
|
19
22
|
self.env = options[:env]
|
23
|
+
self.reset_bundler_env = options[:reset_bundler_env]
|
20
24
|
self.cwd = options[:cwd]
|
21
25
|
self.events = options[:events]
|
22
26
|
end
|
@@ -40,6 +44,11 @@ module Komenda
|
|
40
44
|
@env = Hash[env.to_hash.map { |k, v| [String(k), String(v)] }]
|
41
45
|
end
|
42
46
|
|
47
|
+
# @param [Boolean] reset
|
48
|
+
def reset_bundler_env=(reset)
|
49
|
+
@reset_bundler_env = reset ? true : false
|
50
|
+
end
|
51
|
+
|
43
52
|
# @param [String] cwd
|
44
53
|
def cwd=(cwd = nil)
|
45
54
|
@cwd = cwd.nil? ? nil : String(cwd)
|
@@ -49,5 +58,27 @@ module Komenda
|
|
49
58
|
def events=(events)
|
50
59
|
@events = Hash[events.to_hash.map { |k, v| [k.to_sym, v.to_proc] }]
|
51
60
|
end
|
61
|
+
|
62
|
+
# @return [Hash]
|
63
|
+
def env_final
|
64
|
+
if reset_bundler_env && Object.const_defined?('Bundler')
|
65
|
+
env_original = bundler_clean_env
|
66
|
+
else
|
67
|
+
env_original = ENV.to_hash
|
68
|
+
end
|
69
|
+
env_original.merge(env)
|
70
|
+
end
|
71
|
+
|
72
|
+
private
|
73
|
+
|
74
|
+
# @return [Hash]
|
75
|
+
def bundler_clean_env
|
76
|
+
if Bundler.methods(false).include?(:clean_env)
|
77
|
+
Bundler.clean_env
|
78
|
+
else
|
79
|
+
# For Bundler < 1.12.0
|
80
|
+
Bundler.with_clean_env { ENV.to_hash }
|
81
|
+
end
|
82
|
+
end
|
52
83
|
end
|
53
84
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: komenda
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Cargo Media
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2016-03-
|
12
|
+
date: 2016-03-18 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: events
|