class Rabbit::Task::Slide
Attributes
package_dir[RW]
pdf_dir[RW]
required_rabbit_version[RW]
Public Class Methods
new() { |self| ... }
click to toggle source
# File lib/rabbit/task/slide.rb, line 34 def initialize @logger = Logger.default @slide = load_slide_configuration @package_dir = "pkg" @pdf_dir = "pdf" @required_rabbit_version = ">= 2.0.2" yield(self) if block_given? define end
Public Instance Methods
spec()
click to toggle source
# File lib/rabbit/task/slide.rb, line 44 def spec @spec ||= create_spec end
Private Instance Methods
create_spec()
click to toggle source
# File lib/rabbit/task/slide.rb, line 55 def create_spec readme_parser = READMEParser.new(@logger) readme_parser.parse Gem::Specification.new do |spec| spec.name = @slide.gem_name spec.version = @slide.version spec.homepage = homepage spec.authors = [@slide.author.name] spec.email = [@slide.author.email] spec.summary = readme_parser.title || "TODO" spec.description = readme_parser.description || "TODO" spec.licenses = @slide.licenses if @slide.source_code_uri spec.metadata["source_code_uri"] = @slide.source_code_uri end slide_conf_path = @slide.path spec.files = [".rabbit", slide_conf_path, "Rakefile"] spec.files += Dir.glob("theme.rb") spec.files += Dir.glob("{COPYING,GPL,README*}") spec.files += Dir.glob("rabbit/**/*.*") spec.files += Dir.glob("**/*.{svg,png,jpg,jpeg,gif,eps,pdf}") spec.files += Dir.glob("*.{rd,rab,hiki,md,pdf}") spec.files -= Dir.glob("{pkg,pdf}/**/*.*") spec.files += [pdf_path] spec.add_runtime_dependency("rabbit", @required_rabbit_version) end end
define()
click to toggle source
# File lib/rabbit/task/slide.rb, line 86 def define task :default => :run define_run_task define_gem_task define_pdf_task define_publish_task end
define_gem_create_task()
click to toggle source
# File lib/rabbit/task/slide.rb, line 112 def define_gem_create_task desc(_("Create gem: %{gem_path}") % {:gem_path => gem_path}) task :gem => ["gem:validate", :pdf] do mkdir_p(@package_dir) GemBuilder.build(spec) mv(File.basename(spec.cache_file), gem_path) end end
define_gem_task()
click to toggle source
# File lib/rabbit/task/slide.rb, line 107 def define_gem_task define_gem_create_task define_gem_validate_task end
define_gem_validate_task()
click to toggle source
# File lib/rabbit/task/slide.rb, line 121 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) if /TODO|FIXME/ =~ content data[:item] = item data[:content] = content errors << (format % data) end end unless errors.empty? raise errors.join("\n") end end end end
define_pdf_task()
click to toggle source
# File lib/rabbit/task/slide.rb, line 144 def define_pdf_task file pdf_path => [options_path, *(spec.files - [pdf_path])] do mkdir_p(@pdf_dir) rabbit("--print", "--output-filename", pdf_path) end desc(_("Generate PDF: %{pdf_path}") % {:pdf_path => pdf_path}) task :pdf => pdf_path end
define_publish_rubygems_task()
click to toggle source
# File lib/rabbit/task/slide.rb, line 174 def define_publish_rubygems_task desc(_("Publish the slide to %s") % "RubyGems.org") task :rubygems => :gem do pusher = GemPusher.new(gem_path, @slide.author.rubygems_user) pusher.push end end
define_publish_speaker_deck_task()
click to toggle source
# File lib/rabbit/task/slide.rb, line 182 def define_publish_speaker_deck_task desc(_("Publish the slide to %s") % "Speaker Deck") task :speaker_deck => :pdf do puts "Not implemented yet." end end
define_publish_task()
click to toggle source
# File lib/rabbit/task/slide.rb, line 155 def define_publish_task desc(_("Publish the slide to all available targets")) task :publish publish_tasks = [] namespace :publish do if @slide.author.speaker_deck_user define_publish_speaker_deck_task publish_tasks << :speaker_deck end if @slide.author.rubygems_user define_publish_rubygems_task publish_tasks << :rubygems end end task :publish => publish_tasks.collect {|task| "publish:#{task}"} end
define_run_task()
click to toggle source
# File lib/rabbit/task/slide.rb, line 95 def define_run_task file options_path do format = _("To run rabbit, create '%{options_path}'!") raise(format % {:options_path => options_path}) end desc(_("Show slide")) task :run => options_path do rabbit end end
gem_path()
click to toggle source
# File lib/rabbit/task/slide.rb, line 193 def gem_path File.join(@package_dir, "#{spec.name}-#{spec.version}.gem") end
homepage()
click to toggle source
# File lib/rabbit/task/slide.rb, line 205 def homepage rubygems_user = @slide.author.rubygems_user "https://slide.rabbit-shocker.org/authors/#{rubygems_user}/#{@slide.id}/" end
load_slide_configuration()
click to toggle source
# File lib/rabbit/task/slide.rb, line 49 def load_slide_configuration slide_conf = SlideConfiguration.new(@logger) slide_conf.load slide_conf end
options_path()
click to toggle source
# File lib/rabbit/task/slide.rb, line 189 def options_path ".rabbit" end
pdf_base_path()
click to toggle source
# File lib/rabbit/task/slide.rb, line 201 def pdf_base_path "#{@slide.id}-#{@slide.base_name}.pdf" end
pdf_path()
click to toggle source
# File lib/rabbit/task/slide.rb, line 197 def pdf_path File.join(@pdf_dir, pdf_base_path) end
rabbit(*arguments)
click to toggle source
# File lib/rabbit/task/slide.rb, line 210 def rabbit(*arguments) unless Rabbit::Command::Rabbit.run(*arguments) message = "failed to run Rabbit" message << ": #{arguments.join(' ')}" unless arguments.empty? raise message end end