class Packnga::ReleaseTask
This class creates release tasks.
Release tasks tag current version and install gem for test.
@since 0.9.0
Attributes
base_dir[W]
This attribute is path of base directory of document. @param [String] value path of base directory of document
index_html_dir[W]
This attribute is path of HTML files written version and release date. @param [String] value path of HTML files
tag_message[W]
This attribute is message when tagging in release. @param [String] value message
Public Class Methods
new(spec) { |self| ... }
click to toggle source
Defines task for preparing to release. Defined tasks update version and release-date in index files and tag in git. @param [Gem::Specification] spec specification for your package
# File lib/packnga/release-task.rb, line 40 def initialize(spec) @spec = spec @index_html_dir = nil @tag_messsage = nil @publish_options = nil @changes = nil yield(self) if block_given? set_default_values define_tasks end
Private Instance Methods
define_info_task()
click to toggle source
# File lib/packnga/release-task.rb, line 76 def define_info_task namespace :info do desc "Update version in index HTML." task :update do @index_html_dir = Pathname(@index_html_dir) indexes = [ @index_html_dir + "index.html", @index_html_dir + "ja/index.html" ] indexes.each do |index| content = replaced_content = File.read(index) package_infos.each do |key, (old, new)| next if old == new old_regexp = /#{Regexp.escape(old)}/ replaced_content = replaced_content.gsub(old_regexp, new) end File.open(index, "w") do |output| output.print(replaced_content) end end end end end
define_reference_upload_task()
click to toggle source
# File lib/packnga/release-task.rb, line 122 def define_reference_upload_task namespace :references do desc "Copy references to reference html directory." task :upload => html_reference_dir do cp_r(html_reference_dir, @index_html_dir) end end end
define_tag_task()
click to toggle source
# File lib/packnga/release-task.rb, line 131 def define_tag_task desc "Tag the current revision." task :tag do version = @spec.version sh("git tag -a #{version} -m '#{@tag_message}'") end end
define_tasks()
click to toggle source
# File lib/packnga/release-task.rb, line 68 def define_tasks namespace :release do define_info_task define_reference_upload_task define_tag_task end end
html_base_dir()
click to toggle source
# File lib/packnga/release-task.rb, line 52 def html_base_dir File.join(@base_dir, "html") end
html_reference_dir()
click to toggle source
# File lib/packnga/release-task.rb, line 56 def html_reference_dir File.join(html_base_dir, @spec.name) end
package_infos()
click to toggle source
# File lib/packnga/release-task.rb, line 101 def package_infos old_version = ENV["OLD_VERSION"] old_release_date = ENV["OLD_RELEASE_DATE"] new_release_date = ENV["RELEASE_DATE"] || Time.now.strftime("%Y-%m-%d") new_version = ENV["VERSION"] || @spec.version.to_s empty_options = [] empty_options << "OLD_VERSION" if old_version.nil? empty_options << "OLD_RELEASE_DATE" if old_release_date.nil? empty_options << "VERSION" if new_version.empty? unless empty_options.empty? raise ArgumentError, "Specify option(s) of #{empty_options.join(", ")}." end { :version => [old_version, new_version], :release_date => [old_release_date, new_release_date] } end
set_default_values()
click to toggle source
# File lib/packnga/release-task.rb, line 60 def set_default_values @index_html_dir ||= "doc/html" @base_dir ||= Pathname.new("doc") @tag_message ||= "release #{@spec.version}!!!" @publish_options ||= {} @changes ||= "" end