thor 0.14.1 → 0.14.2
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/lib/thor/actions/file_manipulation.rb +18 -1
- data/lib/thor/parser/options.rb +7 -1
- data/lib/thor/version.rb +1 -1
- data/spec/actions/file_manipulation_spec.rb +7 -0
- data/spec/fixtures/doc/block_helper.rb +3 -0
- data/spec/fixtures/group.thor +8 -1
- data/spec/parser/options_spec.rb +18 -0
- metadata +6 -4
@@ -86,7 +86,7 @@ class Thor
|
|
86
86
|
context = instance_eval('binding')
|
87
87
|
|
88
88
|
create_file destination, nil, config do
|
89
|
-
content = ERB.new(::File.binread(source), nil, '-').result(context)
|
89
|
+
content = ERB.new(::File.binread(source), nil, '-', '@output_buffer').result(context)
|
90
90
|
content = block.call(content) if block
|
91
91
|
content
|
92
92
|
end
|
@@ -225,5 +225,22 @@ class Thor
|
|
225
225
|
end
|
226
226
|
alias :remove_dir :remove_file
|
227
227
|
|
228
|
+
private
|
229
|
+
attr_accessor :output_buffer
|
230
|
+
def concat(string)
|
231
|
+
@output_buffer.concat(string)
|
232
|
+
end
|
233
|
+
|
234
|
+
def capture(*args, &block)
|
235
|
+
with_output_buffer { block.call(*args) }
|
236
|
+
end
|
237
|
+
|
238
|
+
def with_output_buffer(buf = '') #:nodoc:
|
239
|
+
self.output_buffer, old_buffer = buf, output_buffer
|
240
|
+
yield
|
241
|
+
output_buffer
|
242
|
+
ensure
|
243
|
+
self.output_buffer = old_buffer
|
244
|
+
end
|
228
245
|
end
|
229
246
|
end
|
data/lib/thor/parser/options.rb
CHANGED
@@ -50,7 +50,7 @@ class Thor
|
|
50
50
|
end
|
51
51
|
|
52
52
|
def parse(args)
|
53
|
-
@pile = args.dup
|
53
|
+
@pile = except_underscores(args.dup)
|
54
54
|
|
55
55
|
while peek
|
56
56
|
if current_is_switch?
|
@@ -169,6 +169,12 @@ class Thor
|
|
169
169
|
@non_assigned_required.delete(option)
|
170
170
|
send(:"parse_#{option.type}", switch)
|
171
171
|
end
|
172
|
+
|
173
|
+
# Except underscores in commandline switches
|
174
|
+
def except_underscores(args)
|
175
|
+
args.map {|x| x =~ /^--/ ? x.gsub('_', '-') : x }
|
176
|
+
end
|
177
|
+
|
172
178
|
|
173
179
|
end
|
174
180
|
end
|
data/lib/thor/version.rb
CHANGED
@@ -117,6 +117,13 @@ describe Thor::Actions do
|
|
117
117
|
end
|
118
118
|
|
119
119
|
describe "#template" do
|
120
|
+
it "allows using block helpers in the template" do
|
121
|
+
action :template, "doc/block_helper.rb"
|
122
|
+
|
123
|
+
file = File.join(destination_root, "doc/block_helper.rb")
|
124
|
+
File.read(file).must == "Hello world!"
|
125
|
+
end
|
126
|
+
|
120
127
|
it "evaluates the template given as source" do
|
121
128
|
runner.instance_variable_set("@klass", "Config")
|
122
129
|
action :template, "doc/config.rb"
|
data/spec/fixtures/group.thor
CHANGED
@@ -37,6 +37,13 @@ FOO
|
|
37
37
|
super
|
38
38
|
base.source_paths.unshift(File.expand_path(File.join(File.dirname(__FILE__), "doc")))
|
39
39
|
end
|
40
|
+
|
41
|
+
no_tasks do
|
42
|
+
def world(&block)
|
43
|
+
result = capture(&block)
|
44
|
+
concat(result.strip + " world!")
|
45
|
+
end
|
46
|
+
end
|
40
47
|
end
|
41
48
|
|
42
49
|
class ClearCounter < MyCounter
|
@@ -85,4 +92,4 @@ class TaskConflict < Thor::Group
|
|
85
92
|
def group
|
86
93
|
puts "group"
|
87
94
|
end
|
88
|
-
end
|
95
|
+
end
|
data/spec/parser/options_spec.rb
CHANGED
@@ -47,6 +47,11 @@ describe Thor::Options do
|
|
47
47
|
it "accepts hashes" do
|
48
48
|
Thor::Options.to_switches(:count => {:a => :b}).must == "--count a:b"
|
49
49
|
end
|
50
|
+
|
51
|
+
it "accepts underscored options" do
|
52
|
+
Thor::Options.to_switches(:under_score_option => "foo bar").must == '--under_score_option "foo bar"'
|
53
|
+
end
|
54
|
+
|
50
55
|
end
|
51
56
|
|
52
57
|
describe "#parse" do
|
@@ -115,6 +120,19 @@ describe Thor::Options do
|
|
115
120
|
parse("--asdf---asdf", "baz", "--foo", "--asdf---dsf--asdf").must == {"foo" => "--asdf---dsf--asdf"}
|
116
121
|
check_unknown!
|
117
122
|
end
|
123
|
+
|
124
|
+
it "excepts underscores in commandline args hash for boolean" do
|
125
|
+
create :foo_bar => :boolean
|
126
|
+
parse("--foo_bar")["foo_bar"].must == true
|
127
|
+
parse("--no_foo_bar")["foo_bar"].must == false
|
128
|
+
end
|
129
|
+
|
130
|
+
it "excepts underscores in commandline args hash for strings" do
|
131
|
+
create :foo_bar => :string, :baz_foo => :string
|
132
|
+
parse("--foo_bar", "baz")["foo_bar"].must == "baz"
|
133
|
+
parse("--baz_foo", "foo bar")["baz_foo"].must == "foo bar"
|
134
|
+
end
|
135
|
+
|
118
136
|
|
119
137
|
describe "with no input" do
|
120
138
|
it "and no switches returns an empty hash" do
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: thor
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 35
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 14
|
9
|
-
-
|
10
|
-
version: 0.14.
|
9
|
+
- 2
|
10
|
+
version: 0.14.2
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Yehuda Katz
|
@@ -16,7 +16,7 @@ autorequire:
|
|
16
16
|
bindir: bin
|
17
17
|
cert_chain: []
|
18
18
|
|
19
|
-
date: 2010-09-
|
19
|
+
date: 2010-09-24 00:00:00 +02:00
|
20
20
|
default_executable:
|
21
21
|
dependencies: []
|
22
22
|
|
@@ -78,6 +78,7 @@ files:
|
|
78
78
|
- spec/core_ext/ordered_hash_spec.rb
|
79
79
|
- spec/fixtures/application.rb
|
80
80
|
- spec/fixtures/bundle/execute.rb
|
81
|
+
- spec/fixtures/doc/block_helper.rb
|
81
82
|
- spec/fixtures/doc/config.rb
|
82
83
|
- spec/group_spec.rb
|
83
84
|
- spec/invocation_spec.rb
|
@@ -151,6 +152,7 @@ test_files:
|
|
151
152
|
- spec/core_ext/ordered_hash_spec.rb
|
152
153
|
- spec/fixtures/application.rb
|
153
154
|
- spec/fixtures/bundle/execute.rb
|
155
|
+
- spec/fixtures/doc/block_helper.rb
|
154
156
|
- spec/fixtures/doc/config.rb
|
155
157
|
- spec/group_spec.rb
|
156
158
|
- spec/invocation_spec.rb
|