burke 0.2.1 → 0.2.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/Rakefile +0 -2
- data/VERSION +1 -1
- data/lib/burke.rb +195 -92
- data/spec/conventional_project/COPYING +0 -0
- data/spec/conventional_project/README.md +0 -0
- data/spec/conventional_project/Rakefile +10 -0
- data/spec/conventional_project/VERSION +1 -0
- data/spec/conventional_project/lib/main.rb +0 -0
- data/spec/conventional_project_spec.rb +36 -0
- data/spec/spec_helper.rb +24 -1
- metadata +31 -15
- data/lib/mash.rb +0 -48
- data/spec/mash_spec.rb +0 -11
data/Rakefile
CHANGED
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.2.
|
1
|
+
0.2.2
|
data/lib/burke.rb
CHANGED
@@ -1,8 +1,46 @@
|
|
1
1
|
require 'rubygems'
|
2
|
-
require 'rubygems/installer'
|
3
2
|
require 'rake'
|
4
|
-
require '
|
5
|
-
|
3
|
+
require 'hashie'
|
4
|
+
|
5
|
+
class Smash < Hashie::Mash
|
6
|
+
def initialize *args
|
7
|
+
super
|
8
|
+
@read_filters = {}
|
9
|
+
@write_filters = {}
|
10
|
+
end
|
11
|
+
|
12
|
+
def method_missing name, *args
|
13
|
+
key = convert_key(name)
|
14
|
+
if key? key or @read_filters.key? key
|
15
|
+
value = self[key]
|
16
|
+
yield value if block_given?
|
17
|
+
value
|
18
|
+
else
|
19
|
+
super
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
def [](key)
|
24
|
+
filter = @read_filters[convert_key(key)]
|
25
|
+
value = super(key)
|
26
|
+
filter.nil? ? value : filter[value]
|
27
|
+
end
|
28
|
+
|
29
|
+
def []=(key, value)
|
30
|
+
filter = @write_filters[convert_key(key)]
|
31
|
+
value = filter[value] if filter
|
32
|
+
super(key, value)
|
33
|
+
end
|
34
|
+
|
35
|
+
def read_filter key, &block
|
36
|
+
key = convert_key(key)
|
37
|
+
@read_filters[key] = block
|
38
|
+
end
|
39
|
+
|
40
|
+
def write_filter key, &block
|
41
|
+
@write_filters[convert_key(key)] = block
|
42
|
+
end
|
43
|
+
end
|
6
44
|
|
7
45
|
module Burke
|
8
46
|
VERSION = File.read(File.join(File.dirname(File.dirname(__FILE__)), 'VERSION'))
|
@@ -26,86 +64,7 @@ module Burke
|
|
26
64
|
end
|
27
65
|
|
28
66
|
def setup
|
29
|
-
@settings =
|
30
|
-
:dependencies => Mash[],
|
31
|
-
:docs => Mash[],
|
32
|
-
:rspec => Mash[:rcov => Mash[]],
|
33
|
-
:test => Mash[],
|
34
|
-
:gems => GemSettings.new,
|
35
|
-
:clean => [],
|
36
|
-
:clobber => [],
|
37
|
-
]
|
38
|
-
|
39
|
-
@settings.getter_filter :files do |v|
|
40
|
-
if v.nil?
|
41
|
-
v = Dir.glob('{lib,spec,bin}/**/*')
|
42
|
-
v << @settings.docs.readme
|
43
|
-
v << @settings.docs.license
|
44
|
-
v << 'Rakefile' if readable_file? 'Rakefile'
|
45
|
-
v << 'VERSION' if readable_file? 'VERSION'
|
46
|
-
v.compact
|
47
|
-
else
|
48
|
-
v
|
49
|
-
end
|
50
|
-
end
|
51
|
-
|
52
|
-
@settings.getter_filter :version do |v|
|
53
|
-
if v.nil? and readable_file? 'VERSION'
|
54
|
-
File.read('VERSION').strip
|
55
|
-
else
|
56
|
-
v
|
57
|
-
end
|
58
|
-
end
|
59
|
-
|
60
|
-
@settings.docs.getter_filter :readme do |v|
|
61
|
-
if v.nil?
|
62
|
-
files = Dir.glob('{readme,readme.*}', File::FNM_CASEFOLD)
|
63
|
-
files.reject! { |f| !readable_file? f }
|
64
|
-
files.first
|
65
|
-
else
|
66
|
-
v
|
67
|
-
end
|
68
|
-
end
|
69
|
-
|
70
|
-
@settings.docs.getter_filter :license do |v|
|
71
|
-
if v.nil?
|
72
|
-
files = Dir.glob('{license,license.*,copying,copying.*,licence,licence.*}', File::FNM_CASEFOLD)
|
73
|
-
files.reject! { |f| !readable_file? f }
|
74
|
-
files.first
|
75
|
-
else
|
76
|
-
v
|
77
|
-
end
|
78
|
-
end
|
79
|
-
|
80
|
-
@settings.docs.getter_filter :markup do |v|
|
81
|
-
readme = @settings.docs.readme
|
82
|
-
if v.nil? and readme
|
83
|
-
case File.extname(readme).downcase
|
84
|
-
when '.rdoc'
|
85
|
-
'rdoc'
|
86
|
-
when '.md', '.markdown'
|
87
|
-
'markdown'
|
88
|
-
when '.textile'
|
89
|
-
'textile'
|
90
|
-
end
|
91
|
-
else
|
92
|
-
v
|
93
|
-
end
|
94
|
-
end
|
95
|
-
|
96
|
-
@settings.test.getter_filter :test_files do |v|
|
97
|
-
v or Dir['test/**/{*_{test,tc},{test,tc}_*}.rb']
|
98
|
-
end
|
99
|
-
|
100
|
-
@settings.rspec.getter_filter :color do |v|
|
101
|
-
v.nil? ? true : v
|
102
|
-
end
|
103
|
-
|
104
|
-
@settings.rspec.getter_filter :spec_files do |v|
|
105
|
-
v or Dir['spec/**/*_spec.rb']
|
106
|
-
end
|
107
|
-
|
108
|
-
@settings.rspec.setter_filter(:ruby_opts) { |v| [*v] }
|
67
|
+
@settings = create_settings
|
109
68
|
|
110
69
|
yield @settings
|
111
70
|
|
@@ -113,8 +72,15 @@ module Burke
|
|
113
72
|
@settings.gems.platform 'ruby'
|
114
73
|
end
|
115
74
|
|
75
|
+
generate_tasks
|
76
|
+
|
77
|
+
return @settings
|
78
|
+
end
|
79
|
+
|
80
|
+
def generate_tasks
|
116
81
|
begin
|
117
82
|
require 'rake/clean'
|
83
|
+
CLEAN.include(*@settings.clean) if @settings.clean
|
118
84
|
CLOBBER.include(*@settings.clobber) if @settings.clobber
|
119
85
|
rescue LoadError
|
120
86
|
end if @tasks.include? :clean
|
@@ -167,8 +133,12 @@ module Burke
|
|
167
133
|
require 'spec/rake/spectask'
|
168
134
|
r = @settings.rspec
|
169
135
|
opts = []
|
170
|
-
|
171
|
-
|
136
|
+
if r.options_file
|
137
|
+
opts << "--options" << r.options_file
|
138
|
+
else
|
139
|
+
opts << "--colour" if r.color
|
140
|
+
opts << "--format" << r.format if r.format
|
141
|
+
end
|
172
142
|
Spec::Rake::SpecTask.new 'spec' do |t|
|
173
143
|
t.spec_files = r.spec_files
|
174
144
|
t.spec_opts = opts
|
@@ -176,6 +146,7 @@ module Burke
|
|
176
146
|
end
|
177
147
|
|
178
148
|
begin
|
149
|
+
require 'rcov'
|
179
150
|
require 'spec/rake/verify_rcov'
|
180
151
|
|
181
152
|
desc "Run specs with RCov"
|
@@ -216,11 +187,11 @@ module Burke
|
|
216
187
|
rescue LoadError
|
217
188
|
end if @tasks.include? :gems
|
218
189
|
|
219
|
-
|
190
|
+
begin
|
191
|
+
require 'rubygems/installer'
|
220
192
|
GemTaskManager.install_task unless GemTaskManager::TASKS.empty?
|
221
|
-
|
222
|
-
|
223
|
-
@settings
|
193
|
+
rescue LoadError
|
194
|
+
end if @tasks.include? :install
|
224
195
|
end
|
225
196
|
|
226
197
|
def base_gemspec
|
@@ -228,7 +199,7 @@ module Burke
|
|
228
199
|
@base_gemspec = Gem::Specification.new
|
229
200
|
|
230
201
|
attrs = Gem::Specification.attribute_names
|
231
|
-
attrs -= [:dependencies]
|
202
|
+
attrs -= [:dependencies, :development_dependencies]
|
232
203
|
attrs += [:author]
|
233
204
|
|
234
205
|
attrs.each do |attr|
|
@@ -236,8 +207,12 @@ module Burke
|
|
236
207
|
@base_gemspec.send("#{attr}=", value) if value
|
237
208
|
end
|
238
209
|
|
239
|
-
@settings.dependencies.each do |gem,
|
240
|
-
@base_gemspec.add_dependency gem.to_s,
|
210
|
+
@settings.dependencies.each do |gem, requirements|
|
211
|
+
@base_gemspec.add_dependency gem.to_s, *requirements
|
212
|
+
end
|
213
|
+
|
214
|
+
@settings.development_dependencies.each do |gem, requirements|
|
215
|
+
@base_gemspec.add_development_dependency gem.to_s, *requirements
|
241
216
|
end
|
242
217
|
end
|
243
218
|
|
@@ -248,10 +223,138 @@ module Burke
|
|
248
223
|
@settings
|
249
224
|
end
|
250
225
|
|
226
|
+
def create_settings
|
227
|
+
# TODO: put default values in getter filters
|
228
|
+
s = Smash.new
|
229
|
+
s.docs!
|
230
|
+
s.rspec!.rcov!
|
231
|
+
s.test!
|
232
|
+
s.gems = GemSettings.new
|
233
|
+
s.clean = []
|
234
|
+
s.clobber = []
|
235
|
+
|
236
|
+
s.read_filter :dependencies do |v|
|
237
|
+
if v.nil?
|
238
|
+
s.dependencies = Smash.new
|
239
|
+
v = s.dependencies
|
240
|
+
begin
|
241
|
+
require 'bundler'
|
242
|
+
bundler = Bundler.load
|
243
|
+
deps = bundler.dependencies_for(:runtime)
|
244
|
+
if deps.empty?
|
245
|
+
deps = bundler.dependencies_for(:default)
|
246
|
+
end
|
247
|
+
deps.each do |d|
|
248
|
+
v[d.name] = d.requirement.to_s
|
249
|
+
end
|
250
|
+
rescue
|
251
|
+
end
|
252
|
+
end
|
253
|
+
v
|
254
|
+
end
|
255
|
+
|
256
|
+
s.read_filter :development_dependencies do |v|
|
257
|
+
if v.nil?
|
258
|
+
s.development_dependencies = Smash.new
|
259
|
+
v = s.development_dependencies
|
260
|
+
begin
|
261
|
+
require 'bundler'
|
262
|
+
Bundler.load.dependencies_for(:development).each do |d|
|
263
|
+
v[d.name] = d.requirement.to_s
|
264
|
+
end
|
265
|
+
rescue
|
266
|
+
end
|
267
|
+
end
|
268
|
+
v
|
269
|
+
end
|
270
|
+
|
271
|
+
s.read_filter :files do |v|
|
272
|
+
if v.nil?
|
273
|
+
v = Dir['{lib,spec,bin}/**/*']
|
274
|
+
v << s.docs.readme_file
|
275
|
+
v << s.docs.license_file
|
276
|
+
v << s.version_file
|
277
|
+
v << s.rakefile_file
|
278
|
+
v.compact.freeze
|
279
|
+
else
|
280
|
+
v
|
281
|
+
end
|
282
|
+
end
|
283
|
+
|
284
|
+
s.read_filter :rakefile_file do |v|
|
285
|
+
v or find_file('rakefile').freeze
|
286
|
+
end
|
287
|
+
|
288
|
+
s.read_filter :version_file do |v|
|
289
|
+
v or find_file('version{.*,}').freeze
|
290
|
+
end
|
291
|
+
|
292
|
+
s.read_filter :version do |v|
|
293
|
+
if v.nil? and s.version_file
|
294
|
+
File.read(s.version_file).strip.freeze
|
295
|
+
else
|
296
|
+
v
|
297
|
+
end
|
298
|
+
end
|
299
|
+
|
300
|
+
s.docs.read_filter :readme_file do |v|
|
301
|
+
v or find_file('readme{.*,}').freeze
|
302
|
+
end
|
303
|
+
s.docs.read_filter(:readme) { s.docs.readme_file }
|
304
|
+
s.docs.write_filter(:readme) { |v| s.docs.readme_file = v }
|
305
|
+
|
306
|
+
s.docs.read_filter :license_file do |v|
|
307
|
+
v or find_file('{licen{c,s}e,copying}{.*,}').freeze
|
308
|
+
end
|
309
|
+
s.docs.read_filter(:license) { s.docs.license_file }
|
310
|
+
s.docs.write_filter(:license) { |v| s.docs.license_file = v }
|
311
|
+
|
312
|
+
s.docs.read_filter :markup do |v|
|
313
|
+
readme = s.docs.readme
|
314
|
+
if v.nil? and readme
|
315
|
+
case File.extname(readme).downcase
|
316
|
+
when '.rdoc'
|
317
|
+
'rdoc'
|
318
|
+
when '.md', '.markdown'
|
319
|
+
'markdown'
|
320
|
+
when '.textile'
|
321
|
+
'textile'
|
322
|
+
end.freeze
|
323
|
+
else
|
324
|
+
v
|
325
|
+
end
|
326
|
+
end
|
327
|
+
|
328
|
+
s.test.read_filter :test_files do |v|
|
329
|
+
v or Dir['test/**/{*_{test,tc},{test,tc}_*}.rb'].freeze
|
330
|
+
end
|
331
|
+
|
332
|
+
s.rspec.read_filter :options_file do |v|
|
333
|
+
v or find_file('{{spec/,}{spec.opts,.specopts}}').freeze
|
334
|
+
end
|
335
|
+
|
336
|
+
s.rspec.read_filter :color do |v|
|
337
|
+
v.nil? ? true : v
|
338
|
+
end
|
339
|
+
|
340
|
+
s.rspec.read_filter :spec_files do |v|
|
341
|
+
v or Dir['spec/**/*_spec.rb'].freeze
|
342
|
+
end
|
343
|
+
|
344
|
+
s.rspec.write_filter(:ruby_opts) { |v| [*v] }
|
345
|
+
|
346
|
+
return s
|
347
|
+
end
|
348
|
+
|
251
349
|
private
|
252
350
|
def readable_file? file
|
253
351
|
File.readable? file and File.file? file
|
254
352
|
end
|
353
|
+
|
354
|
+
def find_file pattern
|
355
|
+
files = Dir.glob(pattern, File::FNM_CASEFOLD)
|
356
|
+
files.find { |f| readable_file? f }
|
357
|
+
end
|
255
358
|
end
|
256
359
|
|
257
360
|
class GemTaskManager
|
File without changes
|
File without changes
|
@@ -0,0 +1 @@
|
|
1
|
+
1.2.3
|
File without changes
|
@@ -0,0 +1,36 @@
|
|
1
|
+
DIR = File.dirname(File.expand_path(__FILE__))
|
2
|
+
require File.join(DIR, 'spec_helper')
|
3
|
+
|
4
|
+
describe Burke do
|
5
|
+
describe 'settings' do
|
6
|
+
context 'for example of a conventional project' do
|
7
|
+
before do
|
8
|
+
@old_pwd = Dir.pwd
|
9
|
+
Dir.chdir File.join(DIR, 'conventional_project')
|
10
|
+
mock_burke_setup
|
11
|
+
eval(File.read('Rakefile'))
|
12
|
+
@settings = Burke.test_settings
|
13
|
+
end
|
14
|
+
|
15
|
+
subject { @settings }
|
16
|
+
|
17
|
+
its(:name) { should eql 'conventional_project' }
|
18
|
+
|
19
|
+
its(:version_file) { should eql 'VERSION' }
|
20
|
+
its(:rakefile_file) { should eql 'Rakefile' }
|
21
|
+
|
22
|
+
describe 'docs' do
|
23
|
+
subject { @settings.docs }
|
24
|
+
its(:readme_file) { should eql 'README.md' }
|
25
|
+
its(:license_file) { should eql 'COPYING' }
|
26
|
+
its(:markup) { should eql 'markdown' }
|
27
|
+
end
|
28
|
+
|
29
|
+
after do
|
30
|
+
unmock_burke_setup
|
31
|
+
Dir.chdir @old_pwd
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
data/spec/spec_helper.rb
CHANGED
@@ -1,2 +1,25 @@
|
|
1
|
-
|
1
|
+
$LOAD_PATH << File.join(File.dirname(File.expand_path(__FILE__)), 'lib')
|
2
|
+
require 'burke'
|
3
|
+
|
4
|
+
def mock_burke_setup
|
5
|
+
Burke.module_eval do
|
6
|
+
class << self
|
7
|
+
attr_reader :test_settings
|
8
|
+
alias :old_setup :setup
|
9
|
+
|
10
|
+
def setup
|
11
|
+
@test_settings = create_settings
|
12
|
+
yield @test_settings
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
def unmock_burke_setup
|
19
|
+
Burke.module_eval do
|
20
|
+
class << self
|
21
|
+
alias :setup :old_setup
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
2
25
|
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 2
|
8
|
-
-
|
9
|
-
version: 0.2.
|
8
|
+
- 2
|
9
|
+
version: 0.2.2
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Aiden Nibali
|
@@ -14,13 +14,11 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2010-
|
17
|
+
date: 2010-09-26 00:00:00 +10:00
|
18
18
|
default_executable:
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
21
|
-
|
22
|
-
prerelease: false
|
23
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
21
|
+
version_requirements: &id001 !ruby/object:Gem::Requirement
|
24
22
|
requirements:
|
25
23
|
- - ~>
|
26
24
|
- !ruby/object:Gem::Version
|
@@ -29,26 +27,44 @@ dependencies:
|
|
29
27
|
- 8
|
30
28
|
- 7
|
31
29
|
version: 0.8.7
|
30
|
+
requirement: *id001
|
31
|
+
prerelease: false
|
32
32
|
type: :runtime
|
33
|
-
|
33
|
+
name: rake
|
34
|
+
- !ruby/object:Gem::Dependency
|
35
|
+
version_requirements: &id002 !ruby/object:Gem::Requirement
|
36
|
+
requirements:
|
37
|
+
- - ~>
|
38
|
+
- !ruby/object:Gem::Version
|
39
|
+
segments:
|
40
|
+
- 0
|
41
|
+
- 4
|
42
|
+
- 0
|
43
|
+
version: 0.4.0
|
44
|
+
requirement: *id002
|
45
|
+
prerelease: false
|
46
|
+
type: :runtime
|
47
|
+
name: hashie
|
34
48
|
description:
|
35
49
|
email: dismal.denizen@gmail.com
|
36
50
|
executables: []
|
37
51
|
|
38
52
|
extensions: []
|
39
53
|
|
40
|
-
extra_rdoc_files:
|
41
|
-
|
42
|
-
- lib/mash.rb
|
43
|
-
- README.rdoc
|
54
|
+
extra_rdoc_files: []
|
55
|
+
|
44
56
|
files:
|
45
57
|
- lib/burke.rb
|
46
|
-
-
|
58
|
+
- spec/conventional_project_spec.rb
|
59
|
+
- spec/conventional_project/lib/main.rb
|
60
|
+
- spec/conventional_project/Rakefile
|
61
|
+
- spec/conventional_project/README.md
|
62
|
+
- spec/conventional_project/COPYING
|
63
|
+
- spec/conventional_project/VERSION
|
47
64
|
- spec/spec_helper.rb
|
48
|
-
- spec/mash_spec.rb
|
49
65
|
- README.rdoc
|
50
|
-
- Rakefile
|
51
66
|
- VERSION
|
67
|
+
- Rakefile
|
52
68
|
has_rdoc: true
|
53
69
|
homepage: http://github.com/dismaldenizen/burke
|
54
70
|
licenses: []
|
@@ -56,7 +72,7 @@ licenses: []
|
|
56
72
|
post_install_message:
|
57
73
|
rdoc_options:
|
58
74
|
- --title
|
59
|
-
- burke 0.2.
|
75
|
+
- burke 0.2.2
|
60
76
|
- --main
|
61
77
|
- README.rdoc
|
62
78
|
require_paths:
|
data/lib/mash.rb
DELETED
@@ -1,48 +0,0 @@
|
|
1
|
-
class Mash < Hash
|
2
|
-
def initialize *args, &block
|
3
|
-
super
|
4
|
-
end
|
5
|
-
|
6
|
-
def method_missing name, *args, &block
|
7
|
-
if name.to_s =~ /(.*)=/
|
8
|
-
self.[]=($1, *args, &block)
|
9
|
-
else
|
10
|
-
if args.empty?
|
11
|
-
self.[](name, &block)
|
12
|
-
else
|
13
|
-
self.[]=(name, *args, &block)
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|
17
|
-
|
18
|
-
def []=(k, *v)
|
19
|
-
k = k.to_s.downcase.to_sym
|
20
|
-
v = *v if v.one?
|
21
|
-
v = setter_filters[k].call v if setter_filters.has_key? k
|
22
|
-
super k, v
|
23
|
-
end
|
24
|
-
|
25
|
-
def [](k)
|
26
|
-
v = super(k.to_s.downcase.to_sym)
|
27
|
-
v = getter_filters[k].call v if getter_filters.has_key? k
|
28
|
-
yield v if block_given?
|
29
|
-
v
|
30
|
-
end
|
31
|
-
|
32
|
-
def setter_filter key, &block
|
33
|
-
setter_filters[key.to_sym] = block
|
34
|
-
end
|
35
|
-
|
36
|
-
def getter_filter key, &block
|
37
|
-
getter_filters[key.to_sym] = block
|
38
|
-
end
|
39
|
-
|
40
|
-
def setter_filters
|
41
|
-
@setter_filters ||= {}
|
42
|
-
end
|
43
|
-
|
44
|
-
def getter_filters
|
45
|
-
@getter_filters ||= {}
|
46
|
-
end
|
47
|
-
end
|
48
|
-
|
data/spec/mash_spec.rb
DELETED
@@ -1,11 +0,0 @@
|
|
1
|
-
require File.join(File.dirname(File.expand_path(__FILE__)), 'spec_helper')
|
2
|
-
|
3
|
-
describe Mash do
|
4
|
-
context "when representing {:num => 42}" do
|
5
|
-
subject { Mash[:num => 42] }
|
6
|
-
its(:num) { should eql 42 }
|
7
|
-
its(:size) { should eql 1 }
|
8
|
-
its(:to_hash) { should eql :num => 42 }
|
9
|
-
end
|
10
|
-
end
|
11
|
-
|