thor 0.14.6 → 0.15.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 (54) hide show
  1. data/.autotest +8 -0
  2. data/.document +5 -0
  3. data/.gemtest +0 -0
  4. data/.gitignore +44 -0
  5. data/.rspec +2 -0
  6. data/.travis.yml +9 -0
  7. data/CHANGELOG.rdoc +4 -4
  8. data/Gemfile +19 -0
  9. data/{LICENSE → LICENSE.md} +2 -2
  10. data/README.md +21 -300
  11. data/Thorfile +21 -15
  12. data/lib/thor.rb +56 -11
  13. data/lib/thor/actions.rb +7 -3
  14. data/lib/thor/actions/create_link.rb +1 -1
  15. data/lib/thor/actions/directory.rb +7 -3
  16. data/lib/thor/actions/empty_directory.rb +24 -5
  17. data/lib/thor/actions/file_manipulation.rb +40 -2
  18. data/lib/thor/base.rb +66 -28
  19. data/lib/thor/error.rb +6 -1
  20. data/lib/thor/group.rb +20 -8
  21. data/lib/thor/invocation.rb +4 -2
  22. data/lib/thor/parser/arguments.rb +6 -2
  23. data/lib/thor/parser/option.rb +3 -2
  24. data/lib/thor/parser/options.rb +13 -8
  25. data/lib/thor/rake_compat.rb +13 -8
  26. data/lib/thor/runner.rb +16 -4
  27. data/lib/thor/shell.rb +2 -2
  28. data/lib/thor/shell/basic.rb +86 -29
  29. data/lib/thor/shell/color.rb +40 -4
  30. data/lib/thor/shell/html.rb +28 -26
  31. data/lib/thor/task.rb +26 -8
  32. data/lib/thor/util.rb +26 -7
  33. data/lib/thor/version.rb +1 -1
  34. data/spec/actions/create_link_spec.rb +81 -0
  35. data/spec/actions/empty_directory_spec.rb +32 -0
  36. data/spec/actions/file_manipulation_spec.rb +61 -1
  37. data/spec/actions_spec.rb +4 -0
  38. data/spec/base_spec.rb +10 -5
  39. data/spec/exit_condition_spec.rb +19 -0
  40. data/spec/fixtures/script.thor +8 -2
  41. data/spec/group_spec.rb +39 -1
  42. data/spec/parser/arguments_spec.rb +1 -0
  43. data/spec/parser/options_spec.rb +12 -2
  44. data/spec/rake_compat_spec.rb +11 -7
  45. data/spec/register_spec.rb +43 -0
  46. data/spec/runner_spec.rb +34 -3
  47. data/spec/shell/basic_spec.rb +50 -3
  48. data/spec/shell/color_spec.rb +46 -6
  49. data/spec/shell/html_spec.rb +10 -5
  50. data/spec/spec_helper.rb +4 -0
  51. data/spec/task_spec.rb +26 -16
  52. data/spec/thor_spec.rb +56 -3
  53. data/thor.gemspec +26 -0
  54. metadata +174 -117
@@ -7,20 +7,60 @@ describe Thor::Shell::Color do
7
7
 
8
8
  describe "#say" do
9
9
  it "set the color if specified" do
10
- $stdout.should_receive(:puts).with("\e[32mWow! Now we have colors!\e[0m")
11
- shell.say "Wow! Now we have colors!", :green
10
+ out = capture(:stdout) do
11
+ shell.say "Wow! Now we have colors!", :green
12
+ end
13
+
14
+ out.chomp.should == "\e[32mWow! Now we have colors!\e[0m"
12
15
  end
13
16
 
14
17
  it "does not use a new line even with colors" do
15
- $stdout.should_receive(:print).with("\e[32mWow! Now we have colors! \e[0m")
16
- shell.say "Wow! Now we have colors! ", :green
18
+ out = capture(:stdout) do
19
+ shell.say "Wow! Now we have colors! ", :green
20
+ end
21
+
22
+ out.chomp.should == "\e[32mWow! Now we have colors! \e[0m"
23
+ end
24
+
25
+ it "handles an Array of colors" do
26
+ out = capture(:stdout) do
27
+ shell.say "Wow! Now we have colors *and* background colors", [:green, :on_red, :bold]
28
+ end
29
+
30
+ out.chomp.should == "\e[32m\e[41m\e[1mWow! Now we have colors *and* background colors\e[0m"
17
31
  end
18
32
  end
19
33
 
20
34
  describe "#say_status" do
21
35
  it "uses color to say status" do
22
- $stdout.should_receive(:puts).with("\e[1m\e[31m conflict\e[0m README")
23
- shell.say_status :conflict, "README", :red
36
+ out = capture(:stdout) do
37
+ shell.say_status :conflict, "README", :red
38
+ end
39
+
40
+ out.chomp.should == "\e[1m\e[31m conflict\e[0m README"
41
+ end
42
+ end
43
+
44
+ describe "#set_color" do
45
+ it "colors a string with a foreground color" do
46
+ red = shell.set_color "hi!", :red
47
+ red.should == "\e[31mhi!\e[0m"
48
+ end
49
+
50
+ it "colors a string with a background color" do
51
+ on_red = shell.set_color "hi!", :white, :on_red
52
+ on_red.should == "\e[37m\e[41mhi!\e[0m"
53
+ end
54
+
55
+ it "colors a string with a bold color" do
56
+ bold = shell.set_color "hi!", :white, true
57
+ bold.should == "\e[1m\e[37mhi!\e[0m"
58
+
59
+ bold = shell.set_color "hi!", :white, :bold
60
+ bold.should == "\e[37m\e[1mhi!\e[0m"
61
+
62
+ bold = shell.set_color "hi!", :white, :on_red, :bold
63
+ bold.should == "\e[37m\e[41m\e[1mhi!\e[0m"
24
64
  end
25
65
  end
26
66
 
@@ -7,19 +7,24 @@ describe Thor::Shell::HTML do
7
7
 
8
8
  describe "#say" do
9
9
  it "set the color if specified" do
10
- $stdout.should_receive(:puts).with('<span style="color: green;">Wow! Now we have colors!</span>')
11
- shell.say "Wow! Now we have colors!", :green
10
+ out = capture(:stdout) { shell.say "Wow! Now we have colors!", :green }
11
+ out.chomp.should == '<span style="color: green;">Wow! Now we have colors!</span>'
12
+ end
13
+
14
+ it "sets bold if specified" do
15
+ out = capture(:stdout) { shell.say "Wow! Now we have colors *and* bold!", [:green, :bold] }
16
+ out.chomp.should == '<span style="color: green; font-weight: bold;">Wow! Now we have colors *and* bold!</span>'
12
17
  end
13
18
 
14
19
  it "does not use a new line even with colors" do
15
- $stdout.should_receive(:print).with('<span style="color: green;">Wow! Now we have colors! </span>')
16
- shell.say "Wow! Now we have colors! ", :green
20
+ out = capture(:stdout) { shell.say "Wow! Now we have colors! ", :green }
21
+ out.chomp.should == '<span style="color: green;">Wow! Now we have colors! </span>'
17
22
  end
18
23
  end
19
24
 
20
25
  describe "#say_status" do
21
26
  it "uses color to say status" do
22
- $stdout.should_receive(:puts).with('<strong><span style="color: red;"> conflict</span></strong> README')
27
+ $stdout.should_receive(:puts).with('<span style="color: red; font-weight: bold;"> conflict</span> README')
23
28
  shell.say_status :conflict, "README", :red
24
29
  end
25
30
  end
@@ -29,6 +29,10 @@ load File.join(File.dirname(__FILE__), "fixtures", "script.thor")
29
29
  load File.join(File.dirname(__FILE__), "fixtures", "invoke.thor")
30
30
 
31
31
  RSpec.configure do |config|
32
+ config.before :each do
33
+ ARGV.replace []
34
+ end
35
+
32
36
  def capture(stream)
33
37
  begin
34
38
  stream = stream.to_s
@@ -11,21 +11,23 @@ describe Thor::Task do
11
11
 
12
12
  describe "#formatted_usage" do
13
13
  it "includes namespace within usage" do
14
- Object.stub!(:namespace).and_return("foo")
15
- Object.stub!(:arguments).and_return([])
16
- task(:bar => :required).formatted_usage(Object).should == "foo:can_has --bar=BAR"
14
+ object = Struct.new(:namespace, :arguments).new("foo", [])
15
+ task(:bar => :required).formatted_usage(object).should == "foo:can_has --bar=BAR"
16
+ end
17
+
18
+ it "includes subcommand name within subcommand usage" do
19
+ object = Struct.new(:namespace, :arguments).new("main:foo", [])
20
+ task(:bar => :required).formatted_usage(object, false, true).should == "foo can_has --bar=BAR"
17
21
  end
18
22
 
19
23
  it "removes default from namespace" do
20
- Object.stub!(:namespace).and_return("default:foo")
21
- Object.stub!(:arguments).and_return([])
22
- task(:bar => :required).formatted_usage(Object).should == ":foo:can_has --bar=BAR"
24
+ object = Struct.new(:namespace, :arguments).new("default:foo", [])
25
+ task(:bar => :required).formatted_usage(object).should == ":foo:can_has --bar=BAR"
23
26
  end
24
27
 
25
28
  it "injects arguments into usage" do
26
- Object.stub!(:namespace).and_return("foo")
27
- Object.stub!(:arguments).and_return([ Thor::Argument.new(:bar, nil, true, :string) ])
28
- task(:foo => :required).formatted_usage(Object).should == "foo:can_has BAR --foo=FOO"
29
+ object = Struct.new(:namespace, :arguments).new("foo", [Thor::Argument.new(:bar, nil, true, :string)])
30
+ task(:foo => :required).formatted_usage(object).should == "foo:can_has BAR --foo=FOO"
29
31
  end
30
32
  end
31
33
 
@@ -48,22 +50,30 @@ describe Thor::Task do
48
50
  it "dup options hash" do
49
51
  task = Thor::Task.new("can_has", nil, nil, nil, :foo => true, :bar => :required)
50
52
  task.dup.options.delete(:foo)
51
- task.options[:foo].should_not be_nil
53
+ task.options[:foo].should be
52
54
  end
53
55
  end
54
56
 
55
57
  describe "#run" do
56
58
  it "runs a task by calling a method in the given instance" do
57
59
  mock = mock()
58
- mock.should_receive(:send).with("can_has", 1, 2, 3)
59
- task.run(mock, [1, 2, 3])
60
+ mock.should_receive(:can_has).and_return {|*args| args }
61
+ task.run(mock, [1, 2, 3]).should == [1, 2, 3]
60
62
  end
61
63
 
62
64
  it "raises an error if the method to be invoked is private" do
63
- mock = mock()
64
- mock.should_receive(:private_methods).and_return(['can_has'])
65
- mock.class.should_receive(:handle_no_task_error).with("can_has")
66
- task.run(mock)
65
+ klass = Class.new do
66
+ def self.handle_no_task_error(name)
67
+ name
68
+ end
69
+
70
+ private
71
+ def can_has
72
+ "fail"
73
+ end
74
+ end
75
+
76
+ task.run(klass.new).should == "can_has"
67
77
  end
68
78
  end
69
79
  end
@@ -61,7 +61,7 @@ describe Thor do
61
61
  end
62
62
 
63
63
  it "adds a task to the tasks list if the updated task is on the parent class" do
64
- Scripts::MyScript.tasks["example_default_task"].should_not be_nil
64
+ Scripts::MyScript.tasks["example_default_task"].should be
65
65
  end
66
66
 
67
67
  it "clones the parent task" do
@@ -168,11 +168,11 @@ describe Thor do
168
168
  end
169
169
 
170
170
  it "does not set options in attributes" do
171
- MyScript.start(["with_optional", "--all"]).should == [nil, { "all" => true }]
171
+ MyScript.start(["with_optional", "--all"]).should == [nil, { "all" => true }, []]
172
172
  end
173
173
 
174
174
  it "raises an error if a required param is not provided" do
175
- capture(:stderr) { MyScript.start(["animal"]) }.strip.should == '"animal" was called incorrectly. Call as "thor my_script:animal TYPE".'
175
+ capture(:stderr) { MyScript.start(["animal"]) }.strip.should == 'thor animal requires at least 1 argument: "thor my_script:animal TYPE".'
176
176
  end
177
177
 
178
178
  it "raises an error if the invoked task does not exist" do
@@ -195,6 +195,31 @@ describe Thor do
195
195
  it "raises when an exception happens within the task call" do
196
196
  lambda { MyScript.start(["call_myself_with_wrong_arity"]) }.should raise_error(ArgumentError)
197
197
  end
198
+
199
+ context "when the user enters an unambiguous substring of a command" do
200
+ it "should invoke a command" do
201
+ MyScript.start(["z"]).should == MyScript.start(["zoo"])
202
+ end
203
+
204
+ it "should invoke a command, even when there's an alias the resolves to the same command" do
205
+ MyScript.start(["hi"]).should == MyScript.start(["hidden"])
206
+ end
207
+
208
+ it "should invoke an alias" do
209
+ MyScript.start(["animal_pri"]).should == MyScript.start(["zoo"])
210
+ end
211
+ end
212
+
213
+ context "when the user enters an ambiguous substring of a command" do
214
+ it "should raise an exception that explains the ambiguity" do
215
+ lambda { MyScript.start(["call"]) }.should raise_error(ArgumentError, 'Ambiguous task call matches [call_myself_with_wrong_arity, call_unexistent_method]')
216
+ end
217
+
218
+ it "should raise an exception when there is an alias" do
219
+ lambda { MyScript.start(["f"]) }.should raise_error(ArgumentError, 'Ambiguous task f matches [foo, fu]')
220
+ end
221
+ end
222
+
198
223
  end
199
224
 
200
225
  describe "#subcommand" do
@@ -331,4 +356,32 @@ HELP
331
356
  }.should be_empty
332
357
  end
333
358
  end
359
+
360
+ describe "edge-cases" do
361
+ it "can handle boolean options followed by arguments" do
362
+ klass = Class.new(Thor) do
363
+ method_option :loud, :type => :boolean
364
+ desc "hi NAME", "say hi to name"
365
+ def hi(name)
366
+ name.upcase! if options[:loud]
367
+ "Hi #{name}"
368
+ end
369
+ end
370
+
371
+ klass.start(["hi", "jose"]).should == "Hi jose"
372
+ klass.start(["hi", "jose", "--loud"]).should == "Hi JOSE"
373
+ klass.start(["hi", "--loud", "jose"]).should == "Hi JOSE"
374
+ end
375
+
376
+ it "passes through unknown options" do
377
+ klass = Class.new(Thor) do
378
+ desc "unknown", "passing unknown options"
379
+ def unknown(*args)
380
+ args
381
+ end
382
+ end
383
+
384
+ klass.start(["unknown", "foo", "--bar", "baz", "bat", "--bam"]).should == ["foo", "--bar", "baz", "bat", "--bam"]
385
+ end
386
+ end
334
387
  end
@@ -0,0 +1,26 @@
1
+ # -*- encoding: utf-8 -*-
2
+ require File.expand_path('../lib/thor/version', __FILE__)
3
+
4
+ Gem::Specification.new do |s|
5
+ s.add_development_dependency 'bundler', '~> 1.0'
6
+ s.add_development_dependency 'fakeweb', '~> 1.3'
7
+ s.add_development_dependency 'rake', '~> 0.9'
8
+ s.add_development_dependency 'rdoc', '~> 3.9'
9
+ s.add_development_dependency 'rspec', '~> 2.3'
10
+ s.add_development_dependency 'simplecov', '~> 0.4'
11
+ s.add_development_dependency 'childlabor'
12
+ s.authors = ['Yehuda Katz', 'José Valim']
13
+ s.description = %q{A scripting framework that replaces rake, sake and rubigen}
14
+ s.email = 'ruby-thor@googlegroups.com'
15
+ s.executables = `git ls-files -- bin/*`.split("\n").map{|f| File.basename(f)}
16
+ s.extra_rdoc_files = ['CHANGELOG.rdoc', 'LICENSE.md', 'README.md', 'Thorfile']
17
+ s.files = `git ls-files`.split("\n")
18
+ s.homepage = 'http://github.com/wycats/thor'
19
+ s.name = 'thor'
20
+ s.rdoc_options = ['--charset=UTF-8']
21
+ s.require_paths = ['lib']
22
+ s.required_rubygems_version = Gem::Requirement.new('>= 1.3.6')
23
+ s.summary = s.description
24
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
25
+ s.version = Thor::VERSION
26
+ end
metadata CHANGED
@@ -1,128 +1,152 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: thor
3
- version: !ruby/object:Gem::Version
4
- hash: 43
5
- prerelease: false
6
- segments:
7
- - 0
8
- - 14
9
- - 6
10
- version: 0.14.6
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.15.0
5
+ prerelease:
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - Yehuda Katz
14
- - "Jos\xC3\xA9 Valim"
9
+ - José Valim
15
10
  autorequire:
16
11
  bindir: bin
17
12
  cert_chain: []
18
-
19
- date: 2010-11-20 00:00:00 +01:00
20
- default_executable:
21
- dependencies:
22
- - !ruby/object:Gem::Dependency
13
+ date: 2012-04-29 00:00:00.000000000 Z
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
23
16
  name: bundler
24
- prerelease: false
25
- requirement: &id001 !ruby/object:Gem::Requirement
17
+ requirement: !ruby/object:Gem::Requirement
26
18
  none: false
27
- requirements:
19
+ requirements:
28
20
  - - ~>
29
- - !ruby/object:Gem::Version
30
- hash: 15
31
- segments:
32
- - 1
33
- - 0
34
- version: "1.0"
21
+ - !ruby/object:Gem::Version
22
+ version: '1.0'
35
23
  type: :development
36
- version_requirements: *id001
37
- - !ruby/object:Gem::Dependency
38
- name: fakeweb
39
24
  prerelease: false
40
- requirement: &id002 !ruby/object:Gem::Requirement
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ none: false
27
+ requirements:
28
+ - - ~>
29
+ - !ruby/object:Gem::Version
30
+ version: '1.0'
31
+ - !ruby/object:Gem::Dependency
32
+ name: fakeweb
33
+ requirement: !ruby/object:Gem::Requirement
41
34
  none: false
42
- requirements:
35
+ requirements:
43
36
  - - ~>
44
- - !ruby/object:Gem::Version
45
- hash: 9
46
- segments:
47
- - 1
48
- - 3
49
- version: "1.3"
37
+ - !ruby/object:Gem::Version
38
+ version: '1.3'
50
39
  type: :development
51
- version_requirements: *id002
52
- - !ruby/object:Gem::Dependency
53
- name: rdoc
54
40
  prerelease: false
55
- requirement: &id003 !ruby/object:Gem::Requirement
41
+ version_requirements: !ruby/object:Gem::Requirement
56
42
  none: false
57
- requirements:
43
+ requirements:
58
44
  - - ~>
59
- - !ruby/object:Gem::Version
60
- hash: 9
61
- segments:
62
- - 2
63
- - 5
64
- version: "2.5"
65
- type: :development
66
- version_requirements: *id003
67
- - !ruby/object:Gem::Dependency
45
+ - !ruby/object:Gem::Version
46
+ version: '1.3'
47
+ - !ruby/object:Gem::Dependency
68
48
  name: rake
49
+ requirement: !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - ~>
53
+ - !ruby/object:Gem::Version
54
+ version: '0.9'
55
+ type: :development
69
56
  prerelease: false
70
- requirement: &id004 !ruby/object:Gem::Requirement
57
+ version_requirements: !ruby/object:Gem::Requirement
71
58
  none: false
72
- requirements:
73
- - - ">="
74
- - !ruby/object:Gem::Version
75
- hash: 27
76
- segments:
77
- - 0
78
- - 8
79
- version: "0.8"
59
+ requirements:
60
+ - - ~>
61
+ - !ruby/object:Gem::Version
62
+ version: '0.9'
63
+ - !ruby/object:Gem::Dependency
64
+ name: rdoc
65
+ requirement: !ruby/object:Gem::Requirement
66
+ none: false
67
+ requirements:
68
+ - - ~>
69
+ - !ruby/object:Gem::Version
70
+ version: '3.9'
80
71
  type: :development
81
- version_requirements: *id004
82
- - !ruby/object:Gem::Dependency
83
- name: rspec
84
72
  prerelease: false
85
- requirement: &id005 !ruby/object:Gem::Requirement
73
+ version_requirements: !ruby/object:Gem::Requirement
74
+ none: false
75
+ requirements:
76
+ - - ~>
77
+ - !ruby/object:Gem::Version
78
+ version: '3.9'
79
+ - !ruby/object:Gem::Dependency
80
+ name: rspec
81
+ requirement: !ruby/object:Gem::Requirement
86
82
  none: false
87
- requirements:
83
+ requirements:
88
84
  - - ~>
89
- - !ruby/object:Gem::Version
90
- hash: 1
91
- segments:
92
- - 2
93
- - 1
94
- version: "2.1"
85
+ - !ruby/object:Gem::Version
86
+ version: '2.3'
95
87
  type: :development
96
- version_requirements: *id005
97
- - !ruby/object:Gem::Dependency
88
+ prerelease: false
89
+ version_requirements: !ruby/object:Gem::Requirement
90
+ none: false
91
+ requirements:
92
+ - - ~>
93
+ - !ruby/object:Gem::Version
94
+ version: '2.3'
95
+ - !ruby/object:Gem::Dependency
98
96
  name: simplecov
97
+ requirement: !ruby/object:Gem::Requirement
98
+ none: false
99
+ requirements:
100
+ - - ~>
101
+ - !ruby/object:Gem::Version
102
+ version: '0.4'
103
+ type: :development
99
104
  prerelease: false
100
- requirement: &id006 !ruby/object:Gem::Requirement
105
+ version_requirements: !ruby/object:Gem::Requirement
101
106
  none: false
102
- requirements:
107
+ requirements:
103
108
  - - ~>
104
- - !ruby/object:Gem::Version
105
- hash: 13
106
- segments:
107
- - 0
108
- - 3
109
- version: "0.3"
109
+ - !ruby/object:Gem::Version
110
+ version: '0.4'
111
+ - !ruby/object:Gem::Dependency
112
+ name: childlabor
113
+ requirement: !ruby/object:Gem::Requirement
114
+ none: false
115
+ requirements:
116
+ - - ! '>='
117
+ - !ruby/object:Gem::Version
118
+ version: '0'
110
119
  type: :development
111
- version_requirements: *id006
120
+ prerelease: false
121
+ version_requirements: !ruby/object:Gem::Requirement
122
+ none: false
123
+ requirements:
124
+ - - ! '>='
125
+ - !ruby/object:Gem::Version
126
+ version: '0'
112
127
  description: A scripting framework that replaces rake, sake and rubigen
113
- email:
114
- - ruby-thor@googlegroups.com
115
- executables:
128
+ email: ruby-thor@googlegroups.com
129
+ executables:
116
130
  - rake2thor
117
131
  - thor
118
132
  extensions: []
119
-
120
- extra_rdoc_files:
133
+ extra_rdoc_files:
121
134
  - CHANGELOG.rdoc
122
- - LICENSE
135
+ - LICENSE.md
136
+ - README.md
137
+ - Thorfile
138
+ files:
139
+ - .autotest
140
+ - .document
141
+ - .gemtest
142
+ - .gitignore
143
+ - .rspec
144
+ - .travis.yml
145
+ - CHANGELOG.rdoc
146
+ - Gemfile
147
+ - LICENSE.md
123
148
  - README.md
124
149
  - Thorfile
125
- files:
126
150
  - bin/rake2thor
127
151
  - bin/thor
128
152
  - lib/thor.rb
@@ -155,6 +179,7 @@ files:
155
179
  - lib/thor/util.rb
156
180
  - lib/thor/version.rb
157
181
  - spec/actions/create_file_spec.rb
182
+ - spec/actions/create_link_spec.rb
158
183
  - spec/actions/directory_spec.rb
159
184
  - spec/actions/empty_directory_spec.rb
160
185
  - spec/actions/file_manipulation_spec.rb
@@ -163,14 +188,17 @@ files:
163
188
  - spec/base_spec.rb
164
189
  - spec/core_ext/hash_with_indifferent_access_spec.rb
165
190
  - spec/core_ext/ordered_hash_spec.rb
191
+ - spec/exit_condition_spec.rb
166
192
  - spec/fixtures/application.rb
167
193
  - spec/fixtures/bundle/execute.rb
168
194
  - spec/fixtures/bundle/main.thor
169
195
  - spec/fixtures/doc/%file_name%.rb.tt
196
+ - spec/fixtures/doc/COMMENTER
170
197
  - spec/fixtures/doc/README
171
198
  - spec/fixtures/doc/block_helper.rb
172
199
  - spec/fixtures/doc/components/.empty_directory
173
200
  - spec/fixtures/doc/config.rb
201
+ - spec/fixtures/doc/config.yaml.tt
174
202
  - spec/fixtures/group.thor
175
203
  - spec/fixtures/invoke.thor
176
204
  - spec/fixtures/path with spaces
@@ -193,45 +221,74 @@ files:
193
221
  - spec/task_spec.rb
194
222
  - spec/thor_spec.rb
195
223
  - spec/util_spec.rb
196
- - CHANGELOG.rdoc
197
- - LICENSE
198
- - README.md
199
- - Thorfile
200
- has_rdoc: true
224
+ - thor.gemspec
201
225
  homepage: http://github.com/wycats/thor
202
226
  licenses: []
203
-
204
227
  post_install_message:
205
- rdoc_options:
228
+ rdoc_options:
206
229
  - --charset=UTF-8
207
- require_paths:
230
+ require_paths:
208
231
  - lib
209
- required_ruby_version: !ruby/object:Gem::Requirement
232
+ required_ruby_version: !ruby/object:Gem::Requirement
210
233
  none: false
211
- requirements:
212
- - - ">="
213
- - !ruby/object:Gem::Version
214
- hash: 3
215
- segments:
216
- - 0
217
- version: "0"
218
- required_rubygems_version: !ruby/object:Gem::Requirement
234
+ requirements:
235
+ - - ! '>='
236
+ - !ruby/object:Gem::Version
237
+ version: '0'
238
+ required_rubygems_version: !ruby/object:Gem::Requirement
219
239
  none: false
220
- requirements:
221
- - - ">="
222
- - !ruby/object:Gem::Version
223
- hash: 23
224
- segments:
225
- - 1
226
- - 3
227
- - 6
240
+ requirements:
241
+ - - ! '>='
242
+ - !ruby/object:Gem::Version
228
243
  version: 1.3.6
229
244
  requirements: []
230
-
231
245
  rubyforge_project:
232
- rubygems_version: 1.3.7
246
+ rubygems_version: 1.8.24
233
247
  signing_key:
234
248
  specification_version: 3
235
249
  summary: A scripting framework that replaces rake, sake and rubigen
236
- test_files: []
237
-
250
+ test_files:
251
+ - spec/actions/create_file_spec.rb
252
+ - spec/actions/create_link_spec.rb
253
+ - spec/actions/directory_spec.rb
254
+ - spec/actions/empty_directory_spec.rb
255
+ - spec/actions/file_manipulation_spec.rb
256
+ - spec/actions/inject_into_file_spec.rb
257
+ - spec/actions_spec.rb
258
+ - spec/base_spec.rb
259
+ - spec/core_ext/hash_with_indifferent_access_spec.rb
260
+ - spec/core_ext/ordered_hash_spec.rb
261
+ - spec/exit_condition_spec.rb
262
+ - spec/fixtures/application.rb
263
+ - spec/fixtures/bundle/execute.rb
264
+ - spec/fixtures/bundle/main.thor
265
+ - spec/fixtures/doc/%file_name%.rb.tt
266
+ - spec/fixtures/doc/COMMENTER
267
+ - spec/fixtures/doc/README
268
+ - spec/fixtures/doc/block_helper.rb
269
+ - spec/fixtures/doc/components/.empty_directory
270
+ - spec/fixtures/doc/config.rb
271
+ - spec/fixtures/doc/config.yaml.tt
272
+ - spec/fixtures/group.thor
273
+ - spec/fixtures/invoke.thor
274
+ - spec/fixtures/path with spaces
275
+ - spec/fixtures/script.thor
276
+ - spec/fixtures/task.thor
277
+ - spec/group_spec.rb
278
+ - spec/invocation_spec.rb
279
+ - spec/parser/argument_spec.rb
280
+ - spec/parser/arguments_spec.rb
281
+ - spec/parser/option_spec.rb
282
+ - spec/parser/options_spec.rb
283
+ - spec/rake_compat_spec.rb
284
+ - spec/register_spec.rb
285
+ - spec/runner_spec.rb
286
+ - spec/shell/basic_spec.rb
287
+ - spec/shell/color_spec.rb
288
+ - spec/shell/html_spec.rb
289
+ - spec/shell_spec.rb
290
+ - spec/spec_helper.rb
291
+ - spec/task_spec.rb
292
+ - spec/thor_spec.rb
293
+ - spec/util_spec.rb
294
+ has_rdoc: