obfusk-util 0.0.1.SNAPSHOT.20130725000153 → 0.4.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/README.md +132 -39
- data/Rakefile +16 -0
- data/lib/obfusk/util/all.rb +4 -3
- data/lib/obfusk/util/cmd.rb +3 -3
- data/lib/obfusk/util/data.rb +4 -4
- data/lib/obfusk/util/die.rb +3 -3
- data/lib/obfusk/util/fs.rb +3 -3
- data/lib/obfusk/util/message.rb +6 -12
- data/lib/obfusk/util/misc.rb +3 -3
- data/lib/obfusk/util/module.rb +11 -3
- data/lib/obfusk/util/opt.rb +3 -3
- data/lib/obfusk/util/os.rb +3 -3
- data/lib/obfusk/util/process.rb +3 -3
- data/lib/obfusk/util/run.rb +102 -9
- data/lib/obfusk/util/sh.rb +102 -0
- data/lib/obfusk/util/spec.rb +3 -3
- data/lib/obfusk/util/struct.rb +5 -4
- data/lib/obfusk/util/term.rb +3 -3
- data/lib/obfusk/util/valid.rb +4 -4
- data/lib/obfusk/util/version.rb +2 -2
- data/obfusk-util.gemspec +1 -3
- data/spec/obfusk/util/cmd_spec.rb +3 -3
- data/spec/obfusk/util/data_spec.rb +3 -3
- data/spec/obfusk/util/die_spec.rb +3 -3
- data/spec/obfusk/util/fs_spec.rb +3 -3
- data/spec/obfusk/util/message_spec.rb +3 -3
- data/spec/obfusk/util/module_spec.rb +19 -3
- data/spec/obfusk/util/opt_spec.rb +3 -3
- data/spec/obfusk/util/os_spec.rb +4 -4
- data/spec/obfusk/util/process_spec.rb +4 -4
- data/spec/obfusk/util/run_spec.rb +164 -8
- data/spec/obfusk/util/sh_spec.rb +125 -0
- data/spec/obfusk/util/spec_spec.rb +3 -3
- data/spec/obfusk/util/struct_spec.rb +3 -3
- data/spec/obfusk/util/term_spec.rb +3 -3
- data/spec/obfusk/util/valid_spec.rb +3 -3
- metadata +48 -46
@@ -2,10 +2,10 @@
|
|
2
2
|
#
|
3
3
|
# File : obfusk/util/run_spec.rb
|
4
4
|
# Maintainer : Felix C. Stegerman <flx@obfusk.net>
|
5
|
-
# Date :
|
5
|
+
# Date : 2014-02-19
|
6
6
|
#
|
7
|
-
# Copyright : Copyright (C)
|
8
|
-
# Licence :
|
7
|
+
# Copyright : Copyright (C) 2014 Felix C. Stegerman
|
8
|
+
# Licence : LGPLv3+
|
9
9
|
#
|
10
10
|
# -- ; }}}1
|
11
11
|
|
@@ -78,10 +78,166 @@ describe 'obfusk/util/run' do
|
|
78
78
|
end
|
79
79
|
end # }}}1
|
80
80
|
|
81
|
+
context 'capture2' do # {{{1
|
82
|
+
it 'succeed' do
|
83
|
+
o, s = ou.capture2 'bash', '-c', 'echo $FOO',
|
84
|
+
env: { 'FOO' => 'foo' }
|
85
|
+
expect(s.exitstatus).to eq(0)
|
86
|
+
expect(o).to eq("foo\n")
|
87
|
+
end
|
88
|
+
it 'fail (no shell)' do
|
89
|
+
expect { ou.capture2 'echo THIS IS NOT A COMMAND' } .to \
|
90
|
+
raise_error(ou::RunError, /No such file or directory/) # ????
|
91
|
+
end
|
92
|
+
end # }}}1
|
93
|
+
|
94
|
+
context 'capture2e' do # {{{1
|
95
|
+
it 'succeed' do
|
96
|
+
oe, s = ou.capture2e 'bash', '-c', 'echo $FOO >&2; pwd',
|
97
|
+
env: { 'FOO' => 'foo' }, chdir: '/'
|
98
|
+
expect(s.exitstatus).to eq(0)
|
99
|
+
expect(oe).to eq("foo\n/\n")
|
100
|
+
end
|
101
|
+
it 'fail (no shell)' do
|
102
|
+
expect { ou.capture2e 'echo THIS IS NOT A COMMAND' } .to \
|
103
|
+
raise_error(ou::RunError, /No such file or directory/) # ????
|
104
|
+
end
|
105
|
+
end # }}}1
|
106
|
+
|
107
|
+
context 'capture3' do # {{{1
|
108
|
+
it 'succeed' do
|
109
|
+
o, e, s = ou.capture3 'bash', '-c', 'echo $FOO >&2; pwd',
|
110
|
+
env: { 'FOO' => 'foo' }, chdir: '/'
|
111
|
+
expect(s.exitstatus).to eq(0)
|
112
|
+
expect(o).to eq("/\n")
|
113
|
+
expect(e).to eq("foo\n")
|
114
|
+
end
|
115
|
+
it 'fail (no shell)' do
|
116
|
+
expect { ou.capture3 'echo THIS IS NOT A COMMAND' } .to \
|
117
|
+
raise_error(ou::RunError, /No such file or directory/) # ????
|
118
|
+
end
|
119
|
+
end # }}}1
|
120
|
+
|
121
|
+
context 'pipeline' do # {{{1
|
122
|
+
it 'succeed' do
|
123
|
+
ri, wi = IO.pipe; wi.puts %w{ foo bar baz foo }; wi.close
|
124
|
+
ro, wo = IO.pipe
|
125
|
+
ss = ou.pipeline ['sort'], %w{ uniq -c }, in: ri, out: wo;
|
126
|
+
wo.close
|
127
|
+
o = ro.read; ro.close; ri.close
|
128
|
+
expect(ss.length).to eq(2)
|
129
|
+
expect(ss[0].exitstatus).to eq(0)
|
130
|
+
expect(ss[1].exitstatus).to eq(0)
|
131
|
+
expect(o).to match(/\A +1 bar\n +1 baz\n +2 foo\n\z/)
|
132
|
+
end
|
133
|
+
it 'fail (no shell)' do
|
134
|
+
expect { ou.pipeline ['echo THIS IS NOT A COMMAND'] } .to \
|
135
|
+
raise_error(ou::RunError, /No such file or directory/) # ????
|
136
|
+
end
|
137
|
+
end # }}}1
|
138
|
+
|
139
|
+
context 'pipeline_r' do # {{{1
|
140
|
+
it 'succeed' do
|
141
|
+
ri, wi = IO.pipe; wi.puts %w{ foo bar baz foo }; wi.close
|
142
|
+
ou.pipeline_r(['sort'], %w{ uniq -c }, in: ri) do |o,ts|
|
143
|
+
expect(ts.length).to eq(2)
|
144
|
+
expect(ts[0].value.exitstatus).to eq(0)
|
145
|
+
expect(ts[1].value.exitstatus).to eq(0)
|
146
|
+
expect(o.read).to match(/\A +1 bar\n +1 baz\n +2 foo\n\z/)
|
147
|
+
end
|
148
|
+
end
|
149
|
+
it 'fail (no shell)' do
|
150
|
+
expect { ou.pipeline_r ['echo THIS IS NOT A COMMAND'] } .to \
|
151
|
+
raise_error(ou::RunError, /No such file or directory/) # ????
|
152
|
+
end
|
153
|
+
end # }}}1
|
154
|
+
|
155
|
+
context 'pipeline_rw' do # {{{1
|
156
|
+
it 'succeed' do
|
157
|
+
ou.pipeline_rw(['sort'], %w{ uniq -c }) do |i,o,ts|
|
158
|
+
i.puts %w{ foo bar baz foo }; i.close
|
159
|
+
expect(ts.length).to eq(2)
|
160
|
+
expect(ts[0].value.exitstatus).to eq(0)
|
161
|
+
expect(ts[1].value.exitstatus).to eq(0)
|
162
|
+
expect(o.read).to match(/\A +1 bar\n +1 baz\n +2 foo\n\z/)
|
163
|
+
end
|
164
|
+
end
|
165
|
+
it 'fail (no shell)' do
|
166
|
+
expect { ou.pipeline_rw ['echo THIS IS NOT A COMMAND'] } .to \
|
167
|
+
raise_error(ou::RunError, /No such file or directory/) # ????
|
168
|
+
end
|
169
|
+
end # }}}1
|
170
|
+
|
171
|
+
context 'pipeline_start' do # {{{1
|
172
|
+
it 'succeed' do
|
173
|
+
ri, wi = IO.pipe; wi.puts %w{ foo bar baz foo }; wi.close
|
174
|
+
ro, wo = IO.pipe
|
175
|
+
ou.pipeline_start(['sort'], %w{ uniq -c }, in: ri, out: wo) do |ts|
|
176
|
+
expect(ts.length).to eq(2)
|
177
|
+
expect(ts[0].value.exitstatus).to eq(0)
|
178
|
+
expect(ts[1].value.exitstatus).to eq(0)
|
179
|
+
end
|
180
|
+
wo.close; o = ro.read; ro.close; ri.close
|
181
|
+
expect(o).to match(/\A +1 bar\n +1 baz\n +2 foo\n\z/)
|
182
|
+
end
|
183
|
+
it 'fail (no shell)' do
|
184
|
+
expect { ou.pipeline_start ['echo THIS IS NOT A COMMAND'] } .to \
|
185
|
+
raise_error(ou::RunError, /No such file or directory/) # ????
|
186
|
+
end
|
187
|
+
end # }}}1
|
188
|
+
|
189
|
+
context 'pipeline_w' do # {{{1
|
190
|
+
it 'succeed' do
|
191
|
+
ro, wo = IO.pipe
|
192
|
+
ou.pipeline_w(['sort'], %w{ uniq -c }, out: wo) do |i,ts|
|
193
|
+
i.puts %w{ foo bar baz foo }; i.close
|
194
|
+
expect(ts.length).to eq(2)
|
195
|
+
expect(ts[0].value.exitstatus).to eq(0)
|
196
|
+
expect(ts[1].value.exitstatus).to eq(0)
|
197
|
+
end
|
198
|
+
wo.close; o = ro.read; ro.close
|
199
|
+
expect(o).to match(/\A +1 bar\n +1 baz\n +2 foo\n\z/)
|
200
|
+
end
|
201
|
+
it 'fail (no shell)' do
|
202
|
+
expect { ou.pipeline_w ['echo THIS IS NOT A COMMAND'] } .to \
|
203
|
+
raise_error(ou::RunError, /No such file or directory/) # ????
|
204
|
+
end
|
205
|
+
end # }}}1
|
206
|
+
|
207
|
+
context 'popen2' do # {{{1
|
208
|
+
it 'succeed' do
|
209
|
+
ou.popen2 'bash', '-c', 'echo $FOO',
|
210
|
+
env: { 'FOO' => 'foo' } do |i,o,t|
|
211
|
+
i.close
|
212
|
+
t.value.exitstatus.should == 0
|
213
|
+
o.read.should == "foo\n"
|
214
|
+
end
|
215
|
+
end
|
216
|
+
it 'fail (no shell)' do
|
217
|
+
expect { ou.popen2 'echo THIS IS NOT A COMMAND' } .to \
|
218
|
+
raise_error(ou::RunError, /No such file or directory/) # ????
|
219
|
+
end
|
220
|
+
end # }}}1
|
221
|
+
|
222
|
+
context 'popen2e' do # {{{1
|
223
|
+
it 'succeed' do
|
224
|
+
ou.popen2e 'bash', '-c', 'echo $FOO >&2; pwd',
|
225
|
+
env: { 'FOO' => 'foo' }, chdir: '/' do |i,oe,t|
|
226
|
+
i.close
|
227
|
+
t.value.exitstatus.should == 0
|
228
|
+
oe.read.should == "foo\n/\n"
|
229
|
+
end
|
230
|
+
end
|
231
|
+
it 'fail (no shell)' do
|
232
|
+
expect { ou.popen2e 'echo THIS IS NOT A COMMAND' } .to \
|
233
|
+
raise_error(ou::RunError, /No such file or directory/) # ????
|
234
|
+
end
|
235
|
+
end # }}}1
|
236
|
+
|
81
237
|
context 'popen3' do # {{{1
|
82
238
|
it 'succeed' do
|
83
239
|
ou.popen3 'bash', '-c', 'echo $FOO >&2; pwd',
|
84
|
-
|
240
|
+
env: { 'FOO' => 'foo' }, chdir: '/' do |i,o,e,t|
|
85
241
|
i.close
|
86
242
|
t.value.exitstatus.should == 0
|
87
243
|
o.read.should == "/\n"
|
@@ -98,7 +254,7 @@ describe 'obfusk/util/run' do
|
|
98
254
|
it 'colour' do
|
99
255
|
r, w = IO.pipe
|
100
256
|
ou.capture_stdout(:tty) do
|
101
|
-
pid = ou.ospawn
|
257
|
+
pid = ou.ospawn(*%w{ echo FOO }, out: w)
|
102
258
|
w.close; Process.wait pid; x = r.read; r.close
|
103
259
|
x.should == "FOO\n"
|
104
260
|
$?.exitstatus.should == 0
|
@@ -110,7 +266,7 @@ describe 'obfusk/util/run' do
|
|
110
266
|
it 'colour' do
|
111
267
|
r, w = IO.pipe
|
112
268
|
ou.capture_stdout(:tty) do
|
113
|
-
res = ou.ospawn_w
|
269
|
+
res = ou.ospawn_w(*%w{ echo FOO }, out: w)
|
114
270
|
w.close; x = r.read; r.close
|
115
271
|
x.should == "FOO\n"
|
116
272
|
res.exitstatus.should == 0
|
@@ -120,11 +276,11 @@ describe 'obfusk/util/run' do
|
|
120
276
|
|
121
277
|
context 'chk_exit' do # {{{1
|
122
278
|
it 'zero' do
|
123
|
-
expect { ou.chk_exit(%w{ true }) { |a| ou.spawn_w
|
279
|
+
expect { ou.chk_exit(%w{ true }) { |a| ou.spawn_w(*a) } } \
|
124
280
|
.to_not raise_error
|
125
281
|
end
|
126
282
|
it 'non-zero' do
|
127
|
-
expect { ou.chk_exit(%w{ false }) { |a| ou.spawn_w
|
283
|
+
expect { ou.chk_exit(%w{ false }) { |a| ou.spawn_w(*a) } } \
|
128
284
|
.to raise_error(ou::RunError, /command returned non-zero/)
|
129
285
|
end
|
130
286
|
end # }}}1
|
@@ -0,0 +1,125 @@
|
|
1
|
+
# -- ; {{{1
|
2
|
+
#
|
3
|
+
# File : obfusk/util/sh_spec.rb
|
4
|
+
# Maintainer : Felix C. Stegerman <flx@obfusk.net>
|
5
|
+
# Date : 2014-02-19
|
6
|
+
#
|
7
|
+
# Copyright : Copyright (C) 2014 Felix C. Stegerman
|
8
|
+
# Licence : LGPLv3+
|
9
|
+
#
|
10
|
+
# -- ; }}}1
|
11
|
+
|
12
|
+
require 'obfusk/util/sh'
|
13
|
+
|
14
|
+
ou = Obfusk::Util
|
15
|
+
|
16
|
+
describe 'obfusk/util/sh' do
|
17
|
+
|
18
|
+
context 'sh (1)' do # {{{1
|
19
|
+
it 'echoes w/ args and env' do
|
20
|
+
r = ou.sh 'echo "$0" ">>$1<<" ">>$FOO<<"', '"one"',
|
21
|
+
'FOO' => 'foo'
|
22
|
+
expect(r.ok?).to eq(true)
|
23
|
+
expect(r.stdout).to eq(%Q{bash >>"one"<< >>foo<<\n})
|
24
|
+
expect(r.stderr).to eq('')
|
25
|
+
end
|
26
|
+
it 'works w/ print, exit, and merge' do
|
27
|
+
r = ou.sh 'echo step1; false; echo step3', print: true, exit: true,
|
28
|
+
merge: true
|
29
|
+
expect(r.ok?).to eq(false)
|
30
|
+
expect(r.stdout).to eq("+ echo step1\nstep1\n+ false\n")
|
31
|
+
expect(r.stderr).to eq(nil)
|
32
|
+
end
|
33
|
+
it 'outputs pwd w/ arg' do
|
34
|
+
r = ou.sh 'cd "$1"; pwd', '/'
|
35
|
+
expect(r.ok?).to eq(true)
|
36
|
+
expect(r.stdout).to eq("/\n")
|
37
|
+
expect(r.stderr).to eq('')
|
38
|
+
end
|
39
|
+
it 'outputs pwd w/ :chdir' do
|
40
|
+
r = ou.sh 'pwd', chdir: '/'
|
41
|
+
expect(r.ok?).to eq(true)
|
42
|
+
expect(r.stdout).to eq("/\n")
|
43
|
+
expect(r.stderr).to eq('')
|
44
|
+
end
|
45
|
+
end # }}}1
|
46
|
+
|
47
|
+
context 'sh (2)' do # {{{1
|
48
|
+
it 'prints to stderr w/ print/-x' do
|
49
|
+
r = ou.sh 'echo FOO; echo BAR', print: true
|
50
|
+
expect(r.ok?).to eq(true)
|
51
|
+
expect(r.stdout).to eq("FOO\nBAR\n")
|
52
|
+
expect(r.stderr).to eq("+ echo FOO\n+ echo BAR\n")
|
53
|
+
end
|
54
|
+
it 'ignores false w/o exit/-e' do
|
55
|
+
r = ou.sh 'echo FOO; false; echo BAR'
|
56
|
+
expect(r.ok?).to eq(true)
|
57
|
+
expect(r.stdout).to eq("FOO\nBAR\n")
|
58
|
+
expect(r.stderr).to eq('')
|
59
|
+
end
|
60
|
+
it 'stops at false w/ exit/-e' do
|
61
|
+
r = ou.sh 'echo FOO; false; echo BAR', exit: true
|
62
|
+
expect(r.ok?).to eq(false)
|
63
|
+
expect(r.stdout).to eq("FOO\n")
|
64
|
+
expect(r.stderr).to eq('')
|
65
|
+
end
|
66
|
+
it 'merges stdout and stderr w/ merge' do
|
67
|
+
r = ou.sh 'echo FOO; echo BAR >&2; echo BAZ', merge: true
|
68
|
+
expect(r.ok?).to eq(true)
|
69
|
+
expect(r.stdout).to eq("FOO\nBAR\nBAZ\n")
|
70
|
+
expect(r.stderr).to eq(nil)
|
71
|
+
end
|
72
|
+
it 'merges env w/ string keys' do
|
73
|
+
r = ou.sh 'echo $FOO; echo $BAR',
|
74
|
+
env: { 'FOO' => 'no', 'BAR' => 'bar' }, 'FOO' => 'yes'
|
75
|
+
expect(r.ok?).to eq(true)
|
76
|
+
expect(r.stdout).to eq("yes\nbar\n")
|
77
|
+
expect(r.stderr).to eq('')
|
78
|
+
end
|
79
|
+
end # }}}1
|
80
|
+
|
81
|
+
context 'sh (3)' do # {{{1
|
82
|
+
it 'false => ok? returns false and ok! raises' do
|
83
|
+
r = ou.sh 'false'
|
84
|
+
expect(r.ok?).to eq(false)
|
85
|
+
expect(r.status.exitstatus).to eq(1)
|
86
|
+
expect { r.ok! } .to \
|
87
|
+
raise_error(ou::RunError, /command returned non-zero/)
|
88
|
+
expect(r.stdout).to eq('')
|
89
|
+
expect(r.stderr).to eq('')
|
90
|
+
end
|
91
|
+
it 'fails w/ message on stderr w/ NONEXISTENT' do
|
92
|
+
r = ou.sh 'NONEXISTENT'
|
93
|
+
expect(r.ok?).to eq(false)
|
94
|
+
expect(r.status.exitstatus).to eq(127)
|
95
|
+
expect(r.stdout).to eq('')
|
96
|
+
expect(r.stderr).to eq("bash: NONEXISTENT: command not found\n")
|
97
|
+
end
|
98
|
+
it 'fails w/ RunError w/ shell NONEXISTENT' do
|
99
|
+
expect { ou.sh 'irrelevant', shell: 'NONEXISTENT' } .to \
|
100
|
+
raise_error(ou::RunError, /failed to capture3 command/)
|
101
|
+
end
|
102
|
+
end # }}}1
|
103
|
+
|
104
|
+
context 'sh?' do # {{{1
|
105
|
+
it 'true => true' do
|
106
|
+
expect(ou.sh? 'true').to eq(true)
|
107
|
+
end
|
108
|
+
it 'false => false' do
|
109
|
+
expect(ou.sh? 'false').to eq(false)
|
110
|
+
end
|
111
|
+
end # }}}1
|
112
|
+
|
113
|
+
context 'sh!' do # {{{1
|
114
|
+
it 'true => nil' do
|
115
|
+
expect( ou.sh! 'true' ).to eq(nil)
|
116
|
+
end
|
117
|
+
it 'false => RunError' do
|
118
|
+
expect { ou.sh! 'false' } .to \
|
119
|
+
raise_error(ou::RunError, /command returned non-zero/)
|
120
|
+
end
|
121
|
+
end # }}}1
|
122
|
+
|
123
|
+
end
|
124
|
+
|
125
|
+
# vim: set tw=70 sw=2 sts=2 et fdm=marker :
|
@@ -2,10 +2,10 @@
|
|
2
2
|
#
|
3
3
|
# File : obfusk/util/spec_spec.rb
|
4
4
|
# Maintainer : Felix C. Stegerman <flx@obfusk.net>
|
5
|
-
# Date :
|
5
|
+
# Date : 2014-02-19
|
6
6
|
#
|
7
|
-
# Copyright : Copyright (C)
|
8
|
-
# Licence :
|
7
|
+
# Copyright : Copyright (C) 2014 Felix C. Stegerman
|
8
|
+
# Licence : LGPLv3+
|
9
9
|
#
|
10
10
|
# -- ; }}}1
|
11
11
|
|
@@ -2,10 +2,10 @@
|
|
2
2
|
#
|
3
3
|
# File : obfusk/util/struct_spec.rb
|
4
4
|
# Maintainer : Felix C. Stegerman <flx@obfusk.net>
|
5
|
-
# Date :
|
5
|
+
# Date : 2014-02-19
|
6
6
|
#
|
7
|
-
# Copyright : Copyright (C)
|
8
|
-
# Licence :
|
7
|
+
# Copyright : Copyright (C) 2014 Felix C. Stegerman
|
8
|
+
# Licence : LGPLv3+
|
9
9
|
#
|
10
10
|
# -- ; }}}1
|
11
11
|
|
@@ -2,10 +2,10 @@
|
|
2
2
|
#
|
3
3
|
# File : obfusk/util/term_spec.rb
|
4
4
|
# Maintainer : Felix C. Stegerman <flx@obfusk.net>
|
5
|
-
# Date :
|
5
|
+
# Date : 2014-02-19
|
6
6
|
#
|
7
|
-
# Copyright : Copyright (C)
|
8
|
-
# Licence :
|
7
|
+
# Copyright : Copyright (C) 2014 Felix C. Stegerman
|
8
|
+
# Licence : LGPLv3+
|
9
9
|
#
|
10
10
|
# -- ; }}}1
|
11
11
|
|
@@ -2,10 +2,10 @@
|
|
2
2
|
#
|
3
3
|
# File : obfusk/util/valid_spec.rb
|
4
4
|
# Maintainer : Felix C. Stegerman <flx@obfusk.net>
|
5
|
-
# Date :
|
5
|
+
# Date : 2014-02-19
|
6
6
|
#
|
7
|
-
# Copyright : Copyright (C)
|
8
|
-
# Licence :
|
7
|
+
# Copyright : Copyright (C) 2014 Felix C. Stegerman
|
8
|
+
# Licence : LGPLv3+
|
9
9
|
#
|
10
10
|
# -- ; }}}1
|
11
11
|
|
metadata
CHANGED
@@ -1,110 +1,112 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: obfusk-util
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
5
|
-
prerelease: 6
|
4
|
+
version: 0.4.2
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Felix C. Stegerman
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 2014-02-19 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: rake
|
16
|
-
requirement:
|
17
|
-
none: false
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
18
16
|
requirements:
|
19
|
-
- -
|
17
|
+
- - ">="
|
20
18
|
- !ruby/object:Gem::Version
|
21
19
|
version: '0'
|
22
20
|
type: :development
|
23
21
|
prerelease: false
|
24
|
-
version_requirements:
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
25
27
|
- !ruby/object:Gem::Dependency
|
26
28
|
name: rspec
|
27
|
-
requirement:
|
28
|
-
none: false
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
29
30
|
requirements:
|
30
|
-
- -
|
31
|
+
- - ">="
|
31
32
|
- !ruby/object:Gem::Version
|
32
33
|
version: '0'
|
33
34
|
type: :development
|
34
35
|
prerelease: false
|
35
|
-
version_requirements:
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
description: |
|
42
|
+
miscellaneous utility library for ruby
|
42
43
|
email:
|
43
44
|
- flx@obfusk.net
|
44
45
|
executables: []
|
45
46
|
extensions: []
|
46
47
|
extra_rdoc_files: []
|
47
48
|
files:
|
48
|
-
- .yardopts
|
49
|
+
- ".yardopts"
|
49
50
|
- README.md
|
50
51
|
- Rakefile
|
51
52
|
- obfusk-util.gemspec
|
52
|
-
- lib/obfusk/util/message.rb
|
53
|
-
- lib/obfusk/util/struct.rb
|
54
|
-
- lib/obfusk/util/spec.rb
|
55
|
-
- lib/obfusk/util/os.rb
|
56
|
-
- lib/obfusk/util/version.rb
|
57
|
-
- lib/obfusk/util/process.rb
|
58
53
|
- lib/obfusk/util/run.rb
|
59
|
-
- lib/obfusk/util/data.rb
|
60
|
-
- lib/obfusk/util/opt.rb
|
61
|
-
- lib/obfusk/util/fs.rb
|
62
|
-
- lib/obfusk/util/term.rb
|
63
54
|
- lib/obfusk/util/misc.rb
|
55
|
+
- lib/obfusk/util/opt.rb
|
56
|
+
- lib/obfusk/util/os.rb
|
64
57
|
- lib/obfusk/util/valid.rb
|
58
|
+
- lib/obfusk/util/module.rb
|
65
59
|
- lib/obfusk/util/all.rb
|
60
|
+
- lib/obfusk/util/process.rb
|
61
|
+
- lib/obfusk/util/fs.rb
|
62
|
+
- lib/obfusk/util/sh.rb
|
63
|
+
- lib/obfusk/util/data.rb
|
64
|
+
- lib/obfusk/util/spec.rb
|
65
|
+
- lib/obfusk/util/message.rb
|
66
|
+
- lib/obfusk/util/version.rb
|
66
67
|
- lib/obfusk/util/die.rb
|
67
|
-
- lib/obfusk/util/
|
68
|
+
- lib/obfusk/util/term.rb
|
69
|
+
- lib/obfusk/util/struct.rb
|
68
70
|
- lib/obfusk/util/cmd.rb
|
69
|
-
- spec/obfusk/util/
|
70
|
-
- spec/obfusk/util/
|
71
|
-
- spec/obfusk/util/
|
71
|
+
- spec/obfusk/util/die_spec.rb
|
72
|
+
- spec/obfusk/util/valid_spec.rb
|
73
|
+
- spec/obfusk/util/sh_spec.rb
|
72
74
|
- spec/obfusk/util/message_spec.rb
|
75
|
+
- spec/obfusk/util/term_spec.rb
|
73
76
|
- spec/obfusk/util/os_spec.rb
|
74
|
-
- spec/obfusk/util/
|
75
|
-
- spec/obfusk/util/
|
77
|
+
- spec/obfusk/util/spec_spec.rb
|
78
|
+
- spec/obfusk/util/opt_spec.rb
|
76
79
|
- spec/obfusk/util/struct_spec.rb
|
77
|
-
- spec/obfusk/util/
|
80
|
+
- spec/obfusk/util/module_spec.rb
|
81
|
+
- spec/obfusk/util/fs_spec.rb
|
82
|
+
- spec/obfusk/util/misc_spec.rb
|
78
83
|
- spec/obfusk/util/cmd_spec.rb
|
79
|
-
- spec/obfusk/util/
|
80
|
-
- spec/obfusk/util/term_spec.rb
|
84
|
+
- spec/obfusk/util/data_spec.rb
|
81
85
|
- spec/obfusk/util/process_spec.rb
|
82
|
-
- spec/obfusk/util/spec_spec.rb
|
83
86
|
- spec/obfusk/util/run_spec.rb
|
84
87
|
homepage: https://github.com/obfusk/rb-obfusk-util
|
85
88
|
licenses:
|
86
|
-
-
|
89
|
+
- LGPLv3+
|
90
|
+
metadata: {}
|
87
91
|
post_install_message:
|
88
92
|
rdoc_options: []
|
89
93
|
require_paths:
|
90
94
|
- lib
|
91
95
|
required_ruby_version: !ruby/object:Gem::Requirement
|
92
|
-
none: false
|
93
96
|
requirements:
|
94
|
-
- -
|
97
|
+
- - ">="
|
95
98
|
- !ruby/object:Gem::Version
|
96
99
|
version: 1.9.1
|
97
100
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
98
|
-
none: false
|
99
101
|
requirements:
|
100
|
-
- -
|
102
|
+
- - ">="
|
101
103
|
- !ruby/object:Gem::Version
|
102
|
-
version:
|
104
|
+
version: '0'
|
103
105
|
requirements: []
|
104
106
|
rubyforge_project:
|
105
|
-
rubygems_version:
|
107
|
+
rubygems_version: 2.0.14
|
106
108
|
signing_key:
|
107
|
-
specification_version:
|
109
|
+
specification_version: 4
|
108
110
|
summary: miscellaneous utility library for ruby
|
109
111
|
test_files: []
|
110
112
|
has_rdoc:
|