all repos — h3rald @ 8.1.0

The sources of https://h3rald.com

tasks/typo.rake

 1
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
require 'rubygems'
require 'extlib'
require 'pathname'
require 'fileutils'
begin
	require 'mysql'
	require 'sequel'
rescue Exception => e
end
require 'yaml'
require 'iconv'
require 'lib/utils.rb'

include TypoUtils

namespace :typo do

	task :migrate, :db, :usr, :pwd, :host do |t, args|
		raise RuntimeError, "Please provide :db, :usr, :pass" unless args[:db] && args[:usr] && args[:pwd]
		db = Sequel.mysql args[:db], :user => args[:usr], :password => args[:pwd], :host => args[:host] || 'localhost'
		# Remove all existing pages!
		dir = Pathname.new(Dir.pwd/'content')
		dir.rmtree if dir.exist?
		dir.mkpath
		# Prepare page data
		dataset = db[:contents].where("state = 'published' || type = 'Page'")
		total = dataset.count 
		c = 1
		total_tags = []
		dataset.each do |a|
			puts "Migrating [#{c}/#{total}]: '#{a[:title]}'..."
			meta = {}
			meta['tags'] = get_tags a[:keywords]
			meta['comments'] = get_comments db, a[:id]
			meta['permalink'] = a[:permalink] || a[:name]
			meta['title'] = a[:title]
			meta['type'] = a[:type].downcase
			meta['date'] = a[:published_at]
			meta['toc'] = true
			meta['filters_pre'], extension = get_filter db, a[:text_filter_id]
			contents = convert_code_blocks meta, a[:body]+a[:extended].to_s
			write_page meta, contents, extension
			c = c+1
		end
	end

end