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