image_optimizer 1.7.0 → 1.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: ad635514a39378a2f01e3dd15515cf9433b341bd
4
- data.tar.gz: 3612dc1b7da6cd2e19603f5c82c8a8e259ccd0a9
2
+ SHA256:
3
+ metadata.gz: 52ece0fb51c602d22fb7c82b8c14a1a47ad2972d6e925226994b8c656484e6cb
4
+ data.tar.gz: 368aca1eb6b81221e1d130ca0d10490eab127a00a3b991bac4d2fc3bc75d32b7
5
5
  SHA512:
6
- metadata.gz: 59de349a631136309aa0d97942c49ffb76ca39c249187e91850dd949471c23a16bd85b3e4fef1c0c6ada72f442f01d86c58ce6b75efc68449f83a8dcb5cc4027
7
- data.tar.gz: 16d02acc88a30773dbed18dc3f7594faa26004dbc8bcfb9491237fd9b737cc8b73efd427f26b482e4518e8c56e710a676384a7fbf30c9cf4a8315416e6db07b6
6
+ metadata.gz: 6022872379386db2a408e448a87f1679c2aef82ec40485791da1128cfdac177ea2558c70c12f27537e45c5bb53e94ba067cd99aa4a5f993a6a1782ed6707fd9f
7
+ data.tar.gz: 9683e4dc3de5849e0240ae0d81c0791cfb466ee5e1e40fc9c748b28789b71b22c3445e8d5c0129810064c212f1c148e77769546787a49ccd6c79c4964e54d728
checksums.yaml.gz.sig CHANGED
Binary file
data/CHANGELOG.md ADDED
@@ -0,0 +1,11 @@
1
+ ## [1.9.0](https://github.com/jtescher/image_optimizer/releases/tag/v1.9.0) 2022-01-10
2
+ * add ignore option for compression methods (#23)
3
+
4
+ ## [1.8.0](https://github.com/jtescher/image_optimizer/releases/tag/v1.8.0) 2018-07-30
5
+ * Fix: space in file name will break PNGQuantOptimizer - https://github.com/jtescher/image_optimizer/pull/21
6
+
7
+ ## [1.7.2](https://github.com/jtescher/image_optimizer/releases/tag/v1.7.2) 2018-01-10
8
+ * Added quiet option support for pngquant optimizer - https://github.com/jtescher/image_optimizer/pull/19
9
+
10
+ ## [1.7.1](https://github.com/jtescher/image_optimizer/releases/tag/v1.7.1) 2017-11-29
11
+ * Fix PNGQuantOptimizer `Unrecognised option` error - https://github.com/jtescher/image_optimizer/issues/17
data/README.md CHANGED
@@ -4,14 +4,10 @@ This gem allows you to simply optimize images via jpegoptim or OptiPNG.
4
4
 
5
5
  Tested against ruby 2.0.x, 2.1.x, 2.2.x, 2.3.x, and ruby-head
6
6
 
7
- [![Build Status](https://secure.travis-ci.org/jtescher/image_optimizer.png)]
8
- (http://travis-ci.org/jtescher/image_optimizer)
9
- [![Dependency Status](https://gemnasium.com/jtescher/image_optimizer.png)]
10
- (https://gemnasium.com/jtescher/image_optimizer)
11
- [![Code Climate](https://codeclimate.com/github/jtescher/image_optimizer.png)]
12
- (https://codeclimate.com/github/jtescher/image_optimizer)
13
- [![Coverage Status](https://coveralls.io/repos/jtescher/image_optimizer/badge.png)]
14
- (https://coveralls.io/r/jtescher/image_optimizer)
7
+ [![Build Status](https://secure.travis-ci.org/jtescher/image_optimizer.png)](http://travis-ci.org/jtescher/image_optimizer)
8
+ [![Dependency Status](https://gemnasium.com/jtescher/image_optimizer.png)](https://gemnasium.com/jtescher/image_optimizer)
9
+ [![Maintainability](https://api.codeclimate.com/v1/badges/31aa4c1b98a4c31433a3/maintainability)](https://codeclimate.com/github/jtescher/image_optimizer/maintainability)
10
+ [![Coverage Status](https://coveralls.io/repos/jtescher/image_optimizer/badge.png)](https://coveralls.io/r/jtescher/image_optimizer)
15
11
  [![Gem Version](https://badge.fury.io/rb/image_optimizer.png)](http://badge.fury.io/rb/image_optimizer)
16
12
 
17
13
  ## Installation
@@ -24,7 +20,7 @@ Tested against ruby 2.0.x, 2.1.x, 2.2.x, 2.3.x, and ruby-head
24
20
 
25
21
  3. Gifsicle, which can be installed from [www.lcdf.org/gifsicle/](https://www.lcdf.org/gifsicle/)
26
22
 
27
- 4. Pngquant, which can be installed from [pngquant.org]https://pngquant.org/
23
+ 4. Pngquant, which can be installed from [pngquant.org](https://pngquant.org/)
28
24
 
29
25
  Or install the utilities via homebrew:
30
26
 
@@ -40,7 +36,7 @@ And then execute:
40
36
 
41
37
  ```bash
42
38
  $ bundle
43
- ```
39
+ ```
44
40
 
45
41
  Or install it yourself as:
46
42
  ```bash
@@ -62,7 +58,7 @@ Pngquant is a command-line utility and a library for lossy compression of PNG im
62
58
  The conversion reduces file sizes significantly (often as much as 70%) and preserves full alpha transparency. Generated images are compatible with all modern web browsers, and have better fallback in IE6 than 24-bit PNGs.
63
59
 
64
60
  ```ruby
65
- PNGQuantOptimizer.new('path/to/file.png').optimize
61
+ ImageOptimizer::PNGQuantOptimizer.new('path/to/file.png').optimize
66
62
  ```
67
63
 
68
64
  #### Optimize JPEG formats:
@@ -93,6 +89,12 @@ Default is false.
93
89
  ImageOptimizer.new('path/to/file.jpg', quiet: true).optimize
94
90
  ```
95
91
 
92
+ You can also enable quiet mode globally:
93
+
94
+ ```ruby
95
+ ImageOptimizer.quiet = true
96
+ ```
97
+
96
98
  ##### Lossy JPEG optimization
97
99
 
98
100
  Pass an optional `quality` parameter to target a specific lossy JPG quality level (0-100), default is lossless
@@ -153,6 +155,14 @@ instead of the filename extension, default is false.
153
155
  ImageOptimizer.new('path/to/file.jpg', identify: true).optimize
154
156
  ```
155
157
 
158
+ ##### Ignore compression methods
159
+
160
+ You can ignore optimization methods by passing an optional `ignore` parameter with the method name(s). For example, to compress a png ignoring the lossless compression method `optipng`:
161
+
162
+ ```ruby
163
+ ImageOptimizer.new('path/to/file.png', ignore: :optipng).optimize
164
+ ```
165
+
156
166
  ## Set bin directories
157
167
 
158
168
  Optionally set binary directories with the `OPTIPNG_BIN`, `JPEGOPTIM_BIN` and `IDENTIFY_BIN` environment variables.
data/certs/jtescher.pem CHANGED
@@ -1,21 +1,25 @@
1
1
  -----BEGIN CERTIFICATE-----
2
- MIIDdDCCAlygAwIBAgIBATANBgkqhkiG9w0BAQUFADBAMRIwEAYDVQQDDAlqYXRl
3
- c2NoZXIxFTATBgoJkiaJk/IsZAEZFgVnbWFpbDETMBEGCgmSJomT8ixkARkWA2Nv
4
- bTAeFw0xNjA5MjYxNzU4NTRaFw0xNzA5MjYxNzU4NTRaMEAxEjAQBgNVBAMMCWph
5
- dGVzY2hlcjEVMBMGCgmSJomT8ixkARkWBWdtYWlsMRMwEQYKCZImiZPyLGQBGRYD
6
- Y29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA7ptCQvN739Rjos4e
7
- G2Y8uGCQxpBoXozU36PXLtR5ws7aly1QV0zRc1cy7nKnOSnXn7dEfbLGZS6/87pM
8
- rDFFszHsn/dizlXe3wejHePyG1EsYnIezISP9YSDcm7qpysrUAa2fKPqqZ6DNbIP
9
- 6wRF9Cun4hvmQPDrs0zKU6p43XHnJUg7YBYCOVACa7eFD1EOya+599hFMhnWChvT
10
- rKkVc/JRvmKYLIkB6Y6N3TFrVi9x0Qpo4fjG5rQ9xxNZhpFIOMJ0VJbuRSIMlLwr
11
- Ryd/QG0BcvkSHph/ZDlgfZ1V/lzWWq+mZOt/U+t6cVITSET5XDzHkeZ0BodGyAMr
12
- lZpggQIDAQABo3kwdzAJBgNVHRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNVHQ4EFgQU
13
- QLcGxzEu2F2XI+3tIWSu8KqAFrkwHgYDVR0RBBcwFYETamF0ZXNjaGVyQGdtYWls
14
- LmNvbTAeBgNVHRIEFzAVgRNqYXRlc2NoZXJAZ21haWwuY29tMA0GCSqGSIb3DQEB
15
- BQUAA4IBAQCh9hDqN3lZw0PLVkXVcnwnl3KAjJfwCwk1okeuJ+IeQSfRLPp2ECLn
16
- j87oXZPcBukPB0/zTHcF/eBPIGvOedqVhp9SEar51dXLdiCe+deXx/bI3YMRdTGH
17
- 6NtqR6hWjm+hzBthxDsKhmQRczJ+5FNzAoW+pzf7ouKGfeFiFPwvAMolzsi2T+O/
18
- AmsZcBYVI8HbrnuoQI30XfdhNoRrKhoMyzAyVdWX9xQW56TWUO+o8iXBKjOxX2C5
19
- 8lVFrLvGNGPCLQmEf498hBYT99EVYiuiI0F7YlTmBdzL1uwTMk5le/b0NguYdSJ7
20
- qKlUP9usSwMVc+qmaOg1EYfPGYvt63qS
2
+ MIIENDCCApygAwIBAgIBATANBgkqhkiG9w0BAQsFADAiMSAwHgYDVQQDDBdqdWxp
3
+ YW4vREM9dGVzY2hlci9EQz1tZTAeFw0yMjAxMTAxNTMyMzFaFw0yMzAxMTAxNTMy
4
+ MzFaMCIxIDAeBgNVBAMMF2p1bGlhbi9EQz10ZXNjaGVyL0RDPW1lMIIBojANBgkq
5
+ hkiG9w0BAQEFAAOCAY8AMIIBigKCAYEA2NIqnCAvdqMziQRxhBrjOOEy/bpjVakN
6
+ 4SY7DxGzx2C7nSTmIS8KDNVJMJJu+1SjsrE7zZR4YGXsn5EWC9byjUlEbIr+bcYX
7
+ Kqez1qWEAF5bAHCi2aIQV7DL6EjhuuhHszK921VK52m9/kfLzCGojM+dQGhxsS9R
8
+ uK8NMZvOnBprEblr58iD9b7wp7Nw8zl3HeYi7QEhFL9wQcIQTtACiRxim+0N0XXK
9
+ W9Fwk3gB8UaiWEwNdaZJ360+YubO1Q+9/6XnItDl8rvyyzkkPk8qTbqBxo+9qExk
10
+ dQkaJM2a4u0KBbdpMzSH05lcaHsitvaj9v3OXgXcX1JCJ8PfvjMkRVOj6p490Wv5
11
+ jgtJ8WsaJuJ0Z8AZK5LdD0DJPEH2ne54IKULsg0+G+kc7TGApxkQ9guJ3DYFMCww
12
+ NvTZhT5wdoKYi2EmWIMick8NiVWU8JHolHAjWHAMnnzLu1MeQEQdNIcU7+q4Vsti
13
+ qNQDKfsF14EBoUrdVQw7GhM0YsDflP9vAgMBAAGjdTBzMAkGA1UdEwQCMAAwCwYD
14
+ VR0PBAQDAgSwMB0GA1UdDgQWBBSjYnqpiURz0CR8srSqAJbZhlIx3TAcBgNVHREE
15
+ FTATgRFqdWxpYW5AdGVzY2hlci5tZTAcBgNVHRIEFTATgRFqdWxpYW5AdGVzY2hl
16
+ ci5tZTANBgkqhkiG9w0BAQsFAAOCAYEANc6i+QIto8zFj+y2rHpz197Dg8nYtHnr
17
+ LjEeNCm3JPyTZNDXbs/W+GArMiukQ3GkIdDgx+e+Q3h8FMdO5L5ObRNeGmBDyEyG
18
+ M8ubpHxacemSZkfmVyNkDBWOFYQYMJaC2TgmnUnRe5IAuOuWRgvC4kvb1blTsqbP
19
+ jNDn4Z2FofVroUQsPD8lVw27cUsoA2SmFnS+8ThqVsn/CIEoLkIkOWElAaKqa4z9
20
+ xU/u+8Mi2o2ndq1k5/WvYn2AAEm+DjJ5jPkSeepYdlNe2ogEeGcWEFmyDJfr0vK3
21
+ VokEpOHGpz1/CiJnJ08xTGCLOZ13dtclzhILRsP7tTh8+c9XB4SkmuX37dazBUu0
22
+ pdTkZA65Y5/zNsW4BLHc8h6TyXqpmv6giWKOm6gHdWVrhuVM9GGR4gIJyI5UFISg
23
+ HgI9vJ9QNRAdHzkP6ToW7r3j6nuszBAcnvJHU+MnONH9mGe7EWado06XjFAgrcA/
24
+ 47H47vSiiTIz55uAos1d8U8682yHT1SQ
21
25
  -----END CERTIFICATE-----
@@ -0,0 +1 @@
1
+ dc5be3d00db746d52012b8f61e8c7cc546538180fbbd043bee18e466dccb5454c2e7675d37f2db91ba3db7b513dc7f5a33ed9953c182b5d22035031ed1bc99f2
@@ -0,0 +1 @@
1
+ 309cf3bfe33c8afccbac2b99ad23dd124ff6230f66a23aec444f22494f3726b3e22fad4656cf72984ed029f1149e4dbfcbdec203b143d259959f41b4825310ae
@@ -0,0 +1 @@
1
+ a060c2b8101654118102bbced353085a17155363cd283bf2365f8ade16fa621b83076a06cf1c0635c44ce8ef465fad4a675bcebae616cb86b83e871db67e6e44
@@ -0,0 +1 @@
1
+ 848760a4bcbf80d14abfa5ac4c752e8f8bc9019bff3f6f3240fbed4ac8c899bac1720a6bbd13bdba021adf5641d6e9e1d17c67d7d472a82ee0d9d85e8bcea22d
@@ -9,6 +9,7 @@ class ImageOptimizer
9
9
  end
10
10
 
11
11
  def optimize
12
+ return if ignore?
12
13
  return unless correct_format?
13
14
 
14
15
  if optimizer_bin?
@@ -40,5 +41,16 @@ class ImageOptimizer
40
41
  ENV["#{bin_name.upcase}_BIN"] || which(bin_name)
41
42
  end
42
43
 
44
+ def quiet?
45
+ options[:quiet] || ImageOptimizer.quiet
46
+ end
47
+
48
+ def ignore?
49
+ ignore.include? bin_name
50
+ end
51
+
52
+ def ignore
53
+ options[:ignore] ? [options[:ignore]].flatten.map(&:to_s) : []
54
+ end
43
55
  end
44
56
  end
@@ -6,7 +6,7 @@ class ImageOptimizer
6
6
  def command_options
7
7
  flags = ['-f', '--strip-all', '--all-progressive']
8
8
  flags << max_quantity if (0..100).include?(options[:quality])
9
- flags << quiet if options[:quiet]
9
+ flags << quiet if quiet?
10
10
  flags << path
11
11
  end
12
12
 
@@ -6,7 +6,7 @@ class ImageOptimizer
6
6
  def command_options
7
7
  flags = %W[-o#{level}]
8
8
  flags << strip_metadata if strip_metadata?
9
- flags << quiet if options[:quiet]
9
+ flags << quiet if quiet?
10
10
  flags << path
11
11
  end
12
12
 
@@ -4,15 +4,17 @@ class ImageOptimizer
4
4
  private
5
5
 
6
6
  def command_options
7
- flags = ['--skip-if-larger', '--speed 1',
8
- '--force', '--verbose', '--ext .png']
9
- flags << quantity
7
+ flags = ['--skip-if-larger', '--speed=1',
8
+ '--force', '--verbose', '--ext=.png']
9
+
10
+ flags -= ['--verbose'] if quiet?
11
+ flags << quality
10
12
  flags << path
11
13
  end
12
14
 
13
- def quantity
14
- return "--quality 100" unless (0..100).include?(options[:quality])
15
- "--quality #{options[:quality]}"
15
+ def quality
16
+ return "--quality=100" unless (0..100).include?(options[:quality])
17
+ "--quality=#{options[:quality]}"
16
18
  end
17
19
 
18
20
  def extensions
@@ -1,3 +1,3 @@
1
1
  class ImageOptimizer
2
- VERSION = '1.7.0'
2
+ VERSION = '1.9.0'
3
3
  end
@@ -9,6 +9,15 @@ require 'image_optimizer/pngquant_optimizer'
9
9
  class ImageOptimizer
10
10
  include Shell
11
11
 
12
+ # Allow the +quiet+ flag to be set globally.
13
+ @@quiet = false
14
+ def self.quiet
15
+ @@quiet
16
+ end
17
+ def self.quiet=(value)
18
+ @@quiet = value
19
+ end
20
+
12
21
  attr_reader :path, :options
13
22
  def initialize(path, options = {})
14
23
  @path = path
@@ -46,6 +46,14 @@ describe ImageOptimizer::GIFOptimizer do
46
46
  subject
47
47
  end
48
48
  end
49
+
50
+ context 'with ignore parameter' do
51
+ let(:options) { { :ignore => :gifsicle } }
52
+ it 'does not optimize the gif' do
53
+ expect(gif_optimizer).not_to receive(:system)
54
+ subject
55
+ end
56
+ end
49
57
  end
50
58
 
51
59
 
@@ -53,6 +53,25 @@ describe ImageOptimizer::JPEGOptimizer do
53
53
  subject
54
54
  end
55
55
  end
56
+
57
+ context 'with global quiet mode enabled' do
58
+ before { ImageOptimizer.quiet = true }
59
+ after { ImageOptimizer.quiet = false }
60
+
61
+ it 'sets quiet parameter on the command line' do
62
+ optimizer_options = %w[-f --strip-all --all-progressive --quiet /path/to/file.jpg]
63
+ expect(jpeg_optimizer).to receive(:system).with('/usr/local/bin/jpegoptim', *optimizer_options)
64
+ subject
65
+ end
66
+ end
67
+
68
+ context 'with ignore parameter' do
69
+ let(:options) { { :ignore => :jpegoptim } }
70
+ it 'does not optimize the jpeg' do
71
+ expect(jpeg_optimizer).not_to receive(:system)
72
+ subject
73
+ end
74
+ end
56
75
  end
57
76
 
58
77
  context 'optimizing utility is not installed' do
@@ -66,4 +85,4 @@ describe ImageOptimizer::JPEGOptimizer do
66
85
  end
67
86
  end
68
87
  end
69
- end
88
+ end
@@ -40,6 +40,16 @@ describe ImageOptimizer::PNGOptimizer do
40
40
  end
41
41
  end
42
42
 
43
+ context 'with global quiet mode enabled' do
44
+ before { ImageOptimizer.quiet = true }
45
+ after { ImageOptimizer.quiet = false }
46
+
47
+ it 'sets quiet parameter on the command line' do
48
+ expect(png_optimizer).to receive(:system).with('/usr/local/bin/optipng', '-o7', '-strip all', '-quiet', '/path/to/file.png')
49
+ subject
50
+ end
51
+ end
52
+
43
53
  context 'without optimization parameter' do
44
54
  it 'optimizes the png with level 7 optimization' do
45
55
  expect(png_optimizer).to receive(:system).with('/usr/local/bin/optipng', '-o7', '-strip all', '/path/to/file.png')
@@ -62,6 +72,14 @@ describe ImageOptimizer::PNGOptimizer do
62
72
  subject
63
73
  end
64
74
  end
75
+
76
+ context 'with ignore parameter' do
77
+ let(:options) { { :ignore => :optipng } }
78
+ it 'does not optimize the png' do
79
+ expect(png_optimizer).not_to receive(:system)
80
+ subject
81
+ end
82
+ end
65
83
  end
66
84
 
67
85
 
@@ -3,7 +3,8 @@ require 'spec_helper'
3
3
  describe ImageOptimizer::PNGQuantOptimizer do
4
4
  describe '#optimize' do
5
5
  let(:options) { {} }
6
- let(:pngquant_optimizer) { ImageOptimizer::PNGQuantOptimizer.new('/path/to/file.png', options) }
6
+ let(:path) { '/path/to/file.png' }
7
+ let(:pngquant_optimizer) { ImageOptimizer::PNGQuantOptimizer.new(path, options) }
7
8
  after { ImageOptimizer::PNGQuantOptimizer.instance_variable_set(:@bin, nil) }
8
9
  subject { pngquant_optimizer.optimize }
9
10
 
@@ -13,8 +14,8 @@ describe ImageOptimizer::PNGQuantOptimizer do
13
14
  end
14
15
 
15
16
  it 'optimizes the png' do
16
- optimizer_options = %w[--skip-if-larger --speed\ 1 --force --verbose --ext\ .png --quality\ 100 /path/to/file.png]
17
- expect(pngquant_optimizer).to receive(:system).with('/usr/local/bin/pngquant', *optimizer_options)
17
+ expected_cmd = %w[/usr/local/bin/pngquant --skip-if-larger --speed=1 --force --verbose --ext=.png --quality=100 /path/to/file.png]
18
+ expect(pngquant_optimizer).to receive(:system).with(*expected_cmd)
18
19
  subject
19
20
  end
20
21
 
@@ -28,18 +29,46 @@ describe ImageOptimizer::PNGQuantOptimizer do
28
29
  end
29
30
 
30
31
  it 'should optimize using the given path' do
31
- optimizer_options = %w[--skip-if-larger --speed\ 1 --force --verbose --ext\ .png --quality\ 100 /path/to/file.png]
32
- expect(pngquant_optimizer).to receive(:system).with(image_pngquant_bin_path, *optimizer_options)
32
+ expected_cmd = %w[--skip-if-larger --speed=1 --force --verbose --ext=.png --quality=100 /path/to/file.png]
33
+ expect(pngquant_optimizer).to receive(:system).with(image_pngquant_bin_path, *expected_cmd)
33
34
  subject
34
35
  end
35
36
  end
36
37
 
37
38
  context 'with quality parameter' do
38
- let(:options) { { :quality => 100 } }
39
+ let(:options) { { :quality => 99 } }
39
40
 
40
41
  it 'optimizes the png with the quality' do
41
- optimizer_options = %w[--skip-if-larger --speed\ 1 --force --verbose --ext\ .png --quality\ 100 /path/to/file.png]
42
- expect(pngquant_optimizer).to receive(:system).with('/usr/local/bin/pngquant', *optimizer_options)
42
+ expected_cmd = %w[/usr/local/bin/pngquant --skip-if-larger --speed=1 --force --verbose --ext=.png --quality=99 /path/to/file.png]
43
+ expect(pngquant_optimizer).to receive(:system).with(*expected_cmd)
44
+ subject
45
+ end
46
+ end
47
+
48
+ context 'with quiet parameter' do
49
+ let(:options) { { :quiet => true } }
50
+
51
+ it 'optimizes the png with the quality' do
52
+ expected_cmd = %w[/usr/local/bin/pngquant --skip-if-larger --speed=1 --force --ext=.png --quality=100 /path/to/file.png]
53
+ expect(pngquant_optimizer).to receive(:system).with(*expected_cmd)
54
+ subject
55
+ end
56
+ end
57
+
58
+ context 'with ignore parameter' do
59
+ let(:options) { { :ignore => :pngquant } }
60
+ it 'does not optimize the png' do
61
+ expect(pngquant_optimizer).not_to receive(:system)
62
+ subject
63
+ end
64
+ end
65
+
66
+ context 'with space in file name' do
67
+ let(:path) { '/path/to/file 2.png' }
68
+
69
+ it do
70
+ expected_cmd = %w[/usr/local/bin/pngquant --skip-if-larger --speed=1 --force --verbose --ext=.png --quality=100]
71
+ expect(pngquant_optimizer).to receive(:system).with(*expected_cmd, path)
43
72
  subject
44
73
  end
45
74
  end
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,36 +1,40 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: image_optimizer
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.7.0
4
+ version: 1.9.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Julian Tescher
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain:
11
11
  - |
12
12
  -----BEGIN CERTIFICATE-----
13
- MIIDdDCCAlygAwIBAgIBATANBgkqhkiG9w0BAQUFADBAMRIwEAYDVQQDDAlqYXRl
14
- c2NoZXIxFTATBgoJkiaJk/IsZAEZFgVnbWFpbDETMBEGCgmSJomT8ixkARkWA2Nv
15
- bTAeFw0xNjA5MjYxNzU4NTRaFw0xNzA5MjYxNzU4NTRaMEAxEjAQBgNVBAMMCWph
16
- dGVzY2hlcjEVMBMGCgmSJomT8ixkARkWBWdtYWlsMRMwEQYKCZImiZPyLGQBGRYD
17
- Y29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA7ptCQvN739Rjos4e
18
- G2Y8uGCQxpBoXozU36PXLtR5ws7aly1QV0zRc1cy7nKnOSnXn7dEfbLGZS6/87pM
19
- rDFFszHsn/dizlXe3wejHePyG1EsYnIezISP9YSDcm7qpysrUAa2fKPqqZ6DNbIP
20
- 6wRF9Cun4hvmQPDrs0zKU6p43XHnJUg7YBYCOVACa7eFD1EOya+599hFMhnWChvT
21
- rKkVc/JRvmKYLIkB6Y6N3TFrVi9x0Qpo4fjG5rQ9xxNZhpFIOMJ0VJbuRSIMlLwr
22
- Ryd/QG0BcvkSHph/ZDlgfZ1V/lzWWq+mZOt/U+t6cVITSET5XDzHkeZ0BodGyAMr
23
- lZpggQIDAQABo3kwdzAJBgNVHRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNVHQ4EFgQU
24
- QLcGxzEu2F2XI+3tIWSu8KqAFrkwHgYDVR0RBBcwFYETamF0ZXNjaGVyQGdtYWls
25
- LmNvbTAeBgNVHRIEFzAVgRNqYXRlc2NoZXJAZ21haWwuY29tMA0GCSqGSIb3DQEB
26
- BQUAA4IBAQCh9hDqN3lZw0PLVkXVcnwnl3KAjJfwCwk1okeuJ+IeQSfRLPp2ECLn
27
- j87oXZPcBukPB0/zTHcF/eBPIGvOedqVhp9SEar51dXLdiCe+deXx/bI3YMRdTGH
28
- 6NtqR6hWjm+hzBthxDsKhmQRczJ+5FNzAoW+pzf7ouKGfeFiFPwvAMolzsi2T+O/
29
- AmsZcBYVI8HbrnuoQI30XfdhNoRrKhoMyzAyVdWX9xQW56TWUO+o8iXBKjOxX2C5
30
- 8lVFrLvGNGPCLQmEf498hBYT99EVYiuiI0F7YlTmBdzL1uwTMk5le/b0NguYdSJ7
31
- qKlUP9usSwMVc+qmaOg1EYfPGYvt63qS
13
+ MIIENDCCApygAwIBAgIBATANBgkqhkiG9w0BAQsFADAiMSAwHgYDVQQDDBdqdWxp
14
+ YW4vREM9dGVzY2hlci9EQz1tZTAeFw0yMjAxMTAxNTMyMzFaFw0yMzAxMTAxNTMy
15
+ MzFaMCIxIDAeBgNVBAMMF2p1bGlhbi9EQz10ZXNjaGVyL0RDPW1lMIIBojANBgkq
16
+ hkiG9w0BAQEFAAOCAY8AMIIBigKCAYEA2NIqnCAvdqMziQRxhBrjOOEy/bpjVakN
17
+ 4SY7DxGzx2C7nSTmIS8KDNVJMJJu+1SjsrE7zZR4YGXsn5EWC9byjUlEbIr+bcYX
18
+ Kqez1qWEAF5bAHCi2aIQV7DL6EjhuuhHszK921VK52m9/kfLzCGojM+dQGhxsS9R
19
+ uK8NMZvOnBprEblr58iD9b7wp7Nw8zl3HeYi7QEhFL9wQcIQTtACiRxim+0N0XXK
20
+ W9Fwk3gB8UaiWEwNdaZJ360+YubO1Q+9/6XnItDl8rvyyzkkPk8qTbqBxo+9qExk
21
+ dQkaJM2a4u0KBbdpMzSH05lcaHsitvaj9v3OXgXcX1JCJ8PfvjMkRVOj6p490Wv5
22
+ jgtJ8WsaJuJ0Z8AZK5LdD0DJPEH2ne54IKULsg0+G+kc7TGApxkQ9guJ3DYFMCww
23
+ NvTZhT5wdoKYi2EmWIMick8NiVWU8JHolHAjWHAMnnzLu1MeQEQdNIcU7+q4Vsti
24
+ qNQDKfsF14EBoUrdVQw7GhM0YsDflP9vAgMBAAGjdTBzMAkGA1UdEwQCMAAwCwYD
25
+ VR0PBAQDAgSwMB0GA1UdDgQWBBSjYnqpiURz0CR8srSqAJbZhlIx3TAcBgNVHREE
26
+ FTATgRFqdWxpYW5AdGVzY2hlci5tZTAcBgNVHRIEFTATgRFqdWxpYW5AdGVzY2hl
27
+ ci5tZTANBgkqhkiG9w0BAQsFAAOCAYEANc6i+QIto8zFj+y2rHpz197Dg8nYtHnr
28
+ LjEeNCm3JPyTZNDXbs/W+GArMiukQ3GkIdDgx+e+Q3h8FMdO5L5ObRNeGmBDyEyG
29
+ M8ubpHxacemSZkfmVyNkDBWOFYQYMJaC2TgmnUnRe5IAuOuWRgvC4kvb1blTsqbP
30
+ jNDn4Z2FofVroUQsPD8lVw27cUsoA2SmFnS+8ThqVsn/CIEoLkIkOWElAaKqa4z9
31
+ xU/u+8Mi2o2ndq1k5/WvYn2AAEm+DjJ5jPkSeepYdlNe2ogEeGcWEFmyDJfr0vK3
32
+ VokEpOHGpz1/CiJnJ08xTGCLOZ13dtclzhILRsP7tTh8+c9XB4SkmuX37dazBUu0
33
+ pdTkZA65Y5/zNsW4BLHc8h6TyXqpmv6giWKOm6gHdWVrhuVM9GGR4gIJyI5UFISg
34
+ HgI9vJ9QNRAdHzkP6ToW7r3j6nuszBAcnvJHU+MnONH9mGe7EWado06XjFAgrcA/
35
+ 47H47vSiiTIz55uAos1d8U8682yHT1SQ
32
36
  -----END CERTIFICATE-----
33
- date: 2016-11-15 00:00:00.000000000 Z
37
+ date: 2022-01-10 00:00:00.000000000 Z
34
38
  dependencies:
35
39
  - !ruby/object:Gem::Dependency
36
40
  name: rspec
@@ -111,6 +115,7 @@ extra_rdoc_files: []
111
115
  files:
112
116
  - ".gitignore"
113
117
  - ".travis.yml"
118
+ - CHANGELOG.md
114
119
  - Gemfile
115
120
  - LICENSE.txt
116
121
  - README.md
@@ -128,6 +133,10 @@ files:
128
133
  - checksum/image_optimizer-1.6.0.gem.sha512
129
134
  - checksum/image_optimizer-1.6.1.gem.sha512
130
135
  - checksum/image_optimizer-1.7.0.gem.sha512
136
+ - checksum/image_optimizer-1.7.1.gem.sha512
137
+ - checksum/image_optimizer-1.7.2.gem.sha512
138
+ - checksum/image_optimizer-1.8.0.gem.sha512
139
+ - checksum/image_optimizer-1.9.0.gem.sha512
131
140
  - image_optimizer.gemspec
132
141
  - lib/image_optimizer.rb
133
142
  - lib/image_optimizer/gif_optimizer.rb
@@ -149,7 +158,7 @@ homepage: https://github.com/jtescher/image_optimizer
149
158
  licenses:
150
159
  - MIT
151
160
  metadata: {}
152
- post_install_message:
161
+ post_install_message:
153
162
  rdoc_options: []
154
163
  require_paths:
155
164
  - lib
@@ -164,9 +173,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
164
173
  - !ruby/object:Gem::Version
165
174
  version: '0'
166
175
  requirements: []
167
- rubyforge_project:
168
- rubygems_version: 2.5.1
169
- signing_key:
176
+ rubygems_version: 3.2.3
177
+ signing_key:
170
178
  specification_version: 4
171
179
  summary: Simply optimize images via jpegoptim or OptiPNG or Gifsicle
172
180
  test_files:
metadata.gz.sig CHANGED
Binary file