lib/inochi/tasks/4-gem.rake in inochi-5.1.0 vs lib/inochi/tasks/4-gem.rake in inochi-6.0.0
- old
+ new
@@ -1,7 +1,16 @@
-desc 'Build release package for RubyGems.'
-task :gem do
+@gem_spec_dst = @project_package_name + '.gemspec'
+@gem_spec_src = FileList[
+ '{bin,lib,ext}/**/*',
+ 'LICENSE',
+ @man_roff_dst
+]
+
+desc 'Build RubyGems package specification.'
+task 'gem:spec' => @gem_spec_dst
+
+file @gem_spec_dst => @gem_spec_src do
Rake::Task[:@ann_nfo_text].invoke
Rake::Task[:@project_authors_text].invoke
# ensure that project version matches release notes
Rake::Task[:@ann_rel_html_body_nodes].invoke
@@ -22,35 +31,34 @@
gem.summary = @project_module::TAGLINE
gem.description = @ann_nfo_text
gem.homepage = @project_module::WEBSITE
gem.authors = @project_authors_text.split(/\s*,\s*/)
gem.executables = FileList['bin/*'].pathmap('%f')
+ gem.files = @gem_spec_src
- Rake::Task[:man].invoke
- gem.files = FileList[
- '{bin,lib,ext}/**/*',
- 'LICENSE',
- 'CREDITS',
- @man_roff_dst
- ]
-
- @project_module::DEVTIME.each do |gem_name, gem_version|
- gem.add_development_dependency gem_name, *Array(gem_version)
- end
-
- @project_module::RUNTIME.each do |gem_name, gem_version|
+ @project_module::GEMDEPS.each do |gem_name, gem_version|
gem.add_dependency gem_name, *Array(gem_version)
end
# allow user to configure the gem before it is built
if logic = @project_config[:gem_spec_logic] and not logic.empty?
eval logic, binding, "#{PROJECT_CONFIG_FILE} in :gem_spec_logic"
end
# emit gemspec
- File.write @project_gem_file + 'spec', gem.to_ruby
+ File.write @gem_spec_dst, gem.to_ruby.
+ sub('Gem::Specification.new', 'gemspec = \&').
+ sub(/\Z/, "\nsystem 'inochi', *gemspec.files\ngemspec")
- # build gem
- Gem::Builder.new(gem).build
+ @gem_spec = gem
end
-CLOBBER.include '*.gem', '*.gemspec'
+CLOBBER.include @gem_spec_dst
+
+desc 'Build release package for RubyGems.'
+task :gem => @project_gem_file
+
+file @project_gem_file => @gem_spec_dst do
+ Gem::Builder.new(@gem_spec).build
+end
+
+CLOBBER.include @project_gem_file