thor 0.12.2 → 0.12.3
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/CHANGELOG.rdoc +3 -5
- data/bin/thor +1 -0
- data/lib/thor.rb +35 -37
- data/lib/thor/actions.rb +1 -0
- data/lib/thor/actions/create_file.rb +2 -2
- data/lib/thor/actions/file_manipulation.rb +4 -4
- data/lib/thor/actions/inject_into_file.rb +1 -1
- data/lib/thor/core_ext/file_binary_read.rb +9 -0
- data/lib/thor/group.rb +39 -27
- data/lib/thor/runner.rb +40 -40
- data/lib/thor/shell/color.rb +1 -1
- data/lib/thor/task.rb +13 -14
- data/lib/thor/util.rb +4 -22
- data/lib/thor/version.rb +1 -1
- data/spec/actions/create_file_spec.rb +7 -7
- data/spec/actions/directory_spec.rb +1 -1
- data/spec/actions/file_manipulation_spec.rb +15 -15
- data/spec/actions_spec.rb +14 -13
- data/spec/group_spec.rb +1 -7
- data/spec/runner_spec.rb +30 -34
- data/spec/shell/basic_spec.rb +43 -43
- data/spec/shell/color_spec.rb +6 -6
- data/spec/spec_helper.rb +4 -4
- data/spec/task_spec.rb +11 -9
- data/spec/thor_spec.rb +9 -12
- data/spec/util_spec.rb +7 -31
- metadata +3 -29
data/spec/shell/basic_spec.rb
CHANGED
@@ -17,81 +17,81 @@ describe Thor::Shell::Basic do
|
|
17
17
|
|
18
18
|
describe "#ask" do
|
19
19
|
it "prints a message to the user and gets the response" do
|
20
|
-
|
21
|
-
|
20
|
+
$stdout.should_receive(:print).with("Should I overwrite it? ")
|
21
|
+
$stdin.should_receive(:gets).and_return('Sure')
|
22
22
|
shell.ask("Should I overwrite it?").must == "Sure"
|
23
23
|
end
|
24
24
|
end
|
25
25
|
|
26
26
|
describe "#yes?" do
|
27
27
|
it "asks the user and returns true if the user replies yes" do
|
28
|
-
|
29
|
-
|
28
|
+
$stdout.should_receive(:print).with("Should I overwrite it? ")
|
29
|
+
$stdin.should_receive(:gets).and_return('y')
|
30
30
|
shell.yes?("Should I overwrite it?").must be_true
|
31
31
|
|
32
|
-
|
33
|
-
|
32
|
+
$stdout.should_receive(:print).with("Should I overwrite it? ")
|
33
|
+
$stdin.should_receive(:gets).and_return('n')
|
34
34
|
shell.yes?("Should I overwrite it?").must_not be_true
|
35
35
|
end
|
36
36
|
end
|
37
37
|
|
38
38
|
describe "#no?" do
|
39
39
|
it "asks the user and returns true if the user replies no" do
|
40
|
-
|
41
|
-
|
40
|
+
$stdout.should_receive(:print).with("Should I overwrite it? ")
|
41
|
+
$stdin.should_receive(:gets).and_return('n')
|
42
42
|
shell.no?("Should I overwrite it?").must be_true
|
43
43
|
|
44
|
-
|
45
|
-
|
44
|
+
$stdout.should_receive(:print).with("Should I overwrite it? ")
|
45
|
+
$stdin.should_receive(:gets).and_return('Yes')
|
46
46
|
shell.no?("Should I overwrite it?").must be_false
|
47
47
|
end
|
48
48
|
end
|
49
49
|
|
50
50
|
describe "#say" do
|
51
51
|
it "prints a message to the user" do
|
52
|
-
|
52
|
+
$stdout.should_receive(:puts).with("Running...")
|
53
53
|
shell.say("Running...")
|
54
54
|
end
|
55
55
|
|
56
56
|
it "prints a message to the user without new line if it ends with a whitespace" do
|
57
|
-
|
57
|
+
$stdout.should_receive(:print).with("Running... ")
|
58
58
|
shell.say("Running... ")
|
59
59
|
end
|
60
60
|
|
61
61
|
it "prints a message to the user without new line" do
|
62
|
-
|
62
|
+
$stdout.should_receive(:print).with("Running...")
|
63
63
|
shell.say("Running...", nil, false)
|
64
64
|
end
|
65
65
|
end
|
66
66
|
|
67
67
|
describe "#say_status" do
|
68
68
|
it "prints a message to the user with status" do
|
69
|
-
|
69
|
+
$stdout.should_receive(:puts).with(" create ~/.thor/task.thor")
|
70
70
|
shell.say_status(:create, "~/.thor/task.thor")
|
71
71
|
end
|
72
72
|
|
73
73
|
it "always use new line" do
|
74
|
-
|
74
|
+
$stdout.should_receive(:puts).with(" create ")
|
75
75
|
shell.say_status(:create, "")
|
76
76
|
end
|
77
77
|
|
78
78
|
it "does not print a message if base is set to quiet" do
|
79
79
|
base = MyCounter.new [1,2]
|
80
|
-
|
80
|
+
base.should_receive(:options).and_return(:quiet => true)
|
81
81
|
|
82
|
-
|
82
|
+
$stdout.should_not_receive(:puts)
|
83
83
|
shell.base = base
|
84
84
|
shell.say_status(:created, "~/.thor/task.thor")
|
85
85
|
end
|
86
86
|
|
87
87
|
it "does not print a message if log status is set to false" do
|
88
|
-
|
88
|
+
$stdout.should_not_receive(:puts)
|
89
89
|
shell.say_status(:created, "~/.thor/task.thor", false)
|
90
90
|
end
|
91
91
|
|
92
92
|
it "uses padding to set messages left margin" do
|
93
93
|
shell.padding = 2
|
94
|
-
|
94
|
+
$stdout.should_receive(:puts).with(" create ~/.thor/task.thor")
|
95
95
|
shell.say_status(:create, "~/.thor/task.thor")
|
96
96
|
end
|
97
97
|
end
|
@@ -123,7 +123,7 @@ TABLE
|
|
123
123
|
end
|
124
124
|
|
125
125
|
it "uses maximum terminal width" do
|
126
|
-
|
126
|
+
shell.should_receive(:terminal_width).and_return(20)
|
127
127
|
content = capture(:stdout){ shell.print_table(@table, :ident => 2, :truncate => true) }
|
128
128
|
content.must == <<-TABLE
|
129
129
|
abc #123 firs...
|
@@ -135,41 +135,41 @@ TABLE
|
|
135
135
|
|
136
136
|
describe "#file_collision" do
|
137
137
|
it "shows a menu with options" do
|
138
|
-
|
139
|
-
|
138
|
+
$stdout.should_receive(:print).with('Overwrite foo? (enter "h" for help) [Ynaqh] ')
|
139
|
+
$stdin.should_receive(:gets).and_return('n')
|
140
140
|
shell.file_collision('foo')
|
141
141
|
end
|
142
142
|
|
143
143
|
it "returns true if the user choose default option" do
|
144
|
-
|
145
|
-
|
144
|
+
$stdout.stub!(:print)
|
145
|
+
$stdin.should_receive(:gets).and_return('')
|
146
146
|
shell.file_collision('foo').must be_true
|
147
147
|
end
|
148
148
|
|
149
149
|
it "returns false if the user choose no" do
|
150
|
-
|
151
|
-
|
150
|
+
$stdout.stub!(:print)
|
151
|
+
$stdin.should_receive(:gets).and_return('n')
|
152
152
|
shell.file_collision('foo').must be_false
|
153
153
|
end
|
154
154
|
|
155
155
|
it "returns true if the user choose yes" do
|
156
|
-
|
157
|
-
|
156
|
+
$stdout.stub!(:print)
|
157
|
+
$stdin.should_receive(:gets).and_return('y')
|
158
158
|
shell.file_collision('foo').must be_true
|
159
159
|
end
|
160
160
|
|
161
161
|
it "shows help usage if the user choose help" do
|
162
|
-
|
163
|
-
|
164
|
-
|
162
|
+
$stdout.stub!(:print)
|
163
|
+
$stdin.should_receive(:gets).and_return('h')
|
164
|
+
$stdin.should_receive(:gets).and_return('n')
|
165
165
|
help = capture(:stdout){ shell.file_collision('foo') }
|
166
166
|
help.must =~ /h \- help, show this help/
|
167
167
|
end
|
168
168
|
|
169
169
|
it "quits if the user choose quit" do
|
170
|
-
|
171
|
-
|
172
|
-
|
170
|
+
$stdout.stub!(:print)
|
171
|
+
$stdout.should_receive(:puts).with('Aborting...')
|
172
|
+
$stdin.should_receive(:gets).and_return('q')
|
173
173
|
|
174
174
|
lambda {
|
175
175
|
shell.file_collision('foo')
|
@@ -177,27 +177,27 @@ TABLE
|
|
177
177
|
end
|
178
178
|
|
179
179
|
it "always returns true if the user choose always" do
|
180
|
-
|
181
|
-
|
180
|
+
$stdout.should_receive(:print).with('Overwrite foo? (enter "h" for help) [Ynaqh] ')
|
181
|
+
$stdin.should_receive(:gets).and_return('a')
|
182
182
|
|
183
183
|
shell.file_collision('foo').must be_true
|
184
184
|
|
185
|
-
|
185
|
+
$stdout.should_not_receive(:print)
|
186
186
|
shell.file_collision('foo').must be_true
|
187
187
|
end
|
188
188
|
|
189
189
|
describe "when a block is given" do
|
190
190
|
it "displays diff options to the user" do
|
191
|
-
|
192
|
-
|
191
|
+
$stdout.should_receive(:print).with('Overwrite foo? (enter "h" for help) [Ynaqdh] ')
|
192
|
+
$stdin.should_receive(:gets).and_return('s')
|
193
193
|
shell.file_collision('foo'){ }
|
194
194
|
end
|
195
195
|
|
196
196
|
it "invokes the diff command" do
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
197
|
+
$stdout.stub!(:print)
|
198
|
+
$stdin.should_receive(:gets).and_return('d')
|
199
|
+
$stdin.should_receive(:gets).and_return('n')
|
200
|
+
shell.should_receive(:system).with(/diff -u/)
|
201
201
|
capture(:stdout){ shell.file_collision('foo'){ } }
|
202
202
|
end
|
203
203
|
end
|
data/spec/shell/color_spec.rb
CHANGED
@@ -7,19 +7,19 @@ describe Thor::Shell::Color do
|
|
7
7
|
|
8
8
|
describe "#say" do
|
9
9
|
it "set the color if specified" do
|
10
|
-
|
10
|
+
$stdout.should_receive(:puts).with("\e[32mWow! Now we have colors!\e[0m")
|
11
11
|
shell.say "Wow! Now we have colors!", :green
|
12
12
|
end
|
13
13
|
|
14
14
|
it "does not use a new line even with colors" do
|
15
|
-
|
15
|
+
$stdout.should_receive(:print).with("\e[32mWow! Now we have colors! \e[0m")
|
16
16
|
shell.say "Wow! Now we have colors! ", :green
|
17
17
|
end
|
18
18
|
end
|
19
19
|
|
20
20
|
describe "#say_status" do
|
21
21
|
it "uses color to say status" do
|
22
|
-
|
22
|
+
$stdout.should_receive(:puts).with("\e[1m\e[31m conflict\e[0m README")
|
23
23
|
shell.say_status :conflict, "README", :red
|
24
24
|
end
|
25
25
|
end
|
@@ -27,9 +27,9 @@ describe Thor::Shell::Color do
|
|
27
27
|
describe "#file_collision" do
|
28
28
|
describe "when a block is given" do
|
29
29
|
it "invokes the diff command" do
|
30
|
-
|
31
|
-
|
32
|
-
|
30
|
+
$stdout.stub!(:print)
|
31
|
+
$stdin.should_receive(:gets).and_return('d')
|
32
|
+
$stdin.should_receive(:gets).and_return('n')
|
33
33
|
|
34
34
|
output = capture(:stdout){ shell.file_collision('spec/fixtures/doc/README'){ "README\nEND\n" } }
|
35
35
|
output.must =~ /\e\[31m\- __start__\e\[0m/
|
data/spec/spec_helper.rb
CHANGED
@@ -5,9 +5,11 @@ require 'thor'
|
|
5
5
|
require 'stringio'
|
6
6
|
|
7
7
|
require 'rubygems'
|
8
|
-
require '
|
8
|
+
require 'rdoc'
|
9
9
|
require 'diff/lcs' # You need diff/lcs installed to run specs (but not to run Thor).
|
10
10
|
|
11
|
+
$thor_runner = true
|
12
|
+
|
11
13
|
# Load fixtures
|
12
14
|
load File.join(File.dirname(__FILE__), "fixtures", "task.thor")
|
13
15
|
load File.join(File.dirname(__FILE__), "fixtures", "group.thor")
|
@@ -25,8 +27,6 @@ Kernel.module_eval do
|
|
25
27
|
end
|
26
28
|
|
27
29
|
Spec::Runner.configure do |config|
|
28
|
-
config.mock_with :rr
|
29
|
-
|
30
30
|
def capture(stream)
|
31
31
|
begin
|
32
32
|
stream = stream.to_s
|
@@ -48,5 +48,5 @@ Spec::Runner.configure do |config|
|
|
48
48
|
File.join(File.dirname(__FILE__), 'sandbox')
|
49
49
|
end
|
50
50
|
|
51
|
-
alias silence capture
|
51
|
+
alias :silence :capture
|
52
52
|
end
|
data/spec/task_spec.rb
CHANGED
@@ -11,20 +11,20 @@ describe Thor::Task do
|
|
11
11
|
|
12
12
|
describe "#formatted_usage" do
|
13
13
|
it "includes namespace within usage" do
|
14
|
-
stub(
|
15
|
-
stub(
|
14
|
+
Object.stub!(:namespace).and_return("foo")
|
15
|
+
Object.stub!(:arguments).and_return([])
|
16
16
|
task(:bar => :required).formatted_usage(Object).must == "foo:can_has --bar=BAR"
|
17
17
|
end
|
18
18
|
|
19
19
|
it "removes default from namespace" do
|
20
|
-
stub(
|
21
|
-
stub(
|
20
|
+
Object.stub!(:namespace).and_return("default:foo")
|
21
|
+
Object.stub!(:arguments).and_return([])
|
22
22
|
task(:bar => :required).formatted_usage(Object).must == ":foo:can_has --bar=BAR"
|
23
23
|
end
|
24
24
|
|
25
25
|
it "injects arguments into usage" do
|
26
|
-
stub(
|
27
|
-
stub(
|
26
|
+
Object.stub!(:namespace).and_return("foo")
|
27
|
+
Object.stub!(:arguments).and_return([ Thor::Argument.new(:bar, nil, true, :string) ])
|
28
28
|
task(:foo => :required).formatted_usage(Object).must == "foo:can_has BAR --foo=FOO"
|
29
29
|
end
|
30
30
|
end
|
@@ -54,15 +54,17 @@ describe Thor::Task do
|
|
54
54
|
|
55
55
|
describe "#run" do
|
56
56
|
it "runs a task by calling a method in the given instance" do
|
57
|
-
mock = mock
|
57
|
+
mock = mock()
|
58
|
+
mock.should_receive(:send).with("can_has", 1, 2, 3)
|
58
59
|
task.run(mock, [1, 2, 3])
|
59
60
|
end
|
60
61
|
|
61
62
|
it "raises an error if the method to be invoked is private" do
|
62
|
-
mock = mock
|
63
|
+
mock = mock()
|
64
|
+
mock.should_receive(:private_methods).and_return(['can_has'])
|
63
65
|
lambda {
|
64
66
|
task.run(mock)
|
65
|
-
}.must raise_error(Thor::UndefinedTaskError, "the 'can_has' task of
|
67
|
+
}.must raise_error(Thor::UndefinedTaskError, "the 'can_has' task of Spec::Mocks::Mock is private")
|
66
68
|
end
|
67
69
|
end
|
68
70
|
end
|
data/spec/thor_spec.rb
CHANGED
@@ -156,9 +156,9 @@ describe Thor do
|
|
156
156
|
end
|
157
157
|
|
158
158
|
it "uses the maximum terminal size to show tasks" do
|
159
|
-
|
160
|
-
|
161
|
-
|
159
|
+
@shell.should_receive(:terminal_width).and_return(80)
|
160
|
+
content = capture(:stdout){ MyScript.help(shell) }
|
161
|
+
content.must =~ /aaa\.\.\.$/
|
162
162
|
end
|
163
163
|
|
164
164
|
it "provides description for tasks from classes in the same namespace" do
|
@@ -184,7 +184,7 @@ describe Thor do
|
|
184
184
|
|
185
185
|
describe "for a specific task" do
|
186
186
|
it "provides full help info when talking about a specific task" do
|
187
|
-
capture(:stdout) { MyScript.
|
187
|
+
capture(:stdout) { MyScript.task_help(shell, "foo") }.must == <<END
|
188
188
|
Usage:
|
189
189
|
thor my_script:foo BAR
|
190
190
|
|
@@ -199,21 +199,18 @@ END
|
|
199
199
|
|
200
200
|
it "raises an error if the task can't be found" do
|
201
201
|
lambda {
|
202
|
-
MyScript.
|
202
|
+
MyScript.task_help(shell, "unknown")
|
203
203
|
}.must raise_error(Thor::Error, "task 'unknown' could not be found in namespace 'my_script'")
|
204
204
|
end
|
205
205
|
end
|
206
206
|
|
207
|
-
describe "
|
208
|
-
it "
|
209
|
-
capture(:stdout){ MyScript.help
|
207
|
+
describe "instance method" do
|
208
|
+
it "calls the class method" do
|
209
|
+
capture(:stdout){ MyScript.start(["help"]) }.must =~ /Tasks:/
|
210
210
|
end
|
211
|
-
end
|
212
211
|
|
213
|
-
describe "instance method" do
|
214
212
|
it "calls the class method" do
|
215
|
-
|
216
|
-
MyScript.start(["help"])
|
213
|
+
capture(:stdout){ MyScript.start(["help", "foo"]) }.must =~ /Usage:/
|
217
214
|
end
|
218
215
|
end
|
219
216
|
end
|
data/spec/util_spec.rb
CHANGED
@@ -129,7 +129,7 @@ describe Thor::Util do
|
|
129
129
|
|
130
130
|
describe "#user_home" do
|
131
131
|
before(:each) do
|
132
|
-
stub(
|
132
|
+
ENV.stub!(:[])
|
133
133
|
Thor::Util.clear_user_home!
|
134
134
|
end
|
135
135
|
|
@@ -138,7 +138,7 @@ describe Thor::Util do
|
|
138
138
|
end
|
139
139
|
|
140
140
|
it "returns the *unix system path if file cannot be expanded and separator does not exist" do
|
141
|
-
|
141
|
+
File.should_receive(:expand_path).with("~").and_raise(RuntimeError)
|
142
142
|
previous_value = File::ALT_SEPARATOR
|
143
143
|
capture(:stderr){ File.const_set(:ALT_SEPARATOR, false) }
|
144
144
|
Thor::Util.user_home.must == "/"
|
@@ -146,7 +146,7 @@ describe Thor::Util do
|
|
146
146
|
end
|
147
147
|
|
148
148
|
it "returns the windows system path if file cannot be expanded and a separator exists" do
|
149
|
-
|
149
|
+
File.should_receive(:expand_path).with("~").and_raise(RuntimeError)
|
150
150
|
previous_value = File::ALT_SEPARATOR
|
151
151
|
capture(:stderr){ File.const_set(:ALT_SEPARATOR, true) }
|
152
152
|
Thor::Util.user_home.must == "C:/"
|
@@ -154,43 +154,19 @@ describe Thor::Util do
|
|
154
154
|
end
|
155
155
|
|
156
156
|
it "returns HOME/.thor if set" do
|
157
|
-
stub(
|
157
|
+
ENV.stub!(:[]).with("HOME").and_return("/home/user/")
|
158
158
|
Thor::Util.user_home.must == "/home/user/"
|
159
159
|
end
|
160
160
|
|
161
161
|
it "returns path with HOMEDRIVE and HOMEPATH if set" do
|
162
|
-
stub(
|
163
|
-
stub(
|
162
|
+
ENV.stub!(:[]).with("HOMEDRIVE").and_return("D:/")
|
163
|
+
ENV.stub!(:[]).with("HOMEPATH").and_return("Documents and Settings/James")
|
164
164
|
Thor::Util.user_home.must == "D:/Documents and Settings/James"
|
165
165
|
end
|
166
166
|
|
167
167
|
it "returns APPDATA/.thor if set" do
|
168
|
-
stub(
|
168
|
+
ENV.stub!(:[]).with("APPDATA").and_return("/home/user/")
|
169
169
|
Thor::Util.user_home.must == "/home/user/"
|
170
170
|
end
|
171
171
|
end
|
172
|
-
|
173
|
-
describe "#convert_constants_to_namespaces" do
|
174
|
-
before(:each) do
|
175
|
-
@hash = {
|
176
|
-
:git => {
|
177
|
-
:constants => [Object, "Thor::Sandbox::Package", Thor::CoreExt::OrderedHash]
|
178
|
-
}
|
179
|
-
}
|
180
|
-
end
|
181
|
-
|
182
|
-
it "converts constants in the hash to namespaces" do
|
183
|
-
Thor::Util.convert_constants_to_namespaces(@hash)
|
184
|
-
@hash[:git][:namespaces].must == [ "object", "package", "thor:core_ext:ordered_hash" ]
|
185
|
-
end
|
186
|
-
|
187
|
-
it "returns true if the hash changed" do
|
188
|
-
Thor::Util.convert_constants_to_namespaces(@hash).must be_true
|
189
|
-
end
|
190
|
-
|
191
|
-
it "does not add namespaces to the hash if namespaces were already added" do
|
192
|
-
Thor::Util.convert_constants_to_namespaces(@hash)
|
193
|
-
Thor::Util.convert_constants_to_namespaces(@hash).must be_false
|
194
|
-
end
|
195
|
-
end
|
196
172
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: thor
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.12.
|
4
|
+
version: 0.12.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Yehuda Katz
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2010-01-
|
13
|
+
date: 2010-01-18 00:00:00 +01:00
|
14
14
|
default_executable:
|
15
15
|
dependencies: []
|
16
16
|
|
@@ -41,6 +41,7 @@ files:
|
|
41
41
|
- lib/thor/actions/file_manipulation.rb
|
42
42
|
- lib/thor/actions/inject_into_file.rb
|
43
43
|
- lib/thor/base.rb
|
44
|
+
- lib/thor/core_ext/file_binary_read.rb
|
44
45
|
- lib/thor/core_ext/hash_with_indifferent_access.rb
|
45
46
|
- lib/thor/core_ext/ordered_hash.rb
|
46
47
|
- lib/thor/error.rb
|
@@ -115,38 +116,11 @@ test_files:
|
|
115
116
|
- spec/task_spec.rb
|
116
117
|
- spec/thor_spec.rb
|
117
118
|
- spec/util_spec.rb
|
118
|
-
- spec/actions/create_file_spec.rb
|
119
|
-
- spec/actions/directory_spec.rb
|
120
|
-
- spec/actions/empty_directory_spec.rb
|
121
|
-
- spec/actions/file_manipulation_spec.rb
|
122
|
-
- spec/actions/inject_into_file_spec.rb
|
123
|
-
- spec/actions_spec.rb
|
124
|
-
- spec/base_spec.rb
|
125
|
-
- spec/core_ext/hash_with_indifferent_access_spec.rb
|
126
|
-
- spec/core_ext/ordered_hash_spec.rb
|
127
|
-
- spec/fixtures/application.rb
|
128
|
-
- spec/fixtures/bundle/execute.rb
|
129
119
|
- spec/fixtures/bundle/main.thor
|
130
120
|
- spec/fixtures/doc/%file_name%.rb.tt
|
131
|
-
- spec/fixtures/doc/config.rb
|
132
121
|
- spec/fixtures/doc/README
|
133
122
|
- spec/fixtures/group.thor
|
134
123
|
- spec/fixtures/invoke.thor
|
135
124
|
- spec/fixtures/script.thor
|
136
125
|
- spec/fixtures/task.thor
|
137
|
-
- spec/group_spec.rb
|
138
|
-
- spec/invocation_spec.rb
|
139
|
-
- spec/parser/argument_spec.rb
|
140
|
-
- spec/parser/arguments_spec.rb
|
141
|
-
- spec/parser/option_spec.rb
|
142
|
-
- spec/parser/options_spec.rb
|
143
|
-
- spec/rake_compat_spec.rb
|
144
|
-
- spec/runner_spec.rb
|
145
|
-
- spec/shell/basic_spec.rb
|
146
|
-
- spec/shell/color_spec.rb
|
147
|
-
- spec/shell_spec.rb
|
148
126
|
- spec/spec.opts
|
149
|
-
- spec/spec_helper.rb
|
150
|
-
- spec/task_spec.rb
|
151
|
-
- spec/thor_spec.rb
|
152
|
-
- spec/util_spec.rb
|