Rakefile in racknga-0.9.3 vs Rakefile in racknga-0.9.4
- old
+ new
@@ -11,299 +11,46 @@
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
require 'English'
require 'fileutils'
require 'pathname'
require 'erb'
require 'rubygems'
-require 'jeweler'
-require "rake/clean"
-require "yard"
+require 'rubygems/package_task'
+require 'bundler/gem_helper'
+require "packnga"
base_dir = Pathname.new(__FILE__).dirname
racknga_lib_dir = base_dir + 'lib'
$LOAD_PATH.unshift(racknga_lib_dir.to_s)
-def guess_version
- require 'racknga/version'
- Racknga::VERSION
+helper = Bundler::GemHelper.new(base_dir)
+def helper.version_tag
+ version
end
+helper.install
+spec = helper.gemspec
-ENV["VERSION"] ||= guess_version
-version = ENV["VERSION"].dup
-project = nil
-spec = nil
-Jeweler::Tasks.new do |_spec|
- spec = _spec
- spec.name = 'racknga'
- spec.version = version
- spec.rubyforge_project = 'groonga'
- spec.homepage = "http://groonga.rubyforge.org/"
- authors_file = File.join(base_dir, "AUTHORS")
- authors = []
- emails = []
- File.readlines(authors_file).each do |line|
- if /\s*<([^<>]*)>$/ =~ line
- authors << $PREMATCH
- emails << $1
- end
- end
- spec.authors = authors
- spec.email = emails
- spec.summary = "A Rack middleware collection for rroonga features."
- spec.description = <<-EOD.gsub(/\n/, ' ').strip
-Racknga is a Rack middlewares that uses rroonga features.
-EOD
- spec.license = "LGPLv2.1 or later"
- spec.files = FileList["lib/**/*.rb",
- "{license,munin,doc/text/}/**/*",
- "example/*.rb",
- "AUTHORS",
- "Rakefile",
- "Gemfile",
- "README*"]
- spec.test_files = FileList["test/**/*.rb"]
+Gem::PackageTask.new(spec) do |pkg|
+ pkg.need_tar_gz = true
end
-Rake::Task["release"].prerequisites.clear
-Jeweler::RubygemsDotOrgTasks.new do
+Packnga::DocumentTask.new(spec) do |task|
+ task.original_language = "en"
+ task.translate_languages = ["ja"]
end
-reference_base_dir = Pathname.new("doc/reference")
-doc_en_dir = reference_base_dir + "en"
-html_base_dir = Pathname.new("doc/html")
-html_reference_dir = html_base_dir + spec.name
-YARD::Rake::YardocTask.new do |task|
- task.options += ["--title", spec.name]
- task.options += ["--readme", "README.textile"]
- task.options += ["--files", "doc/text/**/*"]
- task.options += ["--output-dir", doc_en_dir.to_s]
- task.options += ["--charset", "utf-8"]
+Packnga::ReleaseTask.new(spec) do
end
-task :yard do
- doc_en_dir.find do |path|
- next if path.extname != ".html"
- html = path.read
- html = html.gsub(/<div id="footer">.+<\/div>/m,
- "<div id=\"footer\"></div>")
- path.open("w") do |html_file|
- html_file.print(html)
- end
- end
+desc "Run test"
+task :test do
+ ruby("-rubygems", "test/run-test.rb")
end
-include ERB::Util
-
-def apply_template(content, paths, templates, language)
- content = content.sub(/lang="en"/, "lang=\"#{language}\"")
-
- title = nil
- content = content.sub(/<title>(.+?)<\/title>/m) do
- title = $1
- templates[:head].result(binding)
- end
-
- content = content.sub(/<body(?:.*?)>/) do |body_start|
- "#{body_start}\n#{templates[:header].result(binding)}\n"
- end
-
- content = content.sub(/<\/body/) do |body_end|
- "\n#{templates[:footer].result(binding)}\n#{body_end}"
- end
-
- content
-end
-
-def erb_template(name)
- file = File.join("doc/templates", "#{name}.html.erb")
- template = File.read(file)
- erb = ERB.new(template, nil, "-")
- erb.filename = file
- erb
-end
-
-def rsync_to_rubyforge(spec, source, destination, options={})
- config = YAML.load(File.read(File.expand_path("~/.rubyforge/user-config.yml")))
- host = "#{config["username"]}@rubyforge.org"
-
- rsync_args = "-av --exclude '*.erb' --chmod=ug+w"
- rsync_args << " --delete" if options[:delete]
- remote_dir = "/var/www/gforge-projects/#{spec.rubyforge_project}/"
- sh("rsync #{rsync_args} #{source} #{host}:#{remote_dir}#{destination}")
-end
-
-def rake(*arguments)
- ruby($0, *arguments)
-end
-
-namespace :reference do
- translate_languages = [:ja]
- supported_languages = [:en, *translate_languages]
- html_files = FileList[doc_en_dir + "**/*.html"].to_a
-
- directory reference_base_dir.to_s
- CLOBBER.include(reference_base_dir.to_s)
-
- po_dir = "doc/po"
- pot_file = "#{po_dir}/#{spec.name}.pot"
- namespace :pot do
- directory po_dir
- file pot_file => [po_dir, *html_files] do |t|
- sh("xml2po", "--keep-entities", "--output", t.name, *html_files)
- end
-
- desc "Generates pot file."
- task :generate => pot_file
- end
-
- namespace :po do
- translate_languages.each do |language|
- namespace language do
- po_file = "#{po_dir}/#{language}.po"
-
- if File.exist?(po_file)
- file po_file => html_files do |t|
- sh("xml2po", "--keep-entities", "--update", t.name, *html_files)
- end
- else
- file po_file => pot_file do |t|
- sh("msginit",
- "--input=#{pot_file}",
- "--output=#{t.name}",
- "--locale=#{language}")
- end
- end
-
- desc "Updates po file for #{language}."
- task :update => po_file
- end
- end
-
- desc "Updates po files."
- task :update do
- rake("clobber")
- rake("yard")
- translate_languages.each do |language|
- rake("reference:po:#{language}:update")
- end
- end
- end
-
- namespace :translate do
- translate_languages.each do |language|
- po_file = "#{po_dir}/#{language}.po"
- translate_doc_dir = "#{reference_base_dir}/#{language}"
-
- desc "Translates documents to #{language}."
- task language => [po_file, reference_base_dir, *html_files] do
- doc_en_dir.find do |path|
- base_path = path.relative_path_from(doc_en_dir)
- translated_path = "#{translate_doc_dir}/#{base_path}"
- if path.directory?
- mkdir_p(translated_path)
- next
- end
- case path.extname
- when ".html"
- sh("xml2po --keep-entities " +
- "--po-file #{po_file} --language #{language} " +
- "#{path} > #{translated_path}")
- else
- cp(path.to_s, translated_path, :preserve => true)
- end
- end
- end
- end
- end
-
- translate_task_names = translate_languages.collect do |language|
- "reference:translate:#{language}"
- end
- desc "Translates references."
- task :translate => translate_task_names
-
- desc "Generates references."
- task :generate => [:yard, :translate]
-
- namespace :publication do
- task :prepare do
- supported_languages.each do |language|
- raw_reference_dir = reference_base_dir + language.to_s
- prepared_reference_dir = html_reference_dir + language.to_s
- rm_rf(prepared_reference_dir.to_s)
- head = erb_template("head.#{language}")
- header = erb_template("header.#{language}")
- footer = erb_template("footer.#{language}")
- raw_reference_dir.find do |path|
- relative_path = path.relative_path_from(raw_reference_dir)
- prepared_path = prepared_reference_dir + relative_path
- if path.directory?
- mkdir_p(prepared_path.to_s)
- else
- case path.basename.to_s
- when /(?:file|method|class)_list\.html\z/
- cp(path.to_s, prepared_path.to_s)
- when /\.html\z/
- relative_dir_path = relative_path.dirname
- current_path = relative_dir_path + path.basename
- if current_path.basename.to_s == "index.html"
- current_path = current_path.dirname
- end
- top_path = html_base_dir.relative_path_from(prepared_path.dirname)
- package_path = top_path + spec.name
- paths = {
- :top => top_path,
- :current => current_path,
- :package => package_path,
- }
- templates = {
- :head => head,
- :header => header,
- :footer => footer
- }
- content = apply_template(File.read(path.to_s),
- paths,
- templates,
- language)
- File.open(prepared_path.to_s, "w") do |file|
- file.print(content)
- end
- else
- cp(path.to_s, prepared_path.to_s)
- end
- end
- end
- end
- File.open("#{html_reference_dir}/.htaccess", "w") do |file|
- file.puts("RedirectMatch permanent ^/#{spec.name}/$ " +
- "#{spec.homepage}#{spec.name}/en/")
- end
- end
- end
-
- desc "Upload document to rubyforge."
- task :publish => [:generate, "reference:publication:prepare"] do
- rsync_to_rubyforge(spec, "#{html_reference_dir}/", spec.name)
- end
-end
-
-namespace :html do
- desc "Publish HTML to Web site."
- task :publish do
- rsync_to_rubyforge(spec, "#{html_base_dir}/", "")
- end
-end
-
-desc "Upload document to rubyforge."
-task :publish => ["reference:publish"]
-
-desc "Tag the current revision."
-task :tag do
- sh("git tag -a #{version} -m 'release #{version}!!!'")
-end
+task :default => :test