Add screenshot generator for themes (and screenshots themselves)
This commit is contained in:
@@ -0,0 +1,48 @@
|
||||
require 'middleman'
|
||||
require 'capybara'
|
||||
require 'capybara/poltergeist'
|
||||
require 'mini_magick'
|
||||
|
||||
class Screenshot
|
||||
include Capybara::DSL
|
||||
attr_accessor :theme, :theme_name
|
||||
|
||||
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
|
||||
|
||||
def initialize(theme_name)
|
||||
@theme_name = theme_name
|
||||
@theme = theme_name.parameterize.underscore
|
||||
end
|
||||
|
||||
def generate_theme_image
|
||||
puts "Generating image for theme #{theme_name}"
|
||||
visit '/'
|
||||
within ".theme_#{theme}" do
|
||||
choose 'sidebar_theme_rd'
|
||||
end
|
||||
sleep 1
|
||||
file = Tempfile.new([theme, ".png"])
|
||||
begin
|
||||
page.save_screenshot(file.path, full: true)
|
||||
|
||||
MiniMagick::Tool::Convert.new do |convert|
|
||||
convert << file.path
|
||||
convert.crop '220x220+0+0'
|
||||
convert << "source/images/theme/#{theme}.png"
|
||||
end
|
||||
ensure
|
||||
file.close
|
||||
file.unlink
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,20 @@
|
||||
require 'lib/screenshot'
|
||||
|
||||
class ScreenshotGenerator < ::Middleman::Extension
|
||||
include Capybara::DSL
|
||||
|
||||
def initialize(app, options_hash={}, &block)
|
||||
super
|
||||
app.before_build do |builder|
|
||||
Screenshot.prepare
|
||||
data = YAML.load_file('data/themes.yml')
|
||||
data.each do |theme|
|
||||
Screenshot.new(theme[:name]).generate_theme_image
|
||||
end
|
||||
puts "Hello World"
|
||||
# builder.run './my_deploy_script.sh'
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
::Middleman::Extensions.register(:screenshot_generator, ScreenshotGenerator)
|
||||
Reference in New Issue
Block a user