mini_magick 4.11.0 → 5.3.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 +4 -4
- data/README.md +558 -0
- data/lib/mini_magick/configuration.rb +39 -128
- data/lib/mini_magick/image/info.rb +9 -60
- data/lib/mini_magick/image.rb +49 -74
- data/lib/mini_magick/shell.rb +22 -50
- data/lib/mini_magick/tool.rb +44 -77
- data/lib/mini_magick/utilities.rb +4 -6
- data/lib/mini_magick/version.rb +2 -2
- data/lib/mini_magick.rb +18 -42
- metadata +18 -75
- data/lib/mini_gmagick.rb +0 -3
- data/lib/mini_magick/tool/animate.rb +0 -14
- data/lib/mini_magick/tool/compare.rb +0 -14
- data/lib/mini_magick/tool/composite.rb +0 -14
- data/lib/mini_magick/tool/conjure.rb +0 -14
- data/lib/mini_magick/tool/convert.rb +0 -14
- data/lib/mini_magick/tool/display.rb +0 -14
- data/lib/mini_magick/tool/identify.rb +0 -14
- data/lib/mini_magick/tool/import.rb +0 -14
- data/lib/mini_magick/tool/magick.rb +0 -14
- data/lib/mini_magick/tool/mogrify.rb +0 -14
- data/lib/mini_magick/tool/mogrify_restricted.rb +0 -15
- data/lib/mini_magick/tool/montage.rb +0 -14
- data/lib/mini_magick/tool/stream.rb +0 -14
data/lib/mini_magick/shell.rb
CHANGED
@@ -1,5 +1,4 @@
|
|
1
|
-
require "
|
2
|
-
require "benchmark"
|
1
|
+
require "open3"
|
3
2
|
|
4
3
|
module MiniMagick
|
5
4
|
##
|
@@ -10,69 +9,42 @@ module MiniMagick
|
|
10
9
|
#
|
11
10
|
class Shell
|
12
11
|
|
13
|
-
def run(command,
|
14
|
-
stdout, stderr, status = execute(command,
|
12
|
+
def run(command, errors: MiniMagick.errors, warnings: MiniMagick.warnings, **options)
|
13
|
+
stdout, stderr, status = execute(command, **options)
|
15
14
|
|
16
|
-
if status != 0
|
17
|
-
|
15
|
+
if status != 0
|
16
|
+
if stderr.include?("time limit exceeded")
|
17
|
+
fail MiniMagick::TimeoutError, "`#{command.join(" ")}` has timed out"
|
18
|
+
elsif errors
|
19
|
+
fail MiniMagick::Error, "`#{command.join(" ")}` failed with status: #{status.inspect} and error:\n#{stderr}"
|
20
|
+
end
|
18
21
|
end
|
19
22
|
|
20
|
-
$stderr.print(stderr)
|
23
|
+
$stderr.print(stderr) if warnings
|
21
24
|
|
22
25
|
[stdout, stderr, status]
|
23
26
|
end
|
24
27
|
|
25
|
-
def execute(command,
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
28
|
+
def execute(command, stdin: "", timeout: MiniMagick.timeout)
|
29
|
+
env = MiniMagick.restricted_env ? ENV.to_h.slice("HOME", "PATH", "LANG") : {} # Using #to_h for Ruby 2.5 compatibility.
|
30
|
+
env.merge!(MiniMagick.cli_env)
|
31
|
+
env["MAGICK_TIME_LIMIT"] = timeout.to_s if timeout
|
32
|
+
|
33
|
+
stdout, stderr, status = log(command.join(" ")) do
|
34
|
+
Open3.capture3(env, *command, stdin_data: stdin, unsetenv_others: MiniMagick.restricted_env)
|
35
|
+
end
|
30
36
|
|
31
|
-
[stdout, stderr, status
|
37
|
+
[stdout, stderr, status&.exitstatus]
|
32
38
|
rescue Errno::ENOENT, IOError
|
33
39
|
["", "executable not found: \"#{command.first}\"", 127]
|
34
40
|
end
|
35
41
|
|
36
42
|
private
|
37
43
|
|
38
|
-
def execute_open3(command, options = {})
|
39
|
-
require "open3"
|
40
|
-
|
41
|
-
# We would ideally use Open3.capture3, but it wouldn't allow us to
|
42
|
-
# terminate the command after timing out.
|
43
|
-
Open3.popen3(*command) do |in_w, out_r, err_r, thread|
|
44
|
-
[in_w, out_r, err_r].each(&:binmode)
|
45
|
-
stdout_reader = Thread.new { out_r.read }
|
46
|
-
stderr_reader = Thread.new { err_r.read }
|
47
|
-
begin
|
48
|
-
in_w.write options[:stdin].to_s
|
49
|
-
rescue Errno::EPIPE
|
50
|
-
end
|
51
|
-
in_w.close
|
52
|
-
|
53
|
-
begin
|
54
|
-
Timeout.timeout(MiniMagick.timeout) { thread.join }
|
55
|
-
rescue Timeout::Error
|
56
|
-
Process.kill("TERM", thread.pid) rescue nil
|
57
|
-
Process.waitpid(thread.pid) rescue nil
|
58
|
-
raise Timeout::Error, "MiniMagick command timed out: #{command}"
|
59
|
-
end
|
60
|
-
|
61
|
-
[stdout_reader.value, stderr_reader.value, thread.value]
|
62
|
-
end
|
63
|
-
end
|
64
|
-
|
65
|
-
def execute_posix_spawn(command, options = {})
|
66
|
-
require "posix-spawn"
|
67
|
-
child = POSIX::Spawn::Child.new(*command, input: options[:stdin].to_s, timeout: MiniMagick.timeout)
|
68
|
-
[child.out, child.err, child.status]
|
69
|
-
rescue POSIX::Spawn::TimeoutExceeded
|
70
|
-
raise Timeout::Error, "MiniMagick command timed out: #{command}"
|
71
|
-
end
|
72
|
-
|
73
44
|
def log(command, &block)
|
74
|
-
|
75
|
-
|
45
|
+
time_start = Process.clock_gettime(Process::CLOCK_MONOTONIC)
|
46
|
+
value = block.call
|
47
|
+
duration = Process.clock_gettime(Process::CLOCK_MONOTONIC) - time_start
|
76
48
|
MiniMagick.logger.debug "[%.2fs] %s" % [duration, command]
|
77
49
|
value
|
78
50
|
end
|
data/lib/mini_magick/tool.rb
CHANGED
@@ -2,15 +2,13 @@ require "mini_magick/shell"
|
|
2
2
|
|
3
3
|
module MiniMagick
|
4
4
|
##
|
5
|
-
#
|
6
|
-
#
|
7
|
-
# this class if you want to be closer to the metal and execute ImageMagick
|
8
|
-
# commands directly, but still with a nice Ruby interface.
|
5
|
+
# Class that wraps command-line tools directly, as opposed MiniMagick::Image
|
6
|
+
# which is more high-level.
|
9
7
|
#
|
10
8
|
# @example
|
11
|
-
# MiniMagick
|
12
|
-
#
|
13
|
-
#
|
9
|
+
# MiniMagick.mogrify do |mogrify|
|
10
|
+
# mogrify.resize "500x500"
|
11
|
+
# mogrify << "path/to/image.jpg"
|
14
12
|
# end
|
15
13
|
#
|
16
14
|
class Tool
|
@@ -23,15 +21,14 @@ module MiniMagick
|
|
23
21
|
# executes the command in the end.
|
24
22
|
#
|
25
23
|
# @example
|
26
|
-
#
|
27
|
-
# puts version
|
24
|
+
# puts MiniMagick.identify(&:version)
|
28
25
|
#
|
29
26
|
# @return [MiniMagick::Tool, String] If no block is given, returns an
|
30
27
|
# instance of the tool, if block is given, returns the output of the
|
31
28
|
# command.
|
32
29
|
#
|
33
|
-
def self.new(
|
34
|
-
instance = super
|
30
|
+
def self.new(name, **options)
|
31
|
+
instance = super
|
35
32
|
|
36
33
|
if block_given?
|
37
34
|
yield instance
|
@@ -46,31 +43,31 @@ module MiniMagick
|
|
46
43
|
|
47
44
|
# @param name [String]
|
48
45
|
# @param options [Hash]
|
49
|
-
# @option options [Boolean] :
|
46
|
+
# @option options [Boolean] :errors Whether to raise errors on non-zero
|
50
47
|
# exit codes.
|
48
|
+
# @option options [Boolean] :warnings Whether to print warnings to stderrr.
|
49
|
+
# @option options [String] :stdin Content to send to standard input stream.
|
51
50
|
# @example
|
52
|
-
# MiniMagick
|
51
|
+
# MiniMagick.identify(errors: false) do |identify|
|
53
52
|
# identify.help # returns exit status 1, which would otherwise throw an error
|
54
53
|
# end
|
55
|
-
def initialize(name, options
|
56
|
-
|
57
|
-
|
58
|
-
@
|
59
|
-
@args = []
|
60
|
-
@whiny = options.is_a?(Hash) ? options.fetch(:whiny, MiniMagick.whiny) : options
|
54
|
+
def initialize(name, **options)
|
55
|
+
@name = name
|
56
|
+
@args = []
|
57
|
+
@options = options
|
61
58
|
end
|
62
59
|
|
63
60
|
##
|
64
61
|
# Executes the command that has been built up.
|
65
62
|
#
|
66
63
|
# @example
|
67
|
-
# mogrify = MiniMagick
|
64
|
+
# mogrify = MiniMagick.mogrify
|
68
65
|
# mogrify.resize("500x500")
|
69
66
|
# mogrify << "path/to/image.jpg"
|
70
67
|
# mogrify.call # executes `mogrify -resize 500x500 path/to/image.jpg`
|
71
68
|
#
|
72
69
|
# @example
|
73
|
-
# mogrify = MiniMagick
|
70
|
+
# mogrify = MiniMagick.mogrify
|
74
71
|
# # build the command
|
75
72
|
# mogrify.call do |stdout, stderr, status|
|
76
73
|
# # ...
|
@@ -80,16 +77,12 @@ module MiniMagick
|
|
80
77
|
#
|
81
78
|
# @return [String] Returns the output of the command
|
82
79
|
#
|
83
|
-
def call(
|
84
|
-
options =
|
85
|
-
|
86
|
-
whiny = args.fetch(0, @whiny)
|
87
|
-
|
88
|
-
options[:whiny] = whiny
|
89
|
-
options[:stderr] = false if block_given?
|
80
|
+
def call(**options)
|
81
|
+
options = @options.merge(options)
|
82
|
+
options[:warnings] = false if block_given?
|
90
83
|
|
91
84
|
shell = MiniMagick::Shell.new
|
92
|
-
stdout, stderr, status = shell.run(command, options)
|
85
|
+
stdout, stderr, status = shell.run(command, **options)
|
93
86
|
yield stdout, stderr, status if block_given?
|
94
87
|
|
95
88
|
stdout.chomp("\n")
|
@@ -101,7 +94,7 @@ module MiniMagick
|
|
101
94
|
# @return [Array<String>]
|
102
95
|
#
|
103
96
|
# @example
|
104
|
-
# mogrify = MiniMagick
|
97
|
+
# mogrify = MiniMagick.mogrify
|
105
98
|
# mogrify.resize "500x500"
|
106
99
|
# mogrify.contrast
|
107
100
|
# mogrify.command #=> ["mogrify", "-resize", "500x500", "-contrast"]
|
@@ -112,31 +105,26 @@ module MiniMagick
|
|
112
105
|
|
113
106
|
##
|
114
107
|
# The executable used for this tool. Respects
|
115
|
-
# {MiniMagick::Configuration#
|
116
|
-
# and {MiniMagick::Configuration#cli_prefix}.
|
108
|
+
# {MiniMagick::Configuration#cli_prefix}.
|
117
109
|
#
|
118
110
|
# @return [Array<String>]
|
119
111
|
#
|
120
112
|
# @example
|
121
|
-
#
|
122
|
-
# identify
|
123
|
-
# identify.executable #=> ["gm", "identify"]
|
113
|
+
# identify = MiniMagick.identify
|
114
|
+
# identify.executable #=> ["magick", "identify"]
|
124
115
|
#
|
125
116
|
# @example
|
126
117
|
# MiniMagick.configure do |config|
|
127
|
-
# config.cli = :graphicsmagick
|
128
118
|
# config.cli_prefix = ['firejail', '--force']
|
129
119
|
# end
|
130
|
-
# identify = MiniMagick
|
131
|
-
# identify.executable #=> ["firejail", "--force", "
|
120
|
+
# identify = MiniMagick.identify
|
121
|
+
# identify.executable #=> ["firejail", "--force", "magick", "identify"]
|
132
122
|
#
|
133
123
|
def executable
|
134
|
-
exe =
|
135
|
-
exe
|
136
|
-
exe
|
137
|
-
exe
|
138
|
-
Array(MiniMagick.cli_prefix).reverse_each { |p| exe.unshift p } if MiniMagick.cli_prefix
|
139
|
-
exe
|
124
|
+
exe = Array(MiniMagick.cli_prefix)
|
125
|
+
exe << "magick" if MiniMagick.imagemagick7? && name != "magick"
|
126
|
+
exe << "gm" if MiniMagick.graphicsmagick
|
127
|
+
exe << name
|
140
128
|
end
|
141
129
|
|
142
130
|
##
|
@@ -163,7 +151,7 @@ module MiniMagick
|
|
163
151
|
# Changes the last operator to its "plus" form.
|
164
152
|
#
|
165
153
|
# @example
|
166
|
-
# MiniMagick
|
154
|
+
# MiniMagick.mogrify do |mogrify|
|
167
155
|
# mogrify.antialias.+
|
168
156
|
# mogrify.distort.+("Perspective", "0,0,4,5 89,0,45,46")
|
169
157
|
# end
|
@@ -181,7 +169,7 @@ module MiniMagick
|
|
181
169
|
# Create an ImageMagick stack in the command (surround.
|
182
170
|
#
|
183
171
|
# @example
|
184
|
-
# MiniMagick
|
172
|
+
# MiniMagick.convert do |convert|
|
185
173
|
# convert << "wand.gif"
|
186
174
|
# convert.stack do |stack|
|
187
175
|
# stack << "wand.gif"
|
@@ -208,7 +196,7 @@ module MiniMagick
|
|
208
196
|
# Adds ImageMagick's pseudo-filename `-` for standard input.
|
209
197
|
#
|
210
198
|
# @example
|
211
|
-
# identify = MiniMagick
|
199
|
+
# identify = MiniMagick.identify
|
212
200
|
# identify.stdin
|
213
201
|
# identify.call(stdin: image_content)
|
214
202
|
# # executes `identify -` with the given standard input
|
@@ -221,7 +209,7 @@ module MiniMagick
|
|
221
209
|
# Adds ImageMagick's pseudo-filename `-` for standard output.
|
222
210
|
#
|
223
211
|
# @example
|
224
|
-
# content = MiniMagick
|
212
|
+
# content = MiniMagick.convert do |convert|
|
225
213
|
# convert << "input.jpg"
|
226
214
|
# convert.auto_orient
|
227
215
|
# convert.stdout
|
@@ -241,7 +229,7 @@ module MiniMagick
|
|
241
229
|
# mogrify.command.join(" ") #=> "mogrify canvas:khaki"
|
242
230
|
#
|
243
231
|
CREATION_OPERATORS.each do |operator|
|
244
|
-
define_method(operator.
|
232
|
+
define_method(operator.tr('-', '_')) do |value = nil|
|
245
233
|
self << "#{operator}:#{value}"
|
246
234
|
self
|
247
235
|
end
|
@@ -273,35 +261,14 @@ module MiniMagick
|
|
273
261
|
self
|
274
262
|
end
|
275
263
|
|
276
|
-
|
277
|
-
|
278
|
-
|
279
|
-
|
280
|
-
|
281
|
-
|
282
|
-
cli_options = help_page.scan(/^\s+-[a-z\-]+/).map(&:strip)
|
283
|
-
if tool.name == "mogrify" && MiniMagick.graphicsmagick?
|
284
|
-
# These options were undocumented before 2015-06-14 (see gm bug 302)
|
285
|
-
cli_options |= %w[-box -convolve -gravity -linewidth -mattecolor -render -shave]
|
264
|
+
# deprecated tool subclasses
|
265
|
+
%w[animate compare composite conjure convert display identify import magick mogrify montage stream].each do |tool|
|
266
|
+
const_set(tool.capitalize, Class.new(self) {
|
267
|
+
define_method(:initialize) do |*args|
|
268
|
+
super(tool, *args)
|
286
269
|
end
|
287
|
-
|
288
|
-
|
289
|
-
)
|
270
|
+
})
|
271
|
+
deprecate_constant(tool.capitalize)
|
290
272
|
end
|
291
|
-
|
292
273
|
end
|
293
274
|
end
|
294
|
-
|
295
|
-
require "mini_magick/tool/animate"
|
296
|
-
require "mini_magick/tool/compare"
|
297
|
-
require "mini_magick/tool/composite"
|
298
|
-
require "mini_magick/tool/conjure"
|
299
|
-
require "mini_magick/tool/convert"
|
300
|
-
require "mini_magick/tool/display"
|
301
|
-
require "mini_magick/tool/identify"
|
302
|
-
require "mini_magick/tool/import"
|
303
|
-
require "mini_magick/tool/magick"
|
304
|
-
require "mini_magick/tool/mogrify"
|
305
|
-
require "mini_magick/tool/mogrify_restricted"
|
306
|
-
require "mini_magick/tool/montage"
|
307
|
-
require "mini_magick/tool/stream"
|
@@ -24,12 +24,10 @@ module MiniMagick
|
|
24
24
|
end
|
25
25
|
|
26
26
|
def tempfile(extension)
|
27
|
-
Tempfile.new(["mini_magick", extension]
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
end
|
27
|
+
tempfile = Tempfile.new(["mini_magick", extension], MiniMagick.tmpdir, binmode: true)
|
28
|
+
yield tempfile if block_given?
|
29
|
+
tempfile.close
|
30
|
+
tempfile
|
32
31
|
end
|
33
|
-
|
34
32
|
end
|
35
33
|
end
|
data/lib/mini_magick/version.rb
CHANGED
data/lib/mini_magick.rb
CHANGED
@@ -1,64 +1,40 @@
|
|
1
1
|
require 'mini_magick/version'
|
2
2
|
require 'mini_magick/configuration'
|
3
|
+
require 'mini_magick/utilities'
|
4
|
+
require 'mini_magick/tool'
|
5
|
+
require 'mini_magick/image'
|
3
6
|
|
4
7
|
module MiniMagick
|
5
8
|
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
# You might want to execute only certain blocks of processing with a
|
10
|
-
# different CLI, because for example that CLI does that particular thing
|
11
|
-
# faster. After the block CLI resets to its previous value.
|
12
|
-
#
|
13
|
-
# @example
|
14
|
-
# MiniMagick.with_cli :graphicsmagick do
|
15
|
-
# # operations that are better done with GraphicsMagick
|
16
|
-
# end
|
17
|
-
def self.with_cli(cli)
|
18
|
-
old_cli = self.cli
|
19
|
-
self.cli = cli
|
20
|
-
yield
|
21
|
-
ensure
|
22
|
-
self.cli = old_cli
|
23
|
-
end
|
9
|
+
Error = Class.new(RuntimeError)
|
10
|
+
Invalid = Class.new(StandardError)
|
11
|
+
TimeoutError = Class.new(Error)
|
24
12
|
|
25
|
-
|
26
|
-
# Checks whether the CLI used is ImageMagick.
|
27
|
-
#
|
28
|
-
# @return [Boolean]
|
29
|
-
def self.imagemagick?
|
30
|
-
cli == :imagemagick
|
31
|
-
end
|
13
|
+
extend MiniMagick::Configuration
|
32
14
|
|
33
15
|
##
|
34
|
-
# Checks whether
|
16
|
+
# Checks whether ImageMagick 7 is installed.
|
35
17
|
#
|
36
18
|
# @return [Boolean]
|
37
19
|
def self.imagemagick7?
|
38
|
-
|
20
|
+
return false if graphicsmagick
|
21
|
+
return @imagemagick7 if defined?(@imagemagick7)
|
22
|
+
@imagemagick7 = !!MiniMagick::Utilities.which("magick")
|
39
23
|
end
|
40
24
|
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
cli == :graphicsmagick
|
25
|
+
%w[animate compare composite conjure convert display identify import mogrify montage stream].each do |tool|
|
26
|
+
define_singleton_method(tool) do |**options, &block|
|
27
|
+
name = imagemagick7? && tool == "convert" ? "magick" : tool
|
28
|
+
MiniMagick::Tool.new(name, **options, &block)
|
29
|
+
end
|
47
30
|
end
|
48
31
|
|
49
32
|
##
|
50
|
-
# Returns ImageMagick
|
33
|
+
# Returns ImageMagick version.
|
51
34
|
#
|
52
35
|
# @return [String]
|
53
36
|
def self.cli_version
|
54
|
-
output = MiniMagick
|
37
|
+
output = MiniMagick.identify(&:version)
|
55
38
|
output[/\d+\.\d+\.\d+(-\d+)?/]
|
56
39
|
end
|
57
|
-
|
58
|
-
class Error < RuntimeError; end
|
59
|
-
class Invalid < StandardError; end
|
60
|
-
|
61
40
|
end
|
62
|
-
|
63
|
-
require 'mini_magick/tool'
|
64
|
-
require 'mini_magick/image'
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mini_magick
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 5.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Corey Johnson
|
@@ -10,61 +10,18 @@ authors:
|
|
10
10
|
- James Miller
|
11
11
|
- Thiago Fernandes Massa
|
12
12
|
- Janko Marohnić
|
13
|
-
autorequire:
|
14
13
|
bindir: bin
|
15
14
|
cert_chain: []
|
16
|
-
date:
|
15
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
17
16
|
dependencies:
|
18
17
|
- !ruby/object:Gem::Dependency
|
19
|
-
name:
|
20
|
-
requirement: !ruby/object:Gem::Requirement
|
21
|
-
requirements:
|
22
|
-
- - ">="
|
23
|
-
- !ruby/object:Gem::Version
|
24
|
-
version: '0'
|
25
|
-
type: :development
|
26
|
-
prerelease: false
|
27
|
-
version_requirements: !ruby/object:Gem::Requirement
|
28
|
-
requirements:
|
29
|
-
- - ">="
|
30
|
-
- !ruby/object:Gem::Version
|
31
|
-
version: '0'
|
32
|
-
- !ruby/object:Gem::Dependency
|
33
|
-
name: rspec
|
34
|
-
requirement: !ruby/object:Gem::Requirement
|
35
|
-
requirements:
|
36
|
-
- - "~>"
|
37
|
-
- !ruby/object:Gem::Version
|
38
|
-
version: 3.5.0
|
39
|
-
type: :development
|
40
|
-
prerelease: false
|
41
|
-
version_requirements: !ruby/object:Gem::Requirement
|
42
|
-
requirements:
|
43
|
-
- - "~>"
|
44
|
-
- !ruby/object:Gem::Version
|
45
|
-
version: 3.5.0
|
46
|
-
- !ruby/object:Gem::Dependency
|
47
|
-
name: guard
|
48
|
-
requirement: !ruby/object:Gem::Requirement
|
49
|
-
requirements:
|
50
|
-
- - ">="
|
51
|
-
- !ruby/object:Gem::Version
|
52
|
-
version: '0'
|
53
|
-
type: :development
|
54
|
-
prerelease: false
|
55
|
-
version_requirements: !ruby/object:Gem::Requirement
|
56
|
-
requirements:
|
57
|
-
- - ">="
|
58
|
-
- !ruby/object:Gem::Version
|
59
|
-
version: '0'
|
60
|
-
- !ruby/object:Gem::Dependency
|
61
|
-
name: guard-rspec
|
18
|
+
name: logger
|
62
19
|
requirement: !ruby/object:Gem::Requirement
|
63
20
|
requirements:
|
64
21
|
- - ">="
|
65
22
|
- !ruby/object:Gem::Version
|
66
23
|
version: '0'
|
67
|
-
type: :
|
24
|
+
type: :runtime
|
68
25
|
prerelease: false
|
69
26
|
version_requirements: !ruby/object:Gem::Requirement
|
70
27
|
requirements:
|
@@ -72,7 +29,7 @@ dependencies:
|
|
72
29
|
- !ruby/object:Gem::Version
|
73
30
|
version: '0'
|
74
31
|
- !ruby/object:Gem::Dependency
|
75
|
-
name:
|
32
|
+
name: rake
|
76
33
|
requirement: !ruby/object:Gem::Requirement
|
77
34
|
requirements:
|
78
35
|
- - ">="
|
@@ -86,20 +43,20 @@ dependencies:
|
|
86
43
|
- !ruby/object:Gem::Version
|
87
44
|
version: '0'
|
88
45
|
- !ruby/object:Gem::Dependency
|
89
|
-
name:
|
46
|
+
name: rspec
|
90
47
|
requirement: !ruby/object:Gem::Requirement
|
91
48
|
requirements:
|
92
|
-
- - "
|
49
|
+
- - "~>"
|
93
50
|
- !ruby/object:Gem::Version
|
94
|
-
version: '
|
51
|
+
version: '3.5'
|
95
52
|
type: :development
|
96
53
|
prerelease: false
|
97
54
|
version_requirements: !ruby/object:Gem::Requirement
|
98
55
|
requirements:
|
99
|
-
- - "
|
56
|
+
- - "~>"
|
100
57
|
- !ruby/object:Gem::Version
|
101
|
-
version: '
|
102
|
-
description: Manipulate images with minimal use of memory via ImageMagick
|
58
|
+
version: '3.5'
|
59
|
+
description: Manipulate images with minimal use of memory via ImageMagick
|
103
60
|
email:
|
104
61
|
- probablycorey@gmail.com
|
105
62
|
- hcatlin@gmail.com
|
@@ -112,34 +69,21 @@ extensions: []
|
|
112
69
|
extra_rdoc_files: []
|
113
70
|
files:
|
114
71
|
- MIT-LICENSE
|
72
|
+
- README.md
|
115
73
|
- Rakefile
|
116
|
-
- lib/mini_gmagick.rb
|
117
74
|
- lib/mini_magick.rb
|
118
75
|
- lib/mini_magick/configuration.rb
|
119
76
|
- lib/mini_magick/image.rb
|
120
77
|
- lib/mini_magick/image/info.rb
|
121
78
|
- lib/mini_magick/shell.rb
|
122
79
|
- lib/mini_magick/tool.rb
|
123
|
-
- lib/mini_magick/tool/animate.rb
|
124
|
-
- lib/mini_magick/tool/compare.rb
|
125
|
-
- lib/mini_magick/tool/composite.rb
|
126
|
-
- lib/mini_magick/tool/conjure.rb
|
127
|
-
- lib/mini_magick/tool/convert.rb
|
128
|
-
- lib/mini_magick/tool/display.rb
|
129
|
-
- lib/mini_magick/tool/identify.rb
|
130
|
-
- lib/mini_magick/tool/import.rb
|
131
|
-
- lib/mini_magick/tool/magick.rb
|
132
|
-
- lib/mini_magick/tool/mogrify.rb
|
133
|
-
- lib/mini_magick/tool/mogrify_restricted.rb
|
134
|
-
- lib/mini_magick/tool/montage.rb
|
135
|
-
- lib/mini_magick/tool/stream.rb
|
136
80
|
- lib/mini_magick/utilities.rb
|
137
81
|
- lib/mini_magick/version.rb
|
138
82
|
homepage: https://github.com/minimagick/minimagick
|
139
83
|
licenses:
|
140
84
|
- MIT
|
141
|
-
metadata:
|
142
|
-
|
85
|
+
metadata:
|
86
|
+
changelog_uri: https://github.com/minimagick/minimagick/releases
|
143
87
|
rdoc_options: []
|
144
88
|
require_paths:
|
145
89
|
- lib
|
@@ -147,16 +91,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
147
91
|
requirements:
|
148
92
|
- - ">="
|
149
93
|
- !ruby/object:Gem::Version
|
150
|
-
version: '2.
|
94
|
+
version: '2.5'
|
151
95
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
152
96
|
requirements:
|
153
97
|
- - ">="
|
154
98
|
- !ruby/object:Gem::Version
|
155
99
|
version: '0'
|
156
100
|
requirements:
|
157
|
-
- You must have ImageMagick
|
158
|
-
rubygems_version: 3.
|
159
|
-
signing_key:
|
101
|
+
- You must have ImageMagick installed
|
102
|
+
rubygems_version: 3.6.9
|
160
103
|
specification_version: 4
|
161
|
-
summary: Manipulate images with minimal use of memory via ImageMagick
|
104
|
+
summary: Manipulate images with minimal use of memory via ImageMagick
|
162
105
|
test_files: []
|
data/lib/mini_gmagick.rb
DELETED