lib/middleman-webp/extension.rb in middleman-webp-0.2.5 vs lib/middleman-webp/extension.rb in middleman-webp-0.2.6
- old
+ new
@@ -1,19 +1,46 @@
require 'middleman-core'
require 'middleman-webp/converter'
+require 'shell'
+
module Middleman
class WebPExtension < Extension
option(:conversion_options, {},
'Custom conversion options for cwebp/gif2webp')
+ option(:append_extension, false,
+ 'keep the original filename and extension and append .webp (image.png => image.png.webp)')
option(:ignore, [], 'Ignores files with matching paths')
+ option(:verbose, false, 'Display all external command which are executed '\
+ 'to help debugging.')
+
def initialize(app, options_hash = {}, &block)
super
+ @app = app
+ end
- configuration = options
+ def after_build(builder)
+ return unless dependencies_installed?(builder)
+ Middleman::WebP::Converter.new(@app, options, builder).convert
+ end
- app.after_build do |builder|
- Middleman::WebP::Converter.new(app, configuration, builder).convert
+ # Internal: Check that cwebp and gif2webp commandline tools are available.
+ #
+ # Returns true if all is OK.
+ def dependencies_installed?(builder)
+ sh = Shell.new
+
+ begin
+ sh.find_system_command('gif2webp')
+ rescue Shell::Error::CommandNotFound => e
+ builder.say_status :webp, "#{e.message} Please install latest version of webp library and tools to get gif2webp and be able to convert gif files also.", :red
+ end
+
+ begin
+ true if sh.find_system_command('cwebp')
+ rescue Shell::Error::CommandNotFound => e
+ builder.say_status :webp, "ERROR: #{e.message} Please install cwebp and gif2webp commandline tools first.", :red
+ false
end
end
end
end