From 55f42d26be85a2928242270bcb1536cad85aa857 Mon Sep 17 00:00:00 2001 From: Rodrigo Pinto Date: Thu, 28 Apr 2011 21:28:13 -0300 Subject: [PATCH] adding enki migrator --- lib/jekyll/migrators/enki.rb | 51 ++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 lib/jekyll/migrators/enki.rb diff --git a/lib/jekyll/migrators/enki.rb b/lib/jekyll/migrators/enki.rb new file mode 100644 index 00000000..a3e715c9 --- /dev/null +++ b/lib/jekyll/migrators/enki.rb @@ -0,0 +1,51 @@ +# Adapted by Rodrigo Pinto +# Based on typo.rb by Toby DiPasquale + +require 'fileutils' +require 'rubygems' +require 'sequel' + +module Jekyll + module Enki + SQL = <<-EOS + SELECT p.id, + p.title, + p.slug, + p.body, + p.published_at as date, + p.cached_tag_list as tags + FROM posts p + EOS + + # just working with postgres, but can be easily adapted + # to work with both mysql and postgres + def self.process(dbname, user, pass, host='localhost') + FileUtils.mkdir_p '_posts' + db = Sequel.postgres(:database => dbname, + :user => user, + :password => pass, + :host => host, + :encoding => 'utf8') + + db[SQL].each do |post| + + name = [ sprintf("%.04d", post[:date].year), + sprintf("%.02d", post[:date].month), + sprintf("%.02d", post[:date].day), + post[:slug].strip ].join('-') + name += '.textile' + + File.open("_posts/#{name}", 'w') do |f| + f.puts({ 'layout' => 'post', + 'title' => post[:title].to_s, + 'enki_id' => post[:id], + 'categories' => post[:tags] + }.delete_if { |k, v| v.nil? || v == '' }.to_yaml) + f.puts '---' + f.puts post[:body].delete("\r") + end + end + end + + end # module Enki +end # module Jekyll \ No newline at end of file