2015-03-16 14:40:47 +02:00
|
|
|
require 'middleman'
|
|
|
|
|
require 'capybara'
|
|
|
|
|
require 'capybara/poltergeist'
|
|
|
|
|
require 'mini_magick'
|
|
|
|
|
|
|
|
|
|
class Screenshot
|
|
|
|
|
include Capybara::DSL
|
2015-03-16 14:55:18 +02:00
|
|
|
attr_accessor :theme
|
2015-03-16 14:40:47 +02:00
|
|
|
|
|
|
|
|
def self.prepare
|
|
|
|
|
Capybara.register_driver :poltergeist do |app|
|
|
|
|
|
Capybara::Poltergeist::Driver.new(app, window_size: [1280, 768])
|
|
|
|
|
end
|
|
|
|
|
Capybara.default_driver = :poltergeist
|
|
|
|
|
Capybara.app = ::Middleman::Application.server.inst do
|
|
|
|
|
set :root, File.expand_path(File.join(File.dirname(__FILE__), '..'))
|
|
|
|
|
set :environment, :development
|
|
|
|
|
set :show_exceptions, false
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
2015-03-16 14:55:18 +02:00
|
|
|
def initialize(theme)
|
|
|
|
|
@theme = OpenStruct.new(theme.merge(
|
|
|
|
|
slug: theme[:name].parameterize.underscore,
|
|
|
|
|
digest: Digest::MD5.new.hexdigest(theme[:colors])
|
|
|
|
|
))
|
2015-03-16 14:40:47 +02:00
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def generate_theme_image
|
2015-03-16 14:55:18 +02:00
|
|
|
if File.exist? target_file
|
|
|
|
|
puts "Image for theme #{theme.name} already exists"
|
|
|
|
|
return
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
puts "Generating image for theme #{theme.name}"
|
2015-03-16 14:40:47 +02:00
|
|
|
visit '/'
|
2015-03-16 14:55:18 +02:00
|
|
|
within ".theme_#{theme.slug}" do
|
2015-03-16 14:40:47 +02:00
|
|
|
choose 'sidebar_theme_rd'
|
|
|
|
|
end
|
|
|
|
|
sleep 1
|
2015-03-16 14:55:18 +02:00
|
|
|
|
|
|
|
|
file = Tempfile.new([theme.slug, ".png"])
|
2015-03-16 14:40:47 +02:00
|
|
|
begin
|
|
|
|
|
page.save_screenshot(file.path, full: true)
|
|
|
|
|
|
|
|
|
|
MiniMagick::Tool::Convert.new do |convert|
|
|
|
|
|
convert << file.path
|
|
|
|
|
convert.crop '220x220+0+0'
|
2015-03-16 14:55:18 +02:00
|
|
|
convert << target_file
|
2015-03-16 14:40:47 +02:00
|
|
|
end
|
|
|
|
|
ensure
|
|
|
|
|
file.close
|
|
|
|
|
file.unlink
|
|
|
|
|
end
|
|
|
|
|
end
|
2015-03-16 14:55:18 +02:00
|
|
|
|
|
|
|
|
def target_file
|
|
|
|
|
"source/images/theme/#{theme.slug}-#{theme.digest}.png"
|
|
|
|
|
end
|
2015-03-16 14:40:47 +02:00
|
|
|
end
|