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.
- data/.autotest +8 -0
- data/.document +5 -0
- data/.gemtest +0 -0
- data/.gitignore +44 -0
- data/.rspec +2 -0
- data/.travis.yml +9 -0
- data/CHANGELOG.rdoc +4 -4
- data/Gemfile +19 -0
- data/{LICENSE → LICENSE.md} +2 -2
- data/README.md +21 -300
- data/Thorfile +21 -15
- data/lib/thor.rb +56 -11
- data/lib/thor/actions.rb +7 -3
- data/lib/thor/actions/create_link.rb +1 -1
- data/lib/thor/actions/directory.rb +7 -3
- data/lib/thor/actions/empty_directory.rb +24 -5
- data/lib/thor/actions/file_manipulation.rb +40 -2
- data/lib/thor/base.rb +66 -28
- data/lib/thor/error.rb +6 -1
- data/lib/thor/group.rb +20 -8
- data/lib/thor/invocation.rb +4 -2
- data/lib/thor/parser/arguments.rb +6 -2
- data/lib/thor/parser/option.rb +3 -2
- data/lib/thor/parser/options.rb +13 -8
- data/lib/thor/rake_compat.rb +13 -8
- data/lib/thor/runner.rb +16 -4
- data/lib/thor/shell.rb +2 -2
- data/lib/thor/shell/basic.rb +86 -29
- data/lib/thor/shell/color.rb +40 -4
- data/lib/thor/shell/html.rb +28 -26
- data/lib/thor/task.rb +26 -8
- data/lib/thor/util.rb +26 -7
- data/lib/thor/version.rb +1 -1
- data/spec/actions/create_link_spec.rb +81 -0
- data/spec/actions/empty_directory_spec.rb +32 -0
- data/spec/actions/file_manipulation_spec.rb +61 -1
- data/spec/actions_spec.rb +4 -0
- data/spec/base_spec.rb +10 -5
- data/spec/exit_condition_spec.rb +19 -0
- data/spec/fixtures/script.thor +8 -2
- data/spec/group_spec.rb +39 -1
- data/spec/parser/arguments_spec.rb +1 -0
- data/spec/parser/options_spec.rb +12 -2
- data/spec/rake_compat_spec.rb +11 -7
- data/spec/register_spec.rb +43 -0
- data/spec/runner_spec.rb +34 -3
- data/spec/shell/basic_spec.rb +50 -3
- data/spec/shell/color_spec.rb +46 -6
- data/spec/shell/html_spec.rb +10 -5
- data/spec/spec_helper.rb +4 -0
- data/spec/task_spec.rb +26 -16
- data/spec/thor_spec.rb +56 -3
- data/thor.gemspec +26 -0
- metadata +174 -117
data/spec/shell/color_spec.rb
CHANGED
@@ -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
|
-
|
11
|
-
|
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
|
-
|
16
|
-
|
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
|
-
|
23
|
-
|
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
|
|
data/spec/shell/html_spec.rb
CHANGED
@@ -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
|
-
|
11
|
-
|
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
|
-
|
16
|
-
|
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('<
|
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
|
data/spec/spec_helper.rb
CHANGED
@@ -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
|
data/spec/task_spec.rb
CHANGED
@@ -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
|
-
|
15
|
-
|
16
|
-
|
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
|
-
|
21
|
-
|
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
|
-
|
27
|
-
|
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].
|
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(:
|
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
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
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
|
data/spec/thor_spec.rb
CHANGED
@@ -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"].
|
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 == '
|
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
|
data/thor.gemspec
ADDED
@@ -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
|
-
|
5
|
-
prerelease:
|
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
|
-
-
|
9
|
+
- José Valim
|
15
10
|
autorequire:
|
16
11
|
bindir: bin
|
17
12
|
cert_chain: []
|
18
|
-
|
19
|
-
|
20
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
41
|
+
version_requirements: !ruby/object:Gem::Requirement
|
56
42
|
none: false
|
57
|
-
requirements:
|
43
|
+
requirements:
|
58
44
|
- - ~>
|
59
|
-
- !ruby/object:Gem::Version
|
60
|
-
|
61
|
-
|
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
|
-
|
57
|
+
version_requirements: !ruby/object:Gem::Requirement
|
71
58
|
none: false
|
72
|
-
requirements:
|
73
|
-
- -
|
74
|
-
- !ruby/object:Gem::Version
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
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
|
-
|
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
|
-
|
91
|
-
segments:
|
92
|
-
- 2
|
93
|
-
- 1
|
94
|
-
version: "2.1"
|
85
|
+
- !ruby/object:Gem::Version
|
86
|
+
version: '2.3'
|
95
87
|
type: :development
|
96
|
-
|
97
|
-
|
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
|
-
|
105
|
+
version_requirements: !ruby/object:Gem::Requirement
|
101
106
|
none: false
|
102
|
-
requirements:
|
107
|
+
requirements:
|
103
108
|
- - ~>
|
104
|
-
- !ruby/object:Gem::Version
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
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
|
-
|
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
|
-
|
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
|
-
-
|
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
|
-
|
215
|
-
|
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.
|
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:
|