komenda 0.1.3 → 0.1.4
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.
- 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
|