Class: Overcommit::GitHook::ImageOptimization

Inherits:
HookSpecificCheck show all
Includes:
HookRegistry
Defined in:
lib/overcommit/plugins/pre_commit/image_optimization.rb

Defined Under Namespace

Classes: ImageSet

Instance Method Summary collapse

Methods included from HookRegistry

included

Methods inherited from HookSpecificCheck

file_type, friendly_name, #initialize, #name, required!, #skip?, skippable?, #staged, stealth!, #stealth?

Constructor Details

This class inherits a constructor from Overcommit::GitHook::HookSpecificCheck

Instance Method Details

#run_checkObject



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
# File 'lib/overcommit/plugins/pre_commit/image_optimization.rb', line 6

def run_check
  begin
    require 'image_optim'
  rescue LoadError
    return :warn, "'image_optim' gem not installed -- run `gem install image_optim`"
  end

  optimized_images =
    begin
      ImageSet.new(staged.map(&:original_path)).
        optimize_with(ImageOptim.new(:pngout => false))

    rescue ImageOptim::BinNotFoundError => e
      return :stop,
        "#{e.message}. The image_optim gem is dependendent on this binary. " <<
        "See https://github.com/toy/image_optim for more info."
    end

  if optimized_images.any?
    return :bad,
      "Optimized #{optimized_images.map(&:to_s).inspect}. " <<
        " Please add them to your commit."
  else
    return :good
  end
end