burke 0.2.0 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (6) hide show
  1. data/README.rdoc +2 -15
  2. data/Rakefile +1 -7
  3. data/VERSION +1 -1
  4. data/lib/burke.rb +81 -37
  5. data/lib/mash.rb +24 -1
  6. metadata +5 -5
data/README.rdoc CHANGED
@@ -20,7 +20,6 @@ Here is a sample Rakefile using Burke.
20
20
 
21
21
  require 'rubygems'
22
22
  require 'burke'
23
- require 'fileutils'
24
23
 
25
24
  # Enable all tasks possible
26
25
  Burke.enable_all
@@ -30,10 +29,8 @@ Here is a sample Rakefile using Burke.
30
29
  s.name = 'foo'
31
30
  s.version = '1.2.3'
32
31
  s.summary = 'an example Ruby library with extra foo'
33
- s.files = FileList['lib/**/*.rb']
34
32
 
35
33
  s.docs do |d|
36
- d.readme = 'README'
37
34
  d.markup = 'rdoc'
38
35
  end
39
36
 
@@ -42,25 +39,15 @@ Here is a sample Rakefile using Burke.
42
39
 
43
40
  g.platform 'x86-linux' do |p|
44
41
  p.before do |s|
45
- FileUtils.copy 'native/libfoo-x86-linux.so', 'lib/libfoo.so'
42
+ cp 'native/libfoo-x86-linux.so', 'lib/libfoo.so'
46
43
  s.add_dependency 'ffi'
47
44
  s.files += ['lib/libfoo.so']
48
45
  end
49
46
 
50
47
  p.after do
51
- FileUtils.remove 'lib/libfoo.so'
48
+ rm 'lib/libfoo.so'
52
49
  end
53
50
  end
54
51
  end
55
52
  end
56
53
 
57
- == Default attributes
58
-
59
- * +version+ inferred from contents of 'VERSION' file
60
- * +files+ all files in 'lib' and 'spec' plus detected 'README', 'VERSION',
61
- 'LICENSE', 'COPYING' and/or 'Rakefile'
62
- * +docs.readme+ inferred from files matching 'README[\..*]?', case ignored
63
- * +docs.markup+ inferred from extension of detected README file
64
- * +rspec.spec_files+ 'spec/**/*_spec.rb'
65
- * +rspec.color+ true
66
-
data/Rakefile CHANGED
@@ -10,17 +10,11 @@ Burke.setup do |s|
10
10
  s.email = 'dismal.denizen@gmail.com'
11
11
  s.homepage = "http://github.com/dismaldenizen/burke"
12
12
 
13
- s.dependencies do |d|
14
- d.rake '~> 0.8.7'
15
- end
13
+ s.dependencies.rake '~> 0.8.7'
16
14
 
17
15
  s.has_rdoc = true
18
16
 
19
17
  s.clean = %w[.yardoc]
20
18
  s.clobber = %w[pkg doc html]
21
-
22
- s.gems do |g|
23
- g.platform 'ruby'
24
- end
25
19
  end
26
20
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.0
1
+ 0.2.1
data/lib/burke.rb CHANGED
@@ -6,11 +6,12 @@ require 'mash'
6
6
 
7
7
  module Burke
8
8
  VERSION = File.read(File.join(File.dirname(File.dirname(__FILE__)), 'VERSION'))
9
+ ALL_TASKS = [:clean, :yard, :rdoc, :rspec, :rspec_rcov, :gems, :install, :test]
9
10
  @tasks = []
10
11
 
11
12
  class << self
12
13
  def enable_all opts={}
13
- @tasks = %w[clean yard rdoc rspec rspec_rcov gems install].map {|t| t.to_sym}
14
+ @tasks = ALL_TASKS.dup
14
15
  disable opts[:except] if opts[:except]
15
16
  end
16
17
 
@@ -29,61 +30,89 @@ module Burke
29
30
  :dependencies => Mash[],
30
31
  :docs => Mash[],
31
32
  :rspec => Mash[:rcov => Mash[]],
33
+ :test => Mash[],
32
34
  :gems => GemSettings.new,
33
35
  :clean => [],
34
36
  :clobber => [],
35
37
  ]
36
38
 
37
- @settings.files = Dir.glob('{lib,spec}/**/*')
38
- %w[Rakefile COPYING LICENSE].each do |file|
39
- @settings.files << file if File.exists?(file)
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
40
50
  end
41
51
 
42
- project_files = Dir['*'].reject! {|f| File.directory? f or !File.readable? f}
43
-
44
- version_file = 'VERSION'
45
- if File.readable?(version_file)
46
- @settings.version = File.read(version_file).strip
47
- @settings.files << version_file
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
48
58
  end
49
59
 
50
- license_file = nil
51
- project_files.each do |f|
52
- if %w[license licence copying].include? f.downcase.split('.').first
53
- license_file = f
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
54
67
  end
55
68
  end
56
69
 
57
- if license_file
58
- @settings.docs.license = license_file
59
- @settings.files << license_file
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
60
78
  end
61
79
 
62
- readme_file = nil
63
- project_files.each do |f|
64
- if f.downcase =~ /readme[\..*]?/
65
- readme_file = f if readme_file.nil? or f.length < readme_file.length
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
66
93
  end
67
94
  end
68
95
 
69
- if readme_file
70
- @settings.docs.readme = File.basename readme_file
71
- @settings.files << readme_file
72
- @settings.docs.markup = case File.extname(readme_file).downcase
73
- when '.rdoc'
74
- 'rdoc'
75
- when '.md'
76
- 'markdown'
77
- when '.textile'
78
- 'textile'
79
- end
96
+ @settings.test.getter_filter :test_files do |v|
97
+ v or Dir['test/**/{*_{test,tc},{test,tc}_*}.rb']
80
98
  end
81
99
 
82
- @settings.rspec.spec_files = Dir['spec/**/*_spec.rb']
83
- @settings.rspec.color = true
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] }
84
109
 
85
110
  yield @settings
86
111
 
112
+ if @tasks.include? :gems and GemTaskManager::TASKS.empty?
113
+ @settings.gems.platform 'ruby'
114
+ end
115
+
87
116
  begin
88
117
  require 'rake/clean'
89
118
  CLOBBER.include(*@settings.clobber) if @settings.clobber
@@ -143,7 +172,8 @@ module Burke
143
172
  Spec::Rake::SpecTask.new 'spec' do |t|
144
173
  t.spec_files = r.spec_files
145
174
  t.spec_opts = opts
146
- end unless r.empty?
175
+ t.ruby_opts = r.ruby_opts if r.ruby_opts
176
+ end
147
177
 
148
178
  begin
149
179
  require 'spec/rake/verify_rcov'
@@ -155,7 +185,8 @@ module Burke
155
185
  t.rcov = true
156
186
  t.rcov_opts = ['--exclude', 'spec']
157
187
  end
158
-
188
+
189
+ desc "Run specs with RCov and verify code coverage"
159
190
  RCov::VerifyTask.new('spec:rcov:verify' => 'spec:rcov') do |t|
160
191
  t.threshold = r.rcov.threshold
161
192
  t.index_html = 'coverage/index.html'
@@ -163,7 +194,15 @@ module Burke
163
194
  rescue LoadError
164
195
  end if @tasks.include? :rspec_rcov
165
196
  rescue LoadError
166
- end if @tasks.include? :rspec
197
+ end if @tasks.include? :rspec and !@settings.rspec.spec_files.empty?
198
+
199
+ begin
200
+ require 'rake/testtask'
201
+ Rake::TestTask.new do |t|
202
+ t.test_files = @settings.test.test_files
203
+ end
204
+ rescue LoadError
205
+ end if @tasks.include? :test and !@settings.test.test_files.empty?
167
206
 
168
207
  begin
169
208
  settings.gems.individuals.each do |conf|
@@ -208,6 +247,11 @@ module Burke
208
247
  def settings
209
248
  @settings
210
249
  end
250
+
251
+ private
252
+ def readable_file? file
253
+ File.readable? file and File.file? file
254
+ end
211
255
  end
212
256
 
213
257
  class GemTaskManager
data/lib/mash.rb CHANGED
@@ -1,4 +1,8 @@
1
1
  class Mash < Hash
2
+ def initialize *args, &block
3
+ super
4
+ end
5
+
2
6
  def method_missing name, *args, &block
3
7
  if name.to_s =~ /(.*)=/
4
8
  self.[]=($1, *args, &block)
@@ -12,14 +16,33 @@ class Mash < Hash
12
16
  end
13
17
 
14
18
  def []=(k, *v)
19
+ k = k.to_s.downcase.to_sym
15
20
  v = *v if v.one?
16
- super k.to_s.downcase.to_sym, v
21
+ v = setter_filters[k].call v if setter_filters.has_key? k
22
+ super k, v
17
23
  end
18
24
 
19
25
  def [](k)
20
26
  v = super(k.to_s.downcase.to_sym)
27
+ v = getter_filters[k].call v if getter_filters.has_key? k
21
28
  yield v if block_given?
22
29
  v
23
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
24
47
  end
25
48
 
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 2
8
- - 0
9
- version: 0.2.0
8
+ - 1
9
+ version: 0.2.1
10
10
  platform: ruby
11
11
  authors:
12
12
  - Aiden Nibali
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2010-08-24 00:00:00 +10:00
17
+ date: 2010-08-28 00:00:00 +10:00
18
18
  default_executable:
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
@@ -46,9 +46,9 @@ files:
46
46
  - lib/mash.rb
47
47
  - spec/spec_helper.rb
48
48
  - spec/mash_spec.rb
49
+ - README.rdoc
49
50
  - Rakefile
50
51
  - VERSION
51
- - README.rdoc
52
52
  has_rdoc: true
53
53
  homepage: http://github.com/dismaldenizen/burke
54
54
  licenses: []
@@ -56,7 +56,7 @@ licenses: []
56
56
  post_install_message:
57
57
  rdoc_options:
58
58
  - --title
59
- - burke 0.2.0
59
+ - burke 0.2.1
60
60
  - --main
61
61
  - README.rdoc
62
62
  require_paths: