boson 0.4.0 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (64) hide show
  1. data/.gemspec +6 -7
  2. data/.rspec +2 -0
  3. data/.travis.yml +7 -0
  4. data/CHANGELOG.rdoc +1 -1
  5. data/README.md +144 -0
  6. data/README.rdoc +2 -2
  7. data/Upgrading.md +23 -0
  8. data/bin/boson +2 -2
  9. data/lib/boson.rb +44 -52
  10. data/lib/boson/bare_runner.rb +83 -0
  11. data/lib/boson/bin_runner.rb +114 -0
  12. data/lib/boson/command.rb +92 -132
  13. data/lib/boson/inspector.rb +49 -48
  14. data/lib/boson/library.rb +71 -120
  15. data/lib/boson/loader.rb +73 -84
  16. data/lib/boson/manager.rb +131 -135
  17. data/lib/boson/method_inspector.rb +112 -0
  18. data/lib/boson/option_command.rb +71 -154
  19. data/lib/boson/option_parser.rb +178 -173
  20. data/lib/boson/options.rb +46 -32
  21. data/lib/boson/runner.rb +58 -66
  22. data/lib/boson/runner_library.rb +31 -0
  23. data/lib/boson/scientist.rb +48 -81
  24. data/lib/boson/util.rb +46 -61
  25. data/lib/boson/version.rb +1 -1
  26. data/test/bin_runner_test.rb +53 -191
  27. data/test/command_test.rb +5 -9
  28. data/test/deps.rip +2 -2
  29. data/test/loader_test.rb +18 -216
  30. data/test/manager_test.rb +69 -79
  31. data/test/method_inspector_test.rb +12 -36
  32. data/test/option_parser_test.rb +45 -32
  33. data/test/runner_library_test.rb +10 -0
  34. data/test/runner_test.rb +158 -28
  35. data/test/scientist_test.rb +9 -147
  36. data/test/test_helper.rb +87 -52
  37. metadata +30 -72
  38. data/deps.rip +0 -2
  39. data/lib/boson/commands.rb +0 -7
  40. data/lib/boson/commands/core.rb +0 -77
  41. data/lib/boson/commands/web_core.rb +0 -153
  42. data/lib/boson/index.rb +0 -48
  43. data/lib/boson/inspectors/argument_inspector.rb +0 -97
  44. data/lib/boson/inspectors/comment_inspector.rb +0 -100
  45. data/lib/boson/inspectors/method_inspector.rb +0 -98
  46. data/lib/boson/libraries/file_library.rb +0 -144
  47. data/lib/boson/libraries/gem_library.rb +0 -30
  48. data/lib/boson/libraries/local_file_library.rb +0 -30
  49. data/lib/boson/libraries/module_library.rb +0 -37
  50. data/lib/boson/libraries/require_library.rb +0 -23
  51. data/lib/boson/namespace.rb +0 -31
  52. data/lib/boson/pipe.rb +0 -147
  53. data/lib/boson/pipes.rb +0 -75
  54. data/lib/boson/repo.rb +0 -107
  55. data/lib/boson/runners/bin_runner.rb +0 -208
  56. data/lib/boson/runners/console_runner.rb +0 -58
  57. data/lib/boson/view.rb +0 -95
  58. data/test/argument_inspector_test.rb +0 -62
  59. data/test/commands_test.rb +0 -22
  60. data/test/comment_inspector_test.rb +0 -126
  61. data/test/file_library_test.rb +0 -42
  62. data/test/pipes_test.rb +0 -65
  63. data/test/repo_index_test.rb +0 -122
  64. data/test/repo_test.rb +0 -23
@@ -2,7 +2,7 @@ require File.join(File.dirname(__FILE__), 'test_helper')
2
2
 
3
3
  describe "Scientist" do
4
4
  before_all {
5
- Runner.in_shell = nil
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
- should.not.raise { command_with_splat_args *args }
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 = [ArgumentError, '3 for 2']
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
- Runner.expects(:in_shell?).times(2).returns true
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
- Runner.expects(:in_shell?).times(2).returns true
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
- describe "global options:" do
283
- def local_and_global(*args)
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
- # make local so it doesn't pick up my real boson dir
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; include ::Boson::Commands::Namespace; end"
33
- Boson::Commands.send :remove_const, "Blah" rescue nil
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
- def command_exists?(name, bool=true)
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
- # mocks as a file library
69
- def mock_library(lib, options={})
70
- options = {:file_string=>'', :exists=>true}.merge!(options)
71
- File.expects(:exists?).with(FileLibrary.library_file(lib.to_s, Boson.repo.dir)).
72
- at_least(1).returns(options.delete(:exists))
73
- File.expects(:read).returns(options.delete(:file_string))
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 load(lib, options={})
77
- # prevent conflicts with existing File.read stubs
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
- def create_library(libraries, attributes={})
115
- libraries = [libraries] unless libraries.is_a?(Array)
116
- libraries.map {|e|
117
- lib = Library.new({:name=>e}.update(attributes))
118
- Manager.add_library(lib); lib
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
- def aborts_with(regex)
123
- BinRunner.expects(:abort).with {|e| e[regex] }
124
- yield
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
- class Bacon::Context
129
- include TestHelpers
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.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-02-11 00:00:00.000000000Z
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: &70363074548340 !ruby/object:Gem::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.9.8
21
+ version: 0.10.4
44
22
  type: :development
45
23
  prerelease: false
46
- version_requirements: *70363074548340
24
+ version_requirements: *70219859552560
47
25
  - !ruby/object:Gem::Dependency
48
26
  name: bacon
49
- requirement: &70363074547880 !ruby/object:Gem::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: *70363074547880
35
+ version_requirements: *70219859552020
58
36
  - !ruby/object:Gem::Dependency
59
37
  name: mocha-on-bacon
60
- requirement: &70363074547500 !ruby/object:Gem::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: *70363074547500
46
+ version_requirements: *70219859551540
69
47
  - !ruby/object:Gem::Dependency
70
48
  name: bacon-bits
71
- requirement: &70363074547000 !ruby/object:Gem::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: *70363074547000
57
+ version_requirements: *70219859551080
80
58
  - !ruby/object:Gem::Dependency
81
- name: rake
82
- requirement: &70363074546540 !ruby/object:Gem::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: '0'
65
+ version: 0.4.0
88
66
  type: :development
89
67
  prerelease: false
90
- version_requirements: *70363074546540
91
- description: Boson is a command/task framework with the power to turn any ruby method
92
- into a full-fledged executable with options. Some unique features that differentiate
93
- it from rake and thor include being usable from irb and the commandline, optional
94
- automated views generated by hirb and allowing libraries to be written as plain
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.rdoc
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/namespace.rb
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/runners/bin_runner.rb
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/pipes_test.rb
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
- - deps.rip
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.10
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