$:.unshift File.expand_path("../../", File.dirname(__FILE__)) # load from jekyll-import/lib require 'jekyll/command' require 'jekyll-import' module Jekyll module Commands class Import < Command IMPORTERS = { :behance => 'Behance', :csv => 'CSV', :drupal6 => 'Drupal6', :drupal7 => 'Drupal7', :enki => 'Enki', :joomla => 'Joomla', :jrnl => 'Jrnl', :ghost => 'Ghost', :google_reader => 'GoogleReader', :marley => 'Marley', :mephisto => 'Mephisto', :mt => 'MT', :posterous => 'Posterous', :rss => 'RSS', :s9y => 'S9Y', :textpattern => 'TextPattern', :tumblr => 'Tumblr', :typo => 'Typo', :wordpress => 'WordPress', :wordpressdotcom => 'WordpressDotCom' } class << self def init_with_program(prog) prog.command(:import) do |c| c.syntax 'import <platform> [options]' c.description 'Import your old blog to Jekyll' importers = JekyllImport.add_importer_commands(c) c.action do |args, options| if args.empty? Jekyll.logger.warn "You must specify an importer." Jekyll.logger.info "Valid options are:" importers.each { |i| Jekyll.logger.info "*", "#{i}" } end end end end def process(migrator, options) migrator = migrator.to_s.downcase if IMPORTERS.keys.include?(migrator.to_sym) if JekyllImport::Importers.const_defined?(IMPORTERS[migrator.to_sym]) klass = JekyllImport::Importers.const_get(IMPORTERS[migrator.to_sym]) klass.run(options.__hash__) end else abort_on_invalid_migrator(migrator) end end def abort_on_invalid_migrator(migrator) msg = "Sorry, '#{migrator}' isn't a valid migrator. Valid choices:\n" IMPORTERS.keys.each do |k, v| msg += "* #{k}\n" end abort msg end end end end end