lib/rabbit/task/theme.rb in rabbit-2.0.2 vs lib/rabbit/task/theme.rb in rabbit-2.0.3

- old
+ new

@@ -26,23 +26,26 @@ module Task class Theme include Rake::DSL include GetText - attr_reader :spec attr_accessor :package_dir, :pdf_dir, :required_rabbit_version def initialize @logger = Logger.default @theme = load_theme_configuration - @spec = create_spec + @spec = nil @package_dir = "pkg" @pdf_dir = "pdf" @required_rabbit_version = ">= 2.0.2" yield(self) if block_given? define end + def spec + @spec ||= create_spec + end + private def load_theme_configuration theme_conf = ThemeConfiguration.new(@logger) theme_conf.load theme_conf @@ -66,39 +69,58 @@ spec.files = [theme_conf_path, "Rakefile"] spec.files += Dir.glob("{theme.rb,COPYING,GPL,README*}") spec.files += Dir.glob("data/**/*.{svg,png,jpg,jpeg,gif,eps,pdf}") spec.files += Dir.glob("locale/**/*.mo") spec.files += Dir.glob("po/*/*.po") + theme_benchmark_locales.each do |locale| + spec.files += [theme_benchmark_pdf_path(locale)] + end spec.add_runtime_dependency("rabbit", @required_rabbit_version) end end def define task :default => :run + define_run_task + define_gem_task + define_pdf_task + define_publish_task + end + + def define_run_task desc(_("Show theme benchmark slide with this theme")) task :run do rabbit("--theme", ".", _("rabbit-theme-benchmark-en.gem")) end + end + def define_gem_task + define_gem_create_task + define_gem_validate_task + end + + def define_gem_create_task desc(_("Create gem: %{gem_path}") % {:gem_path => gem_path}) task :gem => "gem:validate" do mkdir_p(@package_dir) - Gem::Builder.new(@spec).build - mv(File.basename(@spec.cache_file), gem_path) + Gem::Builder.new(spec).build + mv(File.basename(spec.cache_file), gem_path) end + end + def define_gem_validate_task namespace :gem do task :validate do errors = [] format = _("Write %{item} in %{where}: %{content}") data = { :where => Dir.glob("README*")[0], } [:summary, :description].each do |item| - content = @spec.send(item) + content = spec.send(item) if /TODO|FIXME/ =~ content data[:item] = item data[:content] = content errors << (format % data) end @@ -106,48 +128,68 @@ unless errors.empty? raise errors.join("\n") end end end + end - pdf_path = File.join(@pdf_dir, pdf_base_path) - file pdf_path => [*@spec.files] do - mkdir_p(@pdf_dir) - rabbit("--theme", ".", - "--print", - "--output-filename", pdf_path, - _("rabbit-theme-benchmark-en.gem")) + def define_pdf_task + desc(_("Generate all PDFs")) + task :pdf + theme_benchmark_locales.each do |locale| + task :pdf => "pdf:#{locale}" end - desc(_("Generate PDF: %{pdf_path}") % {:pdf_path => pdf_path}) - task :pdf => pdf_path + namespace :pdf do + theme_benchmark_locales.each do |locale| + pdf_path = theme_benchmark_pdf_path(locale) + files_without_pdf = spec.files - Dir.glob("#{@pdf_dir}/*/*.pdf") + file pdf_path => files_without_pdf do + mkdir_p(@pdf_dir) + rabbit("--theme", ".", + "--print", + "--output-filename", pdf_path, + "rabbit-theme-benchmark-#{locale}.gem") + end + desc(_("Generate PDF: %{pdf_path}") % {:pdf_path => pdf_path}) + task locale => pdf_path do + end + end + end + end + + def define_publish_task desc(_("Publish the theme to all available targets")) task :publish publish_tasks = [] namespace :publish do if @theme.author.rubygems_user desc(_("Publish the theme to %s") % "RubyGems.org") task :rubygems => :gem do - ruby("-S", "gem", "push", "--verbose", gem_path) + ruby("-S", "gem", "push", gem_path) end publish_tasks << :rubygems end end task :publish => publish_tasks.collect {|task| "publish:#{task}"} end def gem_path - File.join(@package_dir, "#{@spec.name}-#{@spec.version}.gem") + File.join(@package_dir, "#{spec.name}-#{spec.version}.gem") end - def pdf_base_path - "#{@theme.id}.pdf" + def theme_benchmark_pdf_path(locale) + File.join(@pdf_dir, "theme-benchmark-#{locale}.pdf") end + def theme_benchmark_locales + ["en", "ja"] + end + def homepage - "http://theme.rabbit-shockers.org/#{@theme.id}/" + "http://theme.rabbit-shocker.org/themes/#{@theme.id}/" end def rabbit(*arguments) Rabbit::Command::Rabbit.run(*arguments) end