boson 0.4.0 → 1.0.0
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.
- data/.gemspec +6 -7
- data/.rspec +2 -0
- data/.travis.yml +7 -0
- data/CHANGELOG.rdoc +1 -1
- data/README.md +144 -0
- data/README.rdoc +2 -2
- data/Upgrading.md +23 -0
- data/bin/boson +2 -2
- data/lib/boson.rb +44 -52
- data/lib/boson/bare_runner.rb +83 -0
- data/lib/boson/bin_runner.rb +114 -0
- data/lib/boson/command.rb +92 -132
- data/lib/boson/inspector.rb +49 -48
- data/lib/boson/library.rb +71 -120
- data/lib/boson/loader.rb +73 -84
- data/lib/boson/manager.rb +131 -135
- data/lib/boson/method_inspector.rb +112 -0
- data/lib/boson/option_command.rb +71 -154
- data/lib/boson/option_parser.rb +178 -173
- data/lib/boson/options.rb +46 -32
- data/lib/boson/runner.rb +58 -66
- data/lib/boson/runner_library.rb +31 -0
- data/lib/boson/scientist.rb +48 -81
- data/lib/boson/util.rb +46 -61
- data/lib/boson/version.rb +1 -1
- data/test/bin_runner_test.rb +53 -191
- data/test/command_test.rb +5 -9
- data/test/deps.rip +2 -2
- data/test/loader_test.rb +18 -216
- data/test/manager_test.rb +69 -79
- data/test/method_inspector_test.rb +12 -36
- data/test/option_parser_test.rb +45 -32
- data/test/runner_library_test.rb +10 -0
- data/test/runner_test.rb +158 -28
- data/test/scientist_test.rb +9 -147
- data/test/test_helper.rb +87 -52
- metadata +30 -72
- data/deps.rip +0 -2
- data/lib/boson/commands.rb +0 -7
- data/lib/boson/commands/core.rb +0 -77
- data/lib/boson/commands/web_core.rb +0 -153
- data/lib/boson/index.rb +0 -48
- data/lib/boson/inspectors/argument_inspector.rb +0 -97
- data/lib/boson/inspectors/comment_inspector.rb +0 -100
- data/lib/boson/inspectors/method_inspector.rb +0 -98
- data/lib/boson/libraries/file_library.rb +0 -144
- data/lib/boson/libraries/gem_library.rb +0 -30
- data/lib/boson/libraries/local_file_library.rb +0 -30
- data/lib/boson/libraries/module_library.rb +0 -37
- data/lib/boson/libraries/require_library.rb +0 -23
- data/lib/boson/namespace.rb +0 -31
- data/lib/boson/pipe.rb +0 -147
- data/lib/boson/pipes.rb +0 -75
- data/lib/boson/repo.rb +0 -107
- data/lib/boson/runners/bin_runner.rb +0 -208
- data/lib/boson/runners/console_runner.rb +0 -58
- data/lib/boson/view.rb +0 -95
- data/test/argument_inspector_test.rb +0 -62
- data/test/commands_test.rb +0 -22
- data/test/comment_inspector_test.rb +0 -126
- data/test/file_library_test.rb +0 -42
- data/test/pipes_test.rb +0 -65
- data/test/repo_index_test.rb +0 -122
- data/test/repo_test.rb +0 -23
data/test/scientist_test.rb
CHANGED
@@ -2,7 +2,7 @@ require File.join(File.dirname(__FILE__), 'test_helper')
|
|
2
2
|
|
3
3
|
describe "Scientist" do
|
4
4
|
before_all {
|
5
|
-
|
5
|
+
Boson.in_shell = nil
|
6
6
|
eval <<-EOF
|
7
7
|
module Blah
|
8
8
|
def blah(arg1, options={})
|
@@ -90,13 +90,6 @@ describe "Scientist" do
|
|
90
90
|
}.should =~/invalid.*z/
|
91
91
|
end
|
92
92
|
end
|
93
|
-
|
94
|
-
it "print help with help option" do
|
95
|
-
all_commands.each do |cmd|
|
96
|
-
Boson.expects(:invoke).with(:usage, anything, anything)
|
97
|
-
send(cmd, '-h')
|
98
|
-
end
|
99
|
-
end
|
100
93
|
end
|
101
94
|
|
102
95
|
describe "command" do
|
@@ -130,11 +123,6 @@ describe "Scientist" do
|
|
130
123
|
capture_stderr { command_with_args('a1 -l') }.should =~ /Error.*level/
|
131
124
|
end
|
132
125
|
|
133
|
-
it "with unexpected error in render" do
|
134
|
-
Scientist.expects(:can_render?).raises("unexpected")
|
135
|
-
capture_stderr { command_with_args('a1') }.should =~ /Error.*unexpected/
|
136
|
-
end
|
137
|
-
|
138
126
|
it "with no argument defined for options" do
|
139
127
|
assert_error(OptionCommand::CommandArgumentError, '2 for 1') { command({:args=>1}, 'ok') }
|
140
128
|
end
|
@@ -151,19 +139,10 @@ describe "Scientist" do
|
|
151
139
|
|
152
140
|
it "with splat args does not raise error for too few or many args" do
|
153
141
|
[[], [''], [1,2,3], ['1 2 3']].each do |args|
|
154
|
-
|
142
|
+
should_not_raise { command_with_splat_args *args }
|
155
143
|
end
|
156
144
|
end
|
157
145
|
|
158
|
-
it "with debug option prints debug" do
|
159
|
-
capture_stdout { command_with_args("-v ok") }.should =~ /Arguments.*ok/
|
160
|
-
end
|
161
|
-
|
162
|
-
it "with pretend option prints arguments and returns early" do
|
163
|
-
Scientist.expects(:render_or_raw).never
|
164
|
-
capture_stdout { command_with_args("-p ok") }.should =~ /Arguments.*ok/
|
165
|
-
end
|
166
|
-
|
167
146
|
it "with not enough args raises CommandArgumentError" do
|
168
147
|
args = [OptionCommand::CommandArgumentError, '0 for 1']
|
169
148
|
assert_error(*args) { command_with_args }
|
@@ -173,7 +152,9 @@ describe "Scientist" do
|
|
173
152
|
end
|
174
153
|
|
175
154
|
it "with too many args raises CommandArgumentError" do
|
176
|
-
args3 =
|
155
|
+
args3 = RUBY_DESCRIPTION.include?('rubinius') ?
|
156
|
+
[ArgumentError, 'given 3, expected 2'] :
|
157
|
+
[ArgumentError, '3 for 2']
|
177
158
|
args4 = [OptionCommand::CommandArgumentError, '4 for 2']
|
178
159
|
assert_error(*args3) { command_with_args 1,2,3 }
|
179
160
|
assert_error(*args4) { command_with_args '1 2 3' }
|
@@ -182,62 +163,6 @@ describe "Scientist" do
|
|
182
163
|
end
|
183
164
|
end
|
184
165
|
|
185
|
-
def command_with_render(*args)
|
186
|
-
basic_command({:render_options=>{:fields=>{:values=>['f1', 'f2']}} }, args)
|
187
|
-
end
|
188
|
-
|
189
|
-
def render_expected(options=nil)
|
190
|
-
View.expects(:render).with(anything, options || anything, false)
|
191
|
-
end
|
192
|
-
|
193
|
-
describe "render" do
|
194
|
-
it "called for command with render_options" do
|
195
|
-
render_expected
|
196
|
-
command_with_render('1')
|
197
|
-
end
|
198
|
-
|
199
|
-
it "called for command without render_options and --render" do
|
200
|
-
render_expected
|
201
|
-
command_with_args('--render 1')
|
202
|
-
end
|
203
|
-
|
204
|
-
it "not called for command with render_options and --render" do
|
205
|
-
Boson.expects(:invoke).never
|
206
|
-
command_with_render('--render 1')
|
207
|
-
end
|
208
|
-
|
209
|
-
it "not called for command without render_options" do
|
210
|
-
Boson.expects(:invoke).never
|
211
|
-
command_with_args('1')
|
212
|
-
end
|
213
|
-
end
|
214
|
-
|
215
|
-
describe "command renders" do
|
216
|
-
it "with basic render options" do
|
217
|
-
render_expected :fields => ['f1', 'f2']
|
218
|
-
command_with_render("--fields f1,f2 ab")
|
219
|
-
end
|
220
|
-
|
221
|
-
it "without non-render options" do
|
222
|
-
render_expected :fields=>['f1']
|
223
|
-
Scientist.expects(:can_render?).returns(true)
|
224
|
-
args = ["--render --fields f1 ab"]
|
225
|
-
basic_command({:render_options=>{:fields=>{:values=>['f1', 'f2']}} }, args)
|
226
|
-
end
|
227
|
-
|
228
|
-
it "with user-defined render options" do
|
229
|
-
render_expected :fields=>['f1'], :foo=>true
|
230
|
-
args = ["--foo --fields f1 ab"]
|
231
|
-
basic_command({:render_options=>{:foo=>:boolean, :fields=>{:values=>['f1', 'f2']}} }, args)
|
232
|
-
end
|
233
|
-
|
234
|
-
it "with non-hash user-defined render options" do
|
235
|
-
render_expected :fields=>['f1'], :foo=>true
|
236
|
-
args = ["--foo --fields f1 ab"]
|
237
|
-
basic_command({:render_options=>{:foo=>:boolean, :fields=>%w{f1 f2 f3}} }, args)
|
238
|
-
end
|
239
|
-
end
|
240
|
-
|
241
166
|
describe "command with default option" do
|
242
167
|
before_all { @cmd_attributes = {:name=>'default_option', :default_option=>'level', :args=>1} }
|
243
168
|
|
@@ -246,7 +171,7 @@ describe "Scientist" do
|
|
246
171
|
end
|
247
172
|
|
248
173
|
it "parses normally from cmdline" do
|
249
|
-
|
174
|
+
Boson.expects(:in_shell).times(2).returns true
|
250
175
|
command(@cmd_attributes, ['--force', '--level=3']).should == {:level=>3, :force=>true}
|
251
176
|
end
|
252
177
|
|
@@ -263,79 +188,16 @@ describe "Scientist" do
|
|
263
188
|
end
|
264
189
|
|
265
190
|
it "prepends correctly from cmdline" do
|
266
|
-
|
191
|
+
Boson.expects(:in_shell).times(2).returns true
|
267
192
|
command(@cmd_attributes, ['3','-f']).should == {:level=>3, :force=>true}
|
268
193
|
end
|
269
194
|
end
|
270
195
|
|
271
|
-
it "optionless command renders" do
|
272
|
-
render_expected :fields=>['f1']
|
273
|
-
command({:args=>2, :options=>nil, :render_options=>{:fields=>:array}}, ["--fields f1 ab ok"])
|
274
|
-
end
|
275
|
-
|
276
196
|
it "redefine_command prints error for command with nonexistant method" do
|
277
197
|
capture_stderr {
|
278
198
|
Scientist.redefine_command Object.new, Command.new(:name=>'blah', :lib=>'blah')
|
279
199
|
}.should =~ /Error: No method.*'blah'/
|
280
200
|
end
|
281
201
|
|
282
|
-
|
283
|
-
|
284
|
-
Scientist.stubs(:can_render?).returns(false) # turn off rendering caused by :render_options
|
285
|
-
@non_opts = basic_command(@command_options, args)
|
286
|
-
@non_opts.slice!(-1,1) << Scientist.global_options
|
287
|
-
end
|
288
|
-
|
289
|
-
before_all {
|
290
|
-
@command_options = {:options=>{:do=>:boolean, :foo=>:boolean},
|
291
|
-
:render_options=>{:dude=>:boolean}}
|
292
|
-
@expected_non_opts = [[], ['doh'], ['doh'], [:doh]]
|
293
|
-
}
|
294
|
-
|
295
|
-
it "local option overrides global one" do
|
296
|
-
['-d', 'doh -d','-d doh', [:doh, '-d']].each_with_index do |args, i|
|
297
|
-
local_and_global(*args).should == [{:do=>true}, {}]
|
298
|
-
@non_opts.should == @expected_non_opts[i]
|
299
|
-
end
|
300
|
-
end
|
301
|
-
|
302
|
-
it "global option before local one is valid" do
|
303
|
-
args_arr = ['--dude -f', '--dude doh -f', '--dude -f doh', [:doh, '--dude -f']]
|
304
|
-
args_arr.each_with_index do |args, i|
|
305
|
-
local_and_global(*args).should == [{:foo=>true}, {:dude=>true}]
|
306
|
-
@non_opts.should == @expected_non_opts[i]
|
307
|
-
end
|
308
|
-
end
|
309
|
-
|
310
|
-
it "delete_options deletes global options" do
|
311
|
-
local_and_global('--delete_options=r,p -rp -f').should ==
|
312
|
-
[{:foo=>true}, {:delete_options=>["r", "p"]}]
|
313
|
-
end
|
314
|
-
|
315
|
-
it "global option after local one is invalid" do
|
316
|
-
args_arr = ['-f --dude', '-f doh --dude', '-f --dude doh', [:doh, '-f --dude'] ]
|
317
|
-
args_arr.each_with_index do |args, i|
|
318
|
-
capture_stderr {
|
319
|
-
local_and_global(*args).should == [{:foo=>true}, {}]
|
320
|
-
@non_opts.should == @expected_non_opts[i]
|
321
|
-
}.should =~ /invalid.*dude/
|
322
|
-
end
|
323
|
-
end
|
324
|
-
|
325
|
-
it "global option after local one and -" do
|
326
|
-
local_and_global("doh -r -f - --dude").should == [{:foo=>true}, {:dude=>true, :render=>true}]
|
327
|
-
end
|
328
|
-
|
329
|
-
it "conflicting global option after -" do
|
330
|
-
local_and_global('doh - -f=1,2').should == [{}, {:fields=>["1", "2"]}]
|
331
|
-
end
|
332
|
-
|
333
|
-
it "no options parsed after --" do
|
334
|
-
local_and_global('doh -f -- -r').should == [{:foo=>true}, {}]
|
335
|
-
local_and_global('doh -- -r -f').should == [{}, {}]
|
336
|
-
local_and_global('-- -r -f').should == [{}, {}]
|
337
|
-
local_and_global('doh -r -- -f').should == [{}, {:render=>true}]
|
338
|
-
end
|
339
|
-
end
|
340
|
-
after_all { Runner.in_shell = false }
|
341
|
-
end
|
202
|
+
after_all { Boson.in_shell = false }
|
203
|
+
end
|
data/test/test_helper.rb
CHANGED
@@ -1,18 +1,22 @@
|
|
1
|
-
require 'bacon'
|
2
|
-
require 'bacon/bits'
|
3
1
|
require 'mocha'
|
4
|
-
require 'mocha-on-bacon'
|
5
2
|
require 'boson'
|
3
|
+
require 'fileutils'
|
4
|
+
require 'boson/runner'
|
5
|
+
require 'bahia'
|
6
|
+
|
7
|
+
ENV['RSPEC'] = '1' if $0[/rspec/]
|
8
|
+
unless ENV['RSPEC']
|
9
|
+
require 'bacon'
|
10
|
+
require 'bacon/bits'
|
11
|
+
require 'mocha-on-bacon'
|
12
|
+
end
|
13
|
+
|
6
14
|
Object.send :remove_const, :OptionParser
|
7
15
|
Boson.constants.each {|e| Object.const_set(e, Boson.const_get(e)) unless Object.const_defined?(e) }
|
16
|
+
ENV['BOSONRC'] = File.dirname(__FILE__) + '/.bosonrc'
|
8
17
|
|
9
18
|
module TestHelpers
|
10
|
-
|
11
|
-
Boson.repo.dir = File.dirname(__FILE__)
|
12
|
-
# prevent extra File.exists? calls which interfere with stubs for it
|
13
|
-
Boson.repo.config = {:libraries=>{}, :command_aliases=>{}, :console_defaults=>[]}
|
14
|
-
Boson.instance_variable_set "@repos", [Boson.repo]
|
15
|
-
|
19
|
+
## Misc
|
16
20
|
def assert_error(error, message=nil)
|
17
21
|
yield
|
18
22
|
rescue error=>e
|
@@ -22,6 +26,26 @@ module TestHelpers
|
|
22
26
|
nil.should == error
|
23
27
|
end
|
24
28
|
|
29
|
+
def remove_constant(name, mod=Object)
|
30
|
+
mod.send(:remove_const, name) if mod.const_defined?(name, false)
|
31
|
+
end
|
32
|
+
|
33
|
+
def with_config(options)
|
34
|
+
old_config = Boson.config
|
35
|
+
Boson.config = Boson.config.merge(options)
|
36
|
+
yield
|
37
|
+
Boson.config = old_config
|
38
|
+
end
|
39
|
+
|
40
|
+
def manager_load(lib, options={})
|
41
|
+
@stderr = capture_stderr { Manager.load(lib, options) }
|
42
|
+
end
|
43
|
+
|
44
|
+
def stderr
|
45
|
+
@stderr.chomp
|
46
|
+
end
|
47
|
+
|
48
|
+
## Reset
|
25
49
|
def reset
|
26
50
|
reset_main_object
|
27
51
|
reset_boson
|
@@ -29,8 +53,8 @@ module TestHelpers
|
|
29
53
|
|
30
54
|
def reset_main_object
|
31
55
|
Boson.send :remove_const, "Universe"
|
32
|
-
eval "module ::Boson::Universe;
|
33
|
-
|
56
|
+
eval "module ::Boson::Universe; end"
|
57
|
+
remove_constant "Blah", Boson::Commands
|
34
58
|
Boson.main_object = Object.new
|
35
59
|
end
|
36
60
|
|
@@ -43,10 +67,7 @@ module TestHelpers
|
|
43
67
|
Boson.instance_eval("@libraries = nil")
|
44
68
|
end
|
45
69
|
|
46
|
-
|
47
|
-
(!!Command.find(name)).should == bool
|
48
|
-
end
|
49
|
-
|
70
|
+
## Library
|
50
71
|
def library_loaded?(name, bool=true)
|
51
72
|
Manager.loaded?(name).should == bool
|
52
73
|
end
|
@@ -55,33 +76,36 @@ module TestHelpers
|
|
55
76
|
Boson.library(name)
|
56
77
|
end
|
57
78
|
|
58
|
-
def library_has_module(lib, lib_module)
|
59
|
-
Manager.loaded?(lib).should == true
|
60
|
-
test_lib = library(lib)
|
61
|
-
(test_lib.module.is_a?(Module) && (test_lib.module.to_s == lib_module)).should == true
|
62
|
-
end
|
63
|
-
|
64
79
|
def library_has_command(lib, command, bool=true)
|
65
80
|
(lib = library(lib)) && lib.commands.include?(command).should == bool
|
66
81
|
end
|
67
82
|
|
68
|
-
|
69
|
-
def
|
70
|
-
options =
|
71
|
-
|
72
|
-
|
73
|
-
|
83
|
+
## Factories
|
84
|
+
def create_runner(*methods, &block)
|
85
|
+
options = methods[-1].is_a?(Hash) ? methods.pop : {}
|
86
|
+
library = options[:library] || :Blarg
|
87
|
+
remove_constant library
|
88
|
+
|
89
|
+
Object.const_set(library, Class.new(Boson::Runner)).tap do |klass|
|
90
|
+
if block
|
91
|
+
klass.module_eval(&block)
|
92
|
+
else
|
93
|
+
methods.each do |meth|
|
94
|
+
klass.send(:define_method, meth) { }
|
95
|
+
end
|
96
|
+
end
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
100
|
+
def create_library(hash)
|
101
|
+
Library.new(hash).tap {|lib| Manager.add_library lib }
|
74
102
|
end
|
75
103
|
|
76
|
-
def
|
77
|
-
|
78
|
-
MethodInspector.stubs(:inspector_in_file?).returns(false)
|
79
|
-
mock_library(lib, options) unless options.delete(:no_mock)
|
80
|
-
result = Manager.load([lib], options)
|
81
|
-
FileLibrary.reset_file_cache
|
82
|
-
result
|
104
|
+
def create_command(hash)
|
105
|
+
Command.new(hash).tap {|cmd| Boson.commands << cmd }
|
83
106
|
end
|
84
107
|
|
108
|
+
## Capture
|
85
109
|
def capture_stdout(&block)
|
86
110
|
original_stdout = $stdout
|
87
111
|
$stdout = fake = StringIO.new
|
@@ -93,13 +117,6 @@ module TestHelpers
|
|
93
117
|
fake.string
|
94
118
|
end
|
95
119
|
|
96
|
-
def with_config(options)
|
97
|
-
old_config = Boson.repo.config
|
98
|
-
Boson.repo.config = Boson.repo.config.merge(options)
|
99
|
-
yield
|
100
|
-
Boson.repo.config = old_config
|
101
|
-
end
|
102
|
-
|
103
120
|
def capture_stderr(&block)
|
104
121
|
original_stderr = $stderr
|
105
122
|
$stderr = fake = StringIO.new
|
@@ -111,20 +128,38 @@ module TestHelpers
|
|
111
128
|
fake.string
|
112
129
|
end
|
113
130
|
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
131
|
+
if ENV['RSPEC']
|
132
|
+
def should_not_raise(&block)
|
133
|
+
block.should_not raise_error
|
134
|
+
end
|
135
|
+
else
|
136
|
+
# Since rspec doesn't allow should != or should.not
|
137
|
+
Object.send(:define_method, :should_not) {|*args, &block|
|
138
|
+
should.not(*args, &block)
|
119
139
|
}
|
140
|
+
def should_not_raise(&block)
|
141
|
+
should.not.raise &block
|
142
|
+
end
|
120
143
|
end
|
144
|
+
end
|
121
145
|
|
122
|
-
|
123
|
-
|
124
|
-
|
146
|
+
if ENV['RSPEC']
|
147
|
+
module RspecBits
|
148
|
+
def before_all(&block)
|
149
|
+
before(:all, &block)
|
150
|
+
end
|
151
|
+
|
152
|
+
def after_all(&block)
|
153
|
+
after(:all, &block)
|
154
|
+
end
|
125
155
|
end
|
126
|
-
end
|
127
156
|
|
128
|
-
|
129
|
-
|
157
|
+
RSpec.configure {|c|
|
158
|
+
c.mock_with :mocha
|
159
|
+
c.extend RspecBits
|
160
|
+
c.include TestHelpers, Bahia
|
161
|
+
}
|
162
|
+
else
|
163
|
+
Bacon::Context.send :include, Bahia
|
164
|
+
Bacon::Context.send :include, TestHelpers
|
130
165
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: boson
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,44 +9,22 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-03-05 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
|
-
- !ruby/object:Gem::Dependency
|
15
|
-
name: hirb
|
16
|
-
requirement: &70363074549740 !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
|
-
requirements:
|
19
|
-
- - ! '>='
|
20
|
-
- !ruby/object:Gem::Version
|
21
|
-
version: 0.5.0
|
22
|
-
type: :runtime
|
23
|
-
prerelease: false
|
24
|
-
version_requirements: *70363074549740
|
25
|
-
- !ruby/object:Gem::Dependency
|
26
|
-
name: alias
|
27
|
-
requirement: &70363074548940 !ruby/object:Gem::Requirement
|
28
|
-
none: false
|
29
|
-
requirements:
|
30
|
-
- - ! '>='
|
31
|
-
- !ruby/object:Gem::Version
|
32
|
-
version: 0.2.2
|
33
|
-
type: :runtime
|
34
|
-
prerelease: false
|
35
|
-
version_requirements: *70363074548940
|
36
14
|
- !ruby/object:Gem::Dependency
|
37
15
|
name: mocha
|
38
|
-
requirement: &
|
16
|
+
requirement: &70219859552560 !ruby/object:Gem::Requirement
|
39
17
|
none: false
|
40
18
|
requirements:
|
41
|
-
- -
|
19
|
+
- - ~>
|
42
20
|
- !ruby/object:Gem::Version
|
43
|
-
version: 0.
|
21
|
+
version: 0.10.4
|
44
22
|
type: :development
|
45
23
|
prerelease: false
|
46
|
-
version_requirements: *
|
24
|
+
version_requirements: *70219859552560
|
47
25
|
- !ruby/object:Gem::Dependency
|
48
26
|
name: bacon
|
49
|
-
requirement: &
|
27
|
+
requirement: &70219859552020 !ruby/object:Gem::Requirement
|
50
28
|
none: false
|
51
29
|
requirements:
|
52
30
|
- - ! '>='
|
@@ -54,10 +32,10 @@ dependencies:
|
|
54
32
|
version: 1.1.0
|
55
33
|
type: :development
|
56
34
|
prerelease: false
|
57
|
-
version_requirements: *
|
35
|
+
version_requirements: *70219859552020
|
58
36
|
- !ruby/object:Gem::Dependency
|
59
37
|
name: mocha-on-bacon
|
60
|
-
requirement: &
|
38
|
+
requirement: &70219859551540 !ruby/object:Gem::Requirement
|
61
39
|
none: false
|
62
40
|
requirements:
|
63
41
|
- - ! '>='
|
@@ -65,10 +43,10 @@ dependencies:
|
|
65
43
|
version: '0'
|
66
44
|
type: :development
|
67
45
|
prerelease: false
|
68
|
-
version_requirements: *
|
46
|
+
version_requirements: *70219859551540
|
69
47
|
- !ruby/object:Gem::Dependency
|
70
48
|
name: bacon-bits
|
71
|
-
requirement: &
|
49
|
+
requirement: &70219859551080 !ruby/object:Gem::Requirement
|
72
50
|
none: false
|
73
51
|
requirements:
|
74
52
|
- - ! '>='
|
@@ -76,78 +54,56 @@ dependencies:
|
|
76
54
|
version: '0'
|
77
55
|
type: :development
|
78
56
|
prerelease: false
|
79
|
-
version_requirements: *
|
57
|
+
version_requirements: *70219859551080
|
80
58
|
- !ruby/object:Gem::Dependency
|
81
|
-
name:
|
82
|
-
requirement: &
|
59
|
+
name: bahia
|
60
|
+
requirement: &70219859550520 !ruby/object:Gem::Requirement
|
83
61
|
none: false
|
84
62
|
requirements:
|
85
63
|
- - ! '>='
|
86
64
|
- !ruby/object:Gem::Version
|
87
|
-
version:
|
65
|
+
version: 0.4.0
|
88
66
|
type: :development
|
89
67
|
prerelease: false
|
90
|
-
version_requirements: *
|
91
|
-
description: Boson is a command/task framework
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
ruby. For my libraries that use this, see irbfiles. Works with all major ruby versions.
|
68
|
+
version_requirements: *70219859550520
|
69
|
+
description: Boson is a modular command/task framework. Thanks to its rich set of
|
70
|
+
plugins, it differentiates itself from rake and thor by being usable from irb and
|
71
|
+
the commandline, having optional automated views generated by hirb and allowing
|
72
|
+
libraries to be written as plain ruby. Works with ruby >= 1.9.2
|
96
73
|
email: gabriel.horner@gmail.com
|
97
74
|
executables:
|
98
75
|
- boson
|
99
76
|
extensions: []
|
100
77
|
extra_rdoc_files:
|
101
|
-
- README.
|
78
|
+
- README.md
|
102
79
|
- LICENSE.txt
|
103
80
|
files:
|
81
|
+
- lib/boson/bare_runner.rb
|
82
|
+
- lib/boson/bin_runner.rb
|
104
83
|
- lib/boson/command.rb
|
105
|
-
- lib/boson/commands/core.rb
|
106
|
-
- lib/boson/commands/web_core.rb
|
107
|
-
- lib/boson/commands.rb
|
108
|
-
- lib/boson/index.rb
|
109
84
|
- lib/boson/inspector.rb
|
110
|
-
- lib/boson/inspectors/argument_inspector.rb
|
111
|
-
- lib/boson/inspectors/comment_inspector.rb
|
112
|
-
- lib/boson/inspectors/method_inspector.rb
|
113
|
-
- lib/boson/libraries/file_library.rb
|
114
|
-
- lib/boson/libraries/gem_library.rb
|
115
|
-
- lib/boson/libraries/local_file_library.rb
|
116
|
-
- lib/boson/libraries/module_library.rb
|
117
|
-
- lib/boson/libraries/require_library.rb
|
118
85
|
- lib/boson/library.rb
|
119
86
|
- lib/boson/loader.rb
|
120
87
|
- lib/boson/manager.rb
|
121
|
-
- lib/boson/
|
88
|
+
- lib/boson/method_inspector.rb
|
122
89
|
- lib/boson/option_command.rb
|
123
90
|
- lib/boson/option_parser.rb
|
124
91
|
- lib/boson/options.rb
|
125
|
-
- lib/boson/pipe.rb
|
126
|
-
- lib/boson/pipes.rb
|
127
|
-
- lib/boson/repo.rb
|
128
92
|
- lib/boson/repo_index.rb
|
129
93
|
- lib/boson/runner.rb
|
130
|
-
- lib/boson/
|
131
|
-
- lib/boson/runners/console_runner.rb
|
94
|
+
- lib/boson/runner_library.rb
|
132
95
|
- lib/boson/scientist.rb
|
133
96
|
- lib/boson/util.rb
|
134
97
|
- lib/boson/version.rb
|
135
|
-
- lib/boson/view.rb
|
136
98
|
- lib/boson.rb
|
137
|
-
- test/argument_inspector_test.rb
|
138
99
|
- test/bin_runner_test.rb
|
139
100
|
- test/command_test.rb
|
140
|
-
- test/commands_test.rb
|
141
|
-
- test/comment_inspector_test.rb
|
142
|
-
- test/file_library_test.rb
|
143
101
|
- test/loader_test.rb
|
144
102
|
- test/manager_test.rb
|
145
103
|
- test/method_inspector_test.rb
|
146
104
|
- test/option_parser_test.rb
|
147
105
|
- test/options_test.rb
|
148
|
-
- test/
|
149
|
-
- test/repo_index_test.rb
|
150
|
-
- test/repo_test.rb
|
106
|
+
- test/runner_library_test.rb
|
151
107
|
- test/runner_test.rb
|
152
108
|
- test/scientist_test.rb
|
153
109
|
- test/test_helper.rb
|
@@ -156,11 +112,13 @@ files:
|
|
156
112
|
- LICENSE.txt
|
157
113
|
- CHANGELOG.rdoc
|
158
114
|
- README.rdoc
|
159
|
-
-
|
115
|
+
- README.md
|
116
|
+
- Upgrading.md
|
160
117
|
- test/deps.rip
|
161
118
|
- Rakefile
|
162
119
|
- .gemspec
|
163
120
|
- .travis.yml
|
121
|
+
- .rspec
|
164
122
|
homepage: http://tagaholic.me/boson/
|
165
123
|
licenses:
|
166
124
|
- MIT
|
@@ -182,7 +140,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
182
140
|
version: 1.3.6
|
183
141
|
requirements: []
|
184
142
|
rubyforge_project:
|
185
|
-
rubygems_version: 1.8.
|
143
|
+
rubygems_version: 1.8.11
|
186
144
|
signing_key:
|
187
145
|
specification_version: 3
|
188
146
|
summary: A command/task framework similar to rake and thor that opens your ruby universe
|