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