mini_magick 5.1.2 → 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 +2 -1
- data/lib/mini_magick/configuration.rb +11 -0
- data/lib/mini_magick/shell.rb +5 -5
- data/lib/mini_magick/tool.rb +6 -7
- data/lib/mini_magick/version.rb +2 -2
- metadata +4 -18
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7d3bab346f7bac143cb8a0818cebb0f743d0fdbf792471ca4c44ba99475f594d
|
4
|
+
data.tar.gz: 90aacc6449f72d4bdc2c9f94657316d376c2bb764aa4aa50472af77ce3ca079b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e7ca5d839383a0787220dddb187cfa138757d68d3b5f82188c5b58704792cb761c4f4369ff9156f18e9723a6b7c0c08492d33528d52a102b103cb0243c4d1e48
|
7
|
+
data.tar.gz: 95772859b64dea5957cd6fbeab71b99ccb46abed4c6bf287d1a2ce51e670953a6a5e34cfc68ef2e49f83f14f21583646258ea97c8efa5fb19c6adce43fa5a767
|
data/README.md
CHANGED
@@ -237,10 +237,11 @@ MiniMagick.configure do |config|
|
|
237
237
|
config.timeout = nil # number of seconds IM commands may take
|
238
238
|
config.errors = true # raise errors non nonzero exit status
|
239
239
|
config.warnings = true # forward warnings to standard error
|
240
|
-
config.
|
240
|
+
config.tmpdir = Dir.tmpdir # alternative directory for tempfiles
|
241
241
|
config.logger = Logger.new($stdout) # where to log IM commands
|
242
242
|
config.cli_prefix = nil # add prefix to all IM commands
|
243
243
|
config.cli_env = {} # environment variables to set for IM commands
|
244
|
+
config.restricted_env = false # when true, block IM commands from accessing system environment variables other than those in cli_env
|
244
245
|
end
|
245
246
|
```
|
246
247
|
|
@@ -32,6 +32,16 @@ module MiniMagick
|
|
32
32
|
#
|
33
33
|
attr_accessor :cli_env
|
34
34
|
|
35
|
+
##
|
36
|
+
# If set to true, Open3 will restrict system calls to access only
|
37
|
+
# environment variables defined in :cli_env, plus HOME, PATH, and LANG
|
38
|
+
# since those are required for such system calls. It will not pass on any
|
39
|
+
# other environment variables from the system.
|
40
|
+
#
|
41
|
+
# @return [Boolean]
|
42
|
+
#
|
43
|
+
attr_accessor :restricted_env
|
44
|
+
|
35
45
|
##
|
36
46
|
# If you don't want commands to take too long, you can set a timeout (in
|
37
47
|
# seconds).
|
@@ -73,6 +83,7 @@ module MiniMagick
|
|
73
83
|
base.logger = Logger.new($stdout).tap { |l| l.level = Logger::INFO }
|
74
84
|
base.warnings = true
|
75
85
|
base.cli_env = {}.freeze
|
86
|
+
base.restricted_env = false
|
76
87
|
base.graphicsmagick = false
|
77
88
|
end
|
78
89
|
|
data/lib/mini_magick/shell.rb
CHANGED
@@ -1,5 +1,4 @@
|
|
1
1
|
require "open3"
|
2
|
-
require "benchmark"
|
3
2
|
|
4
3
|
module MiniMagick
|
5
4
|
##
|
@@ -27,12 +26,12 @@ module MiniMagick
|
|
27
26
|
end
|
28
27
|
|
29
28
|
def execute(command, stdin: "", timeout: MiniMagick.timeout)
|
30
|
-
env = {}
|
29
|
+
env = MiniMagick.restricted_env ? ENV.to_h.slice("HOME", "PATH", "LANG") : {} # Using #to_h for Ruby 2.5 compatibility.
|
31
30
|
env.merge!(MiniMagick.cli_env)
|
32
31
|
env["MAGICK_TIME_LIMIT"] = timeout.to_s if timeout
|
33
32
|
|
34
33
|
stdout, stderr, status = log(command.join(" ")) do
|
35
|
-
Open3.capture3(env, *command, stdin_data: stdin)
|
34
|
+
Open3.capture3(env, *command, stdin_data: stdin, unsetenv_others: MiniMagick.restricted_env)
|
36
35
|
end
|
37
36
|
|
38
37
|
[stdout, stderr, status&.exitstatus]
|
@@ -43,8 +42,9 @@ module MiniMagick
|
|
43
42
|
private
|
44
43
|
|
45
44
|
def log(command, &block)
|
46
|
-
|
47
|
-
|
45
|
+
time_start = Process.clock_gettime(Process::CLOCK_MONOTONIC)
|
46
|
+
value = block.call
|
47
|
+
duration = Process.clock_gettime(Process::CLOCK_MONOTONIC) - time_start
|
48
48
|
MiniMagick.logger.debug "[%.2fs] %s" % [duration, command]
|
49
49
|
value
|
50
50
|
end
|
data/lib/mini_magick/tool.rb
CHANGED
@@ -27,8 +27,8 @@ module MiniMagick
|
|
27
27
|
# instance of the tool, if block is given, returns the output of the
|
28
28
|
# command.
|
29
29
|
#
|
30
|
-
def self.new(
|
31
|
-
instance = super
|
30
|
+
def self.new(name, **options)
|
31
|
+
instance = super
|
32
32
|
|
33
33
|
if block_given?
|
34
34
|
yield instance
|
@@ -121,11 +121,10 @@ module MiniMagick
|
|
121
121
|
# identify.executable #=> ["firejail", "--force", "magick", "identify"]
|
122
122
|
#
|
123
123
|
def executable
|
124
|
-
exe =
|
125
|
-
exe
|
126
|
-
exe
|
127
|
-
exe
|
128
|
-
exe
|
124
|
+
exe = Array(MiniMagick.cli_prefix)
|
125
|
+
exe << "magick" if MiniMagick.imagemagick7? && name != "magick"
|
126
|
+
exe << "gm" if MiniMagick.graphicsmagick
|
127
|
+
exe << name
|
129
128
|
end
|
130
129
|
|
131
130
|
##
|
data/lib/mini_magick/version.rb
CHANGED
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: 5.
|
4
|
+
version: 5.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Corey Johnson
|
@@ -12,7 +12,7 @@ authors:
|
|
12
12
|
- Janko Marohnić
|
13
13
|
bindir: bin
|
14
14
|
cert_chain: []
|
15
|
-
date:
|
15
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
16
16
|
dependencies:
|
17
17
|
- !ruby/object:Gem::Dependency
|
18
18
|
name: logger
|
@@ -28,20 +28,6 @@ dependencies:
|
|
28
28
|
- - ">="
|
29
29
|
- !ruby/object:Gem::Version
|
30
30
|
version: '0'
|
31
|
-
- !ruby/object:Gem::Dependency
|
32
|
-
name: benchmark
|
33
|
-
requirement: !ruby/object:Gem::Requirement
|
34
|
-
requirements:
|
35
|
-
- - ">="
|
36
|
-
- !ruby/object:Gem::Version
|
37
|
-
version: '0'
|
38
|
-
type: :runtime
|
39
|
-
prerelease: false
|
40
|
-
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
requirements:
|
42
|
-
- - ">="
|
43
|
-
- !ruby/object:Gem::Version
|
44
|
-
version: '0'
|
45
31
|
- !ruby/object:Gem::Dependency
|
46
32
|
name: rake
|
47
33
|
requirement: !ruby/object:Gem::Requirement
|
@@ -105,7 +91,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
105
91
|
requirements:
|
106
92
|
- - ">="
|
107
93
|
- !ruby/object:Gem::Version
|
108
|
-
version: '2.
|
94
|
+
version: '2.5'
|
109
95
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
110
96
|
requirements:
|
111
97
|
- - ">="
|
@@ -113,7 +99,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
113
99
|
version: '0'
|
114
100
|
requirements:
|
115
101
|
- You must have ImageMagick installed
|
116
|
-
rubygems_version: 3.6.
|
102
|
+
rubygems_version: 3.6.9
|
117
103
|
specification_version: 4
|
118
104
|
summary: Manipulate images with minimal use of memory via ImageMagick
|
119
105
|
test_files: []
|