eimxml 0.0.2 → 0.0.3.1

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 CHANGED
@@ -1,102 +1,31 @@
1
- require "rake/clean"
2
- require "rake/rdoctask"
3
- require "rake/gempackagetask"
4
- require "spec/rake/spectask"
5
-
6
- FILES = FileList["**/*"].exclude(/^pkg/, /\.html$/)
7
-
8
- task :default => :test
9
-
10
- ### Document ###
11
- RDOC_DIR = "./html/"
12
- RDOC_OPTS = ["-S", "-w", "3", "-c", "UTF-8", "-m", "README"]
13
- RDOC_OPTS << "-d" if ENV["DOT"]
14
- RDOC_FILES = FileList["lib/**/*.rb"]
15
- RDOC_EXTRAS = FileList["README"]
16
- ["", "ja", "en"].each do |l|
17
- dir = RDOC_DIR.dup
18
- dir << "#{l}/" unless l.empty?
19
- Rake::RDocTask.new("rdoc#{":"+l unless l.empty?}") do |rdoc|
20
- rdoc.title = "Easy IMplemented XML"
21
- rdoc.options = RDOC_OPTS.dup
22
- rdoc.options << "-l" << l unless l.empty?
23
- rdoc.rdoc_dir = dir
24
- rdoc.rdoc_files.include(RDOC_FILES, RDOC_EXTRAS)
25
- end
26
- end
27
- task "rdoc:all" => ["rdoc", "rdoc:ja", "rdoc:en"]
28
- task "rerdoc:all" => ["rerdoc", "rerdoc:ja", "rerdoc:en"]
29
-
30
-
31
- ### Publish document ###
32
- task :publish => [:clobber_rdoc, "rdoc:ja", "rdoc:en"] do
33
- require "rake/contrib/rubyforgepublisher"
34
- cp "index.html", "html/index.html"
35
- Rake::RubyForgePublisher.new("eimxml", "hiraku").upload
36
- end
37
-
38
- ### Test ###
39
- task :test => "test:lump"
40
- namespace :test do
41
- def set_spec_options(spec)
42
- spec.ruby_opts << "-rtest/unit"
43
- spec.spec_opts << "-c"
44
- spec.libs << "lib"
1
+ load "Rakefile.utirake"
2
+ VER = "0.0.3.1"
3
+
4
+ UtiRake.setup do
5
+ rdoc do |t|
6
+ t.title = "Easy IMplemented XML"
7
+ t.main = "README"
8
+ t.rdoc_files.include(FileList["lib/**/*.rb", "README"])
45
9
  end
46
- TEST_FILES = FileList["test/**/*_test.rb"]
47
- TEST_FILES.sort{|a,b| File.mtime(a)<=>File.mtime(b)}.reverse.each do |i|
48
- Spec::Rake::SpecTask.new(:apart) do |s|
49
- s.spec_files = [i]
50
- set_spec_options(s)
51
- end
52
- end
53
- task(:apart).comment = "Run tests separately"
54
10
 
55
- Spec::Rake::SpecTask.new(:lump) do |s|
56
- s.spec_files = TEST_FILES
57
- set_spec_options(s)
11
+ gemspec do |s|
12
+ s.name = "eimxml"
13
+ s.summary = "Easy IMplemented XML"
14
+ s.author = "KURODA Hiraku"
15
+ s.email = "hiraku@hinet.mydns.jp"
16
+ s.homepage = "http://eimxml.rubyforge.org/"
17
+ s.rubyforge_project = "eimxml"
18
+ s.version = VER
19
+ s.post_install_message = "*"*60 << "\n" << <<EOT << "*"*60
20
+ [DEPRECATION]
21
+ "eimxml" gem is deprecated.
22
+ Please use "eim_xml" gem instead.
23
+ EOT
58
24
  end
59
- task(:lump).comment = "Run all tests in a lump"
60
- end
61
25
 
62
- ### Build GEM ###
63
- GEM_DIR = "./pkg"
64
- directory GEM_DIR
65
- def build_gem(unstable=false)
66
- spec = Gem::Specification.new do |spec|
67
- spec.name = "eimxml"
68
- spec.rubyforge_project = "eimxml"
69
- spec.version = ENV["VER"] or raise "Need VER=x.y.z(.?)"
70
- spec.summary = "Easy IMplemented XML"
71
- spec.author = "KURODA Hiraku"
72
- spec.email = "hiraku@hinet.mydns.jp"
73
- spec.homepage = "http://eimxml.rubyforge.org/"
74
- spec.files = FILES
75
- spec.test_files = Dir.glob("test/*.rb")
76
- spec.has_rdoc = true
77
- spec.rdoc_options = RDOC_OPTS.dup
78
- spec.extra_rdoc_files = RDOC_EXTRAS
79
- end
80
-
81
- spec.version = spec.version.to_s << Time.now.strftime(".%Y.%m%d.%H%M") if unstable
82
- b = Gem::Builder.new(spec)
83
- gname = b.build
84
- mv gname, "#{GEM_DIR}/"
85
- end
26
+ publish("eimxml", "hiraku")
86
27
 
87
- desc "Build gem package"
88
- task :gem => GEM_DIR do
89
- build_gem
28
+ alias_task
90
29
  end
91
30
 
92
- desc "Build unstable version gem package"
93
- task "gem:unstable" do
94
- build_gem(true)
95
- end
96
-
97
-
98
- ### Build package ###
99
- package_task = Rake::PackageTask.new("eim_xml",ENV["VER"] || :noversion) do |t|
100
- t.package_files.include(FILES)
101
- t.need_tar_gz = true
102
- end
31
+ task :default => :spec
@@ -0,0 +1,374 @@
1
+ # Utility for Rake
2
+ #
3
+ # Copyright (C) 2008, KURODA Hiraku <hiraku@hinet.mydns.jp>
4
+ # You can redistribute it and/or modify it under GPL3.
5
+
6
+ require "rake/clean"
7
+ require "rake/testtask"
8
+ require "rdoc/task"
9
+ require "rake/contrib/rubyforgepublisher"
10
+ require "rubygems/package_task"
11
+
12
+ class UtiRake
13
+ include Rake::DSL
14
+
15
+ def self.setup(opt={}, &proc)
16
+ ur = new
17
+ ur.setup(opt, &proc)
18
+ rescue
19
+ puts $!.class, $!.message, $!.backtrace
20
+ end
21
+
22
+ attr_reader :opt, :spec_proc, :cucumber_proc, :rdoc_proc, :gemspec_proc, :package_proc, :rcov_spec_proc
23
+
24
+ def setup(opt={}, &proc)
25
+ @opt = opt
26
+ directory "external"
27
+ CLEAN << "coverage" << "coverage.spec" << "coverage.cuke" << "doc"
28
+ CLOBBER << "external"
29
+
30
+ instance_eval(&proc) if proc
31
+
32
+ if need_spec?
33
+ begin
34
+ @rspec2_flg = false
35
+ require "rspec/core/rake_task"
36
+ @rspec2_flg = true
37
+ rescue LoadError
38
+ require "spec/rake/spectask"
39
+ end
40
+ define_spec_task
41
+ end
42
+
43
+ if need_cucumber?
44
+ require "cucumber/rake/task"
45
+ define_cucumber_task
46
+ end
47
+
48
+ define_rdoc_task
49
+ define_rcov_task
50
+ define_package_task
51
+ define_here_dependency
52
+ define_alias_task if @alias_task
53
+ end
54
+
55
+ def rspec2?; @rspec2_flg; end
56
+
57
+ def spec_task
58
+ rspec2? ? RSpec::Core::RakeTask : Spec::Rake::SpecTask
59
+ end
60
+
61
+ def need_spec?
62
+ File.directory?("spec")
63
+ end
64
+
65
+ def need_cucumber?
66
+ File.directory?("features")
67
+ end
68
+
69
+ def spec(&proc)
70
+ @spec_proc = proc
71
+ end
72
+
73
+ def cucumber(&proc)
74
+ @cucumber_proc = proc
75
+ end
76
+
77
+ def rdoc(&proc)
78
+ @rdoc_proc = proc
79
+ end
80
+
81
+ def gemspec(&proc)
82
+ @gemspec_proc = proc
83
+ end
84
+
85
+ def rcov_spec(&proc)
86
+ @rcov_spec_proc = proc
87
+ end
88
+
89
+ def package(&proc)
90
+ @package_proc = proc
91
+ end
92
+
93
+ def no_here(task)
94
+ @no_here_task = task
95
+ end
96
+
97
+ def no_here_task
98
+ @no_here_task || "spec:lump"
99
+ end
100
+
101
+ def alias_task
102
+ @alias_task = true
103
+ end
104
+
105
+ def hg(cmd)
106
+ sh "hg #{cmd.to_s}"
107
+ end
108
+
109
+ def external(base_url, *libs)
110
+ libs = libs.first if libs.first.is_a?(Array)
111
+ namespace :external do
112
+ directory "external/lib"
113
+ libs.each do |lib|
114
+ libdir = "external/#{lib}"
115
+ file libdir => "external/lib" do
116
+ if File.exist?("../#{lib}")
117
+ Dir.chdir("external") do
118
+ ln_s "../../#{lib}", "./", :force=>true
119
+ end
120
+ end
121
+ hg "clone #{File.join(base_url, lib)} #{libdir}" unless File.exist?(libdir)
122
+ Dir["#{libdir}/lib/*"].each do |f|
123
+ base = File.basename(f)
124
+ cd "external/lib" do
125
+ ln_s "../#{lib}/lib/#{base}", "./"
126
+ end
127
+ end
128
+ end
129
+
130
+ if File.exist?(libdir)
131
+ Dir["#{libdir}/lib/*"].each do |f|
132
+ base = File.basename(f)
133
+ file "external/lib/#{base}" => "external/lib" do
134
+ cd "external/lib" do
135
+ ln_s "../#{lib}/lib/#{base}", "./"
136
+ end
137
+ end
138
+ task :setup => "external/lib/#{base}"
139
+ end
140
+ end
141
+
142
+ desc "Setup external libraries"
143
+ task :setup=>libdir
144
+ end
145
+
146
+ task :rake => :setup do
147
+ libs.each do |lib|
148
+ Dir.chdir "external/#{lib}" do
149
+ sh "rake"
150
+ end
151
+ end
152
+ end
153
+ end
154
+ @external = true
155
+ end
156
+
157
+ def external?; @external; end
158
+
159
+ def define_rdoc_task
160
+ Rake::RDocTask.new(:rdoc) do |rdoc|
161
+ rdoc.options << "-S"
162
+ rdoc.options << "-w" << "3"
163
+ rdoc.options << "-c" << "UTF-8"
164
+ rdoc.rdoc_files.include("lib/**/*.rb")
165
+ rdoc_proc.call(rdoc) if rdoc_proc
166
+ end
167
+ task :doc do
168
+ remove_entry_secure "doc" if File.directory?("doc")
169
+ sh "rdoc -S -w 3 -c UTF-8 -d -x external"
170
+ end
171
+ end
172
+
173
+ def define_package_task
174
+ spec = Gem::Specification.new do |s|
175
+ s.platform = Gem::Platform::RUBY
176
+ s.files = FileList["Rakefile*", "lib/**/*", "spec/**/*"]
177
+ s.version = "0.0.0.noversion"
178
+ gemspec_proc.call(s) if gemspec_proc
179
+ end
180
+
181
+ gem = Gem::PackageTask.new(spec) do |t|
182
+ t.need_tar_gz = true
183
+ package_proc.call(t) if package_proc
184
+ end
185
+
186
+ task "utirake:copy_for_package" do
187
+ mv "Rakefile.utirake", "Rakefile.utirake_#{$$}"
188
+ cp "external/utirake/utirake.rb", "Rakefile.utirake"
189
+ end
190
+
191
+ file gem.package_dir_path => "utirake:copy_for_package"
192
+
193
+ task :gem do
194
+ rm "Rakefile.utirake"
195
+ mv "Rakefile.utirake_#{$$}", "Rakefile.utirake"
196
+ end
197
+ end
198
+
199
+ def publish(project_name, user_id)
200
+ task :publish => "rdoc" do
201
+ yield if block_given?
202
+ Rake::RubyForgePublisher.new(project_name, user_id).upload
203
+ end
204
+ end
205
+
206
+ FILE_SORT = lambda{|a, b| File.mtime(a)<=>File.mtime(b)}
207
+
208
+ def spec_files
209
+ @spec_files ||= FileList["./spec/**/*_spec.rb"].sort(&FILE_SORT).reverse
210
+ end
211
+
212
+ def set_spec_opts(spec)
213
+ spec.verbose = false
214
+ if rspec2?
215
+ spec.rspec_opts ||= []
216
+ spec.rspec_opts << "-c"
217
+ spec.rspec_opts << "-I" << "." << "-I" << "./lib" << "-I" << "./external/lib"
218
+ else
219
+ spec.spec_opts << "-c"
220
+ spec.libs << "." << "./lib" << "./external/lib"
221
+ end
222
+ end
223
+
224
+ def define_spec_task
225
+ task :spec => "spec:apart"
226
+ namespace :spec do
227
+ spec_files.each do |f|
228
+ desc ""
229
+ spec_task.new(:apart) do |s|
230
+ if rspec2?
231
+ s.pattern = f
232
+ else
233
+ s.spec_files = FileList[f]
234
+ end
235
+ set_spec_opts(s)
236
+ spec_proc.call(s) if spec_proc
237
+ end
238
+ end
239
+ task(:apart).comment = "Run all specs separately"
240
+
241
+ desc "Run all specs in a lump"
242
+ spec_task.new(:lump) do |s|
243
+ s.spec_files = spec_files unless rspec2?
244
+ set_spec_opts(s)
245
+ spec_proc.call(s) if spec_proc
246
+ end
247
+
248
+ desc "Run all specs to profile"
249
+ spec_task.new(:profile) do |s|
250
+ set_spec_opts(s)
251
+ if rspec2?
252
+ s.rspec_opts << "-p"
253
+ else
254
+ s.spec_opts << "-f" << "profile"
255
+ end
256
+ end
257
+
258
+ `grep -sRn '#[[:space:]]*here\\([[:space:]]\\|$\\)' --include='*.rb' spec`.split(/\n/).map{|l|
259
+ next nil unless l=~/\A(.*?):(\d+):/
260
+ [$1, $2.to_i]
261
+ }.compact.sort{|a, b| FILE_SORT.call(a[0], b[0])}.reverse.each do |file, line|
262
+ desc ""
263
+ spec_task.new(:here) do |s|
264
+ set_spec_opts(s)
265
+ if rspec2?
266
+ s.pattern = file
267
+ s.rspec_opts << "-l#{line}"
268
+ else
269
+ s.spec_files = [file]
270
+ s.spec_opts << "-l#{line}"
271
+ end
272
+ spec_proc.call(s) if spec_proc
273
+ end
274
+ end
275
+ task :no_here => no_here_task
276
+ end
277
+ end
278
+
279
+ def set_cucumber_opts(task)
280
+ task.libs << "."
281
+ cucumber_proc.call(task) if cucumber_proc
282
+ end
283
+
284
+ def define_cucumber_task
285
+ Cucumber::Rake::Task.new do |t|
286
+ set_cucumber_opts(t)
287
+ end
288
+
289
+ unless `grep -sRn '^[[:space:]]*@here$' features`.empty?
290
+ Cucumber::Rake::Task.new("cucumber:here") do |t|
291
+ t.cucumber_opts = %w[--tags @here]
292
+ set_cucumber_opts(t)
293
+ end
294
+ end
295
+ task "cucumber:no_here" => :cucumber
296
+ end
297
+
298
+ def define_here_dependency
299
+ unless Rake::Task.task_defined?("spec:here") || Rake::Task.task_defined?("cucumber:here")
300
+ task "spec:here" => "spec:no_here" if need_spec? && !Rake::Task.task_defined?("spec:here")
301
+ task "cucumber:here" => "cucumber:no_here" if need_cucumber? && !Rake::Task.task_defined?("cucumber:here")
302
+ end
303
+
304
+ task("spec:here").comment = "Run spec only marked '# here'"
305
+ task("cucumber:here").comment = "only tagged '@here'"
306
+ end
307
+
308
+ def rcov_opts(t, aggregation)
309
+ t.rcov_opts ||= []
310
+ t.rcov_opts << "-I" << "./spec:./lib:./external/lib"
311
+ t.rcov_opts << "--exclude" << "gems\/,features\/,external\/"
312
+ t.rcov_opts << "--aggregate" << "coverage.data" if aggregation
313
+ t.rcov = true
314
+ end
315
+
316
+ def define_rcov_each_task(aggregation)
317
+ if need_spec?
318
+ spec_task.new do |t|
319
+ t.verbose = false
320
+ rcov_opts(t, aggregation)
321
+ if rspec2?
322
+ t.rcov_opts << "-o" << "coverage.spec" unless aggregation
323
+ else
324
+ set_spec_opts(t)
325
+ t.spec_files = spec_files
326
+ t.rcov_dir = "coverage.spec" unless aggregation
327
+ end
328
+ rcov_spec_proc.call(t) if rcov_spec_proc
329
+ end
330
+ else
331
+ task "spec"
332
+ end
333
+
334
+ if need_cucumber?
335
+ Cucumber::Rake::Task.new do |t|
336
+ set_cucumber_opts(t)
337
+ rcov_opts(t, aggregation)
338
+ t.rcov_opts << "-o" << "coverage.cuke" unless aggregation
339
+ end
340
+ else
341
+ task "cucumber"
342
+ end
343
+ end
344
+
345
+ def define_rcov_task
346
+ namespace :rcov do
347
+ define_rcov_each_task(false)
348
+ end
349
+
350
+ desc "Run specs and Cucumber using RCov"
351
+ task "rcov:lump" do
352
+ rm "coverage.data" if File.exist?("coverage.data")
353
+ ns = namespace do
354
+ define_rcov_each_task(true)
355
+ end
356
+ ns.tasks.each do |t|
357
+ t.invoke
358
+ end
359
+ rm "coverage.data"
360
+ end
361
+
362
+ task "rcov:all" => %w[rcov:spec rcov:cucumber rcov:lump]
363
+ end
364
+
365
+ def define_alias_task
366
+ if Rake::Task.task_defined?("spec:apart")
367
+ task :apart => "spec:apart"
368
+ task :lump => "spec:lump"
369
+ task :here => "spec:here"
370
+ task :profile => "spec:profile"
371
+ end
372
+ task :here => "cucumber:here" if Rake::Task.task_defined?("cucumber:here")
373
+ end
374
+ end