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

- old
+ new

@@ -78,28 +78,43 @@ end def define task :default => :run - options_file = ".rabbit" - file options_file do - format = _("To run rabbit, create '%{options_file}'!") - raise(format % {:options_file => options_file}) + define_run_task + define_gem_task + define_pdf_task + define_publish_task + end + + 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_file do + task :run => options_path do rabbit 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", :pdf] do mkdir_p(@package_dir) 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 = { @@ -116,80 +131,103 @@ unless errors.empty? raise errors.join("\n") end end end + end - file pdf_path => [options_file, *(spec.files - [pdf_path])] do + 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 + def define_publish_task desc(_("Publish the slide to all available targets")) task :publish publish_tasks = [] namespace :publish do if @slide.author.rubygems_user - desc(_("Publish the slide to %s" % "RubyGems.org")) - task :rubygems => :gem do - ruby("-S", "gem", "push", "--verbose", gem_path) - end + define_publish_rubygems_task publish_tasks << :rubygems end slideshare_user = @slide.author.slideshare_user if slideshare_user - desc(_("Publish the slide to %s" % "SlideShare")) - task :slideshare => [:pdf, "gem:validate"] do - require "rabbit/slideshare" - slideshare = SlideShare.new(@logger) - slideshare.user = slideshare_user - slideshare.pdf_path = pdf_path - slideshare.title = spec.summary - slideshare.description = spec.description - slideshare.tags = @tags if @tags - id = slideshare.upload - if id - url = "http://www.slideshare.net/#{slideshare_user}/ss-#{id}" - @logger.info(_("Uploaded successfully!")) - @logger.info(_("See %s") % url) - Gtk.show_uri(url) if Gtk.respond_to?(:show_uri) - end - end + define_publish_slideshare_task publish_tasks << :slideshare end if @slide.author.speaker_deck_user - desc(_("Publish the slide to %s" % "Spearker Deck")) - task :speaker_deck => :pdf do - raise "Not implemented yet." - end + define_publish_speaker_deck_task publish_tasks << :speaker_deck end end task :publish => publish_tasks.collect {|task| "publish:#{task}"} end + def define_publish_rubygems_task + desc(_("Publish the slide to %s" % "RubyGems.org")) + task :rubygems => :gem do + ruby("-S", "gem", "push", gem_path) + end + end + + def define_publish_slideshare_task + desc(_("Publish the slide to %s" % "SlideShare")) + task :slideshare => [:pdf, "gem:validate"] do + require "rabbit/slideshare" + slideshare = SlideShare.new(@logger) + slideshare.user = slideshare_user + slideshare.pdf_path = pdf_path + slideshare.title = spec.summary + slideshare.description = spec.description + slideshare.tags = @tags if @tags + id = slideshare.upload + if id + url = "http://www.slideshare.net/#{slideshare_user}/#{id}" + @logger.info(_("Uploaded successfully!")) + @logger.info(_("See %s") % url) + Gtk.show_uri(url) if Gtk.respond_to?(:show_uri) + + @slide.slideshare_id = id + @slide.save(".") + end + end + end + + def define_publish_speaker_deck_task + desc(_("Publish the slide to %s" % "Spearker Deck")) + task :speaker_deck => :pdf do + puts "Not implemented yet." + end + end + + def options_path + ".rabbit" + end + def gem_path File.join(@package_dir, "#{spec.name}-#{spec.version}.gem") end def pdf_path File.join(@pdf_dir, pdf_base_path) end def pdf_base_path - "#{@slide.id}.pdf" + "#{@slide.id}-#{@slide.base_name}.pdf" end def homepage rubygems_user = @slide.author.rubygems_user - "http://slide.rabbit-shockers.org/#{rubygems_user}/\#{@slide.id}/" + "http://slide.rabbit-shocker.org/authors/#{rubygems_user}/#{@slide.id}/" end def rabbit(*arguments) Rabbit::Command::Rabbit.run(*arguments) end