cmds 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/lib/cmds/cmd.rb +16 -5
- data/lib/cmds/spawn.rb +10 -3
- data/lib/cmds/version.rb +1 -1
- data/spec/cmds/env_spec.rb +5 -3
- 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: 319129e56b13805451ef585ce44e9aef1029df19
|
4
|
+
data.tar.gz: dab4a172aa3f8dcee5f7d73b86b797cccd3e51c6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 321c3539eb6b193c3226426aeedeb4cd61088335c20bc247193f7c1b89bd45a9cf20e9f2da88826dd8627dfa15a67632a07e4770107990c01d43a8b9a475d738
|
7
|
+
data.tar.gz: 8ac9702dda8dca0f53e1f1f80a64c73ac246d4763d23227ecb3605f82d81a1a74208f64dc83bc97b22990fa6cb572419239abc301af8d4e28f45ae9a3f220544
|
data/lib/cmds/cmd.rb
CHANGED
@@ -79,6 +79,12 @@ module Cmds
|
|
79
79
|
attr_reader :format
|
80
80
|
|
81
81
|
|
82
|
+
# directory to run the command in.
|
83
|
+
#
|
84
|
+
# @return [nil | String]
|
85
|
+
attr_reader :chdir
|
86
|
+
|
87
|
+
|
82
88
|
# construct a Cmd.
|
83
89
|
#
|
84
90
|
# @param [String] template
|
@@ -101,6 +107,9 @@ module Cmds
|
|
101
107
|
# @option opts [:squish, :pretty] :format
|
102
108
|
# sets the {#format} attribute.
|
103
109
|
#
|
110
|
+
# @option opts [nil | String] :chdir
|
111
|
+
# sets the {#chdir} attribute.
|
112
|
+
#
|
104
113
|
def initialize template, **opts
|
105
114
|
Cmds.debug "Cmd constructing...",
|
106
115
|
template: template,
|
@@ -114,6 +123,7 @@ module Cmds
|
|
114
123
|
@env = opts[:env] || {}
|
115
124
|
@format = opts[:format] || :squish
|
116
125
|
@env_mode = opts[:env_mode] || :inline
|
126
|
+
@chdir = opts[:chdir] || nil
|
117
127
|
end # #initialize
|
118
128
|
|
119
129
|
|
@@ -126,6 +136,7 @@ module Cmds
|
|
126
136
|
assert: @assert,
|
127
137
|
env: @env,
|
128
138
|
format: @format,
|
139
|
+
chdir: @chdir,
|
129
140
|
}
|
130
141
|
end
|
131
142
|
|
@@ -180,9 +191,10 @@ module Cmds
|
|
180
191
|
io_block: io_block
|
181
192
|
|
182
193
|
Cmds.spawn prepare(*args, **kwds),
|
183
|
-
@input,
|
194
|
+
input: @input,
|
184
195
|
# include env if mode is spawn argument
|
185
|
-
(@env_mode == :spawn_arg ? @env : {}),
|
196
|
+
env: (@env_mode == :spawn_arg ? @env : {}),
|
197
|
+
chdir: @chdir,
|
186
198
|
&io_block
|
187
199
|
end # #stream
|
188
200
|
|
@@ -230,10 +242,9 @@ module Cmds
|
|
230
242
|
|
231
243
|
status = Cmds.spawn(
|
232
244
|
cmd,
|
233
|
-
# we deal with input in the block
|
234
|
-
nil,
|
235
245
|
# include env if mode is spawn argument
|
236
|
-
(@env_mode == :spawn_arg ? @env : {}),
|
246
|
+
env: (@env_mode == :spawn_arg ? @env : {}),
|
247
|
+
chdir: @chdir
|
237
248
|
) do |io|
|
238
249
|
# send the input to stream, which sends it to spawn
|
239
250
|
io.in = input
|
data/lib/cmds/spawn.rb
CHANGED
@@ -45,11 +45,15 @@ module Cmds
|
|
45
45
|
# @raise [ArgumentError]
|
46
46
|
# if `&io_block` has arity greater than 1.
|
47
47
|
#
|
48
|
-
def self.spawn cmd,
|
49
|
-
Cmds.debug "entering Cmds#
|
48
|
+
def self.spawn cmd, **opts, &io_block
|
49
|
+
Cmds.debug "entering Cmds#spawn",
|
50
50
|
cmd: cmd,
|
51
|
-
|
51
|
+
opts: opts,
|
52
52
|
io_block: io_block
|
53
|
+
|
54
|
+
env = opts[:env] || {}
|
55
|
+
input = opts[:input]
|
56
|
+
chdir = opts[:chdir]
|
53
57
|
|
54
58
|
# create the handler that will be yielded to the input block
|
55
59
|
handler = Cmds::IOHandler.new
|
@@ -80,6 +84,9 @@ module Cmds
|
|
80
84
|
|
81
85
|
# hash of options that will be passed to `spawn`
|
82
86
|
spawn_opts = {}
|
87
|
+
|
88
|
+
# add chdir if provided
|
89
|
+
spawn_opts[:chdir] = chdir if chdir
|
83
90
|
|
84
91
|
Cmds.debug "looking at input...",
|
85
92
|
input: input
|
data/lib/cmds/version.rb
CHANGED
data/spec/cmds/env_spec.rb
CHANGED
@@ -1,18 +1,20 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe "Cmds ENV vars" do
|
4
|
+
r_echo_cmd = %{ruby -e "puts ENV['BLAH']"}
|
5
|
+
|
4
6
|
it "sets basic (path-like) string ENV var" do
|
5
|
-
cmd = Cmds::Cmd.new
|
7
|
+
cmd = Cmds::Cmd.new r_echo_cmd, env: {BLAH: "x:y:z"}
|
6
8
|
expect(cmd.chomp!).to eq "x:y:z"
|
7
9
|
end
|
8
10
|
|
9
11
|
it "sets a string with spaces in it correctly" do
|
10
|
-
cmd = Cmds::Cmd.new
|
12
|
+
cmd = Cmds::Cmd.new r_echo_cmd, env: {BLAH: "hey there"}
|
11
13
|
expect(cmd.chomp!).to eq "hey there"
|
12
14
|
end
|
13
15
|
|
14
16
|
it "accepts string keys" do
|
15
|
-
cmd = Cmds::Cmd.new
|
17
|
+
cmd = Cmds::Cmd.new r_echo_cmd, env: {
|
16
18
|
'BLAH' => [
|
17
19
|
"/usr/local/bin",
|
18
20
|
"/usr/bin",
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cmds
|
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
|
- nrser
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-04-
|
11
|
+
date: 2017-04-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: nrser
|