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

- old
+ new

@@ -17,32 +17,64 @@ require "rake" require "rabbit/gettext" require "rabbit/logger" require "rabbit/command/rabbit" +require "rabbit/theme-configuration" +require "rabbit/readme-parser" module Rabbit module Task class Theme include Rake::DSL include GetText attr_reader :spec - attr_accessor :package_dir, :pdf_dir, :pdf_base_path - attr_accessor :rubygems_user - def initialize(spec) + attr_accessor :package_dir, :pdf_dir, :required_rabbit_version + def initialize @logger = Logger.default - @spec = spec + @theme = load_theme_configuration + @spec = create_spec @package_dir = "pkg" @pdf_dir = "pdf" - @pdf_base_path = nil - @rubygems_user = nil + @required_rabbit_version = ">= 2.0.2" yield(self) if block_given? define end private + def load_theme_configuration + theme_conf = ThemeConfiguration.new(@logger) + theme_conf.load + theme_conf + end + + def create_spec + readme_parser = READMEParser.new(@logger) + readme_parser.parse + + Gem::Specification.new do |spec| + spec.name = @theme.gem_name + spec.version = @theme.version + spec.homepage = homepage + spec.authors = [@theme.author.name] + spec.email = [@theme.author.email] + spec.summary = readme_parser.title || "TODO" + spec.description = readme_parser.description || "TODO" + spec.licenses = @theme.licenses + + theme_conf_path = @theme.path + 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") + + spec.add_runtime_dependency("rabbit", @required_rabbit_version) + end + end + def define task :default => :run desc(_("Show theme benchmark slide with this theme")) task :run do @@ -75,11 +107,11 @@ raise errors.join("\n") end end end - pdf_path = File.join(@pdf_dir, @pdf_base_path || default_pdf_base_path) + 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, @@ -92,11 +124,11 @@ desc(_("Publish the theme to all available targets")) task :publish publish_tasks = [] namespace :publish do - if @rubygems_user + if @theme.author.rubygems_user desc(_("Publish the theme to %s") % "RubyGems.org") task :rubygems => :gem do ruby("-S", "gem", "push", "--verbose", gem_path) end publish_tasks << :rubygems @@ -107,12 +139,15 @@ def gem_path File.join(@package_dir, "#{@spec.name}-#{@spec.version}.gem") end - def default_pdf_base_path - theme_id = @spec.name.gsub(/\Arabbit-theme-/, "") - "#{theme_id}.pdf" + def pdf_base_path + "#{@theme.id}.pdf" + end + + def homepage + "http://theme.rabbit-shockers.org/#{@theme.id}/" end def rabbit(*arguments) Rabbit::Command::Rabbit.run(*arguments) end