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.
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