hydra-derivatives 3.8.0 → 4.1.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/.circleci/config.yml +15 -20
- data/.rubocop_todo.yml +1 -0
- data/Dockerfile +37 -0
- data/Gemfile +0 -2
- data/README.md +34 -0
- data/VERSION +1 -1
- data/docker-compose.yml +46 -0
- data/hydra-derivatives.gemspec +4 -3
- data/lib/hydra/derivatives/processors/image.rb +83 -10
- data/lib/hydra/derivatives/processors/video/config.rb +1 -1
- data/lib/hydra/derivatives/services/image_service.rb +25 -0
- data/lib/hydra/derivatives.rb +1 -0
- data/test.env +9 -0
- metadata +27 -9
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: d57cbceda9c0d06164a39a9d02c08f87d3595d2c7e4b651c45febd2b1f170304
|
|
4
|
+
data.tar.gz: 335f28d6f50ca793f9209cc0d178333958fe0900885dd60db887ee1d7967da39
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 6f9a349b34da727f960c055363c6c49d82d1606e2f5679bf75c6c5d476493cc966f6257e74c171736e0ecacf28a8d997e20381b098844380d7a6deed24db54e9
|
|
7
|
+
data.tar.gz: 54834ba67208b3345c030b068ebe67c6b831e3541d9632973c91930c5b27a6e9025ca009fca5abec3313692062c0928131bcfbf1f924afd0345f20cbec739767
|
data/.circleci/config.yml
CHANGED
|
@@ -27,8 +27,9 @@ jobs:
|
|
|
27
27
|
- run:
|
|
28
28
|
name: Install dependencies
|
|
29
29
|
command: |
|
|
30
|
+
wget -q -O - https://dl.google.com/linux/linux_signing_key.pub | sudo apt-key add -
|
|
30
31
|
sudo apt-get update
|
|
31
|
-
sudo apt-get install ghostscript libpng-dev imagemagick ffmpeg libreoffice dcraw
|
|
32
|
+
sudo apt-get install ghostscript libpng-dev imagemagick graphicsmagick libvips libvips-dev libvips-tools ffmpeg libreoffice dcraw
|
|
32
33
|
- restore_cache:
|
|
33
34
|
name: Restore Kakadu Cache
|
|
34
35
|
keys:
|
|
@@ -38,7 +39,7 @@ jobs:
|
|
|
38
39
|
command: |
|
|
39
40
|
if [ ! -f ~/downloads/kakadu.zip ]; then
|
|
40
41
|
mkdir -p ~/downloads
|
|
41
|
-
wget http://kakadusoftware.com/wp-content/uploads/
|
|
42
|
+
wget http://kakadusoftware.com/wp-content/uploads/KDU841_Demo_Apps_for_Linux-x86-64_231117.zip -O ~/downloads/kakadu.zip
|
|
42
43
|
fi
|
|
43
44
|
- save_cache:
|
|
44
45
|
name: Save Kakadu Cache
|
|
@@ -49,7 +50,7 @@ jobs:
|
|
|
49
50
|
name: Install Kakadu
|
|
50
51
|
command: |
|
|
51
52
|
unzip ~/downloads/kakadu.zip
|
|
52
|
-
mv
|
|
53
|
+
mv KDU841_Demo_Apps_for_Linux-x86-64_231117 kakadu
|
|
53
54
|
sudo cp kakadu/*.so /usr/lib
|
|
54
55
|
sudo cp kakadu/* /usr/bin
|
|
55
56
|
kdu_compress -version
|
|
@@ -63,7 +64,7 @@ jobs:
|
|
|
63
64
|
- samvera/bundle:
|
|
64
65
|
ruby_version: << parameters.ruby_version >>
|
|
65
66
|
bundler_version: << parameters.bundler_version >>
|
|
66
|
-
cache_version: "
|
|
67
|
+
cache_version: "3"
|
|
67
68
|
|
|
68
69
|
- samvera/install_solr_core
|
|
69
70
|
|
|
@@ -74,18 +75,15 @@ jobs:
|
|
|
74
75
|
workflows:
|
|
75
76
|
ci:
|
|
76
77
|
jobs:
|
|
78
|
+
- bundle_lint_test:
|
|
79
|
+
name: ruby3-3
|
|
80
|
+
ruby_version: 3.3.5
|
|
77
81
|
- bundle_lint_test:
|
|
78
82
|
name: ruby3-2
|
|
79
|
-
ruby_version: 3.2.
|
|
83
|
+
ruby_version: 3.2.5
|
|
80
84
|
- bundle_lint_test:
|
|
81
85
|
name: ruby3-1
|
|
82
|
-
ruby_version: 3.1.
|
|
83
|
-
- bundle_lint_test:
|
|
84
|
-
name: ruby3-0
|
|
85
|
-
ruby_version: 3.0.3
|
|
86
|
-
- bundle_lint_test:
|
|
87
|
-
name: ruby2-7
|
|
88
|
-
ruby_version: 2.7.7
|
|
86
|
+
ruby_version: 3.1.6
|
|
89
87
|
|
|
90
88
|
nightly:
|
|
91
89
|
triggers:
|
|
@@ -96,15 +94,12 @@ workflows:
|
|
|
96
94
|
only:
|
|
97
95
|
- main
|
|
98
96
|
jobs:
|
|
97
|
+
- bundle_lint_test:
|
|
98
|
+
name: ruby3-3
|
|
99
|
+
ruby_version: 3.3.5
|
|
99
100
|
- bundle_lint_test:
|
|
100
101
|
name: ruby3-2
|
|
101
|
-
ruby_version: 3.2.
|
|
102
|
+
ruby_version: 3.2.5
|
|
102
103
|
- bundle_lint_test:
|
|
103
104
|
name: ruby3-1
|
|
104
|
-
ruby_version: 3.1.
|
|
105
|
-
- bundle_lint_test:
|
|
106
|
-
name: ruby3-0
|
|
107
|
-
ruby_version: 3.0.3
|
|
108
|
-
- bundle_lint_test:
|
|
109
|
-
name: ruby2-7
|
|
110
|
-
ruby_version: 2.7.7
|
|
105
|
+
ruby_version: 3.1.6
|
data/.rubocop_todo.yml
CHANGED
data/Dockerfile
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
ARG RUBY_VERSION=3.2.2
|
|
2
|
+
|
|
3
|
+
FROM rubylang/ruby:$RUBY_VERSION-dev-jammy
|
|
4
|
+
|
|
5
|
+
RUN apt update && apt -y install \
|
|
6
|
+
imagemagick \
|
|
7
|
+
zip \
|
|
8
|
+
ghostscript \
|
|
9
|
+
libpng-dev \
|
|
10
|
+
libvips \
|
|
11
|
+
libvips-dev \
|
|
12
|
+
libvips-tools \
|
|
13
|
+
graphicsmagick \
|
|
14
|
+
ffmpeg \
|
|
15
|
+
libreoffice \
|
|
16
|
+
git \
|
|
17
|
+
dcraw \
|
|
18
|
+
libyaml-dev
|
|
19
|
+
|
|
20
|
+
ARG KAKADU_ZIP
|
|
21
|
+
RUN mkdir -p /opt/kakadu
|
|
22
|
+
COPY $KAKADU_ZIP.zip /opt/kakadu/downloads/kakadu.zip
|
|
23
|
+
RUN unzip /opt/kakadu/downloads/kakadu.zip \
|
|
24
|
+
&& mv $KAKADU_ZIP kakadu \
|
|
25
|
+
&& cp kakadu/*.so /usr/lib \
|
|
26
|
+
&& cp kakadu/* /usr/bin
|
|
27
|
+
|
|
28
|
+
RUN sed -i 's/policy domain="coder" rights="none" pattern="PDF"/policy domain="coder" rights="read|write" pattern="PDF"/' /etc/ImageMagick-6/policy.xml
|
|
29
|
+
RUN sed -i 's/decode="dng:decode" command=".*"\/>$/decode="dng:decode" command="\"\;dcraw\"\; -c -q 3 -H 5 -w \"\;\%i\"\; \| \"\;convert\"\; - \"\;\%u\.png\"\;"\/>/' /etc/ImageMagick-6/delegates.xml
|
|
30
|
+
|
|
31
|
+
RUN addgroup --system --gid 1001 app && \
|
|
32
|
+
adduser --system --ingroup app --uid 1001 --shell /bin/sh --home /app app
|
|
33
|
+
|
|
34
|
+
RUN mkdir -p /app/samvera/hydra-derviatives
|
|
35
|
+
WORKDIR /app/samvera/hydra-derivatives
|
|
36
|
+
COPY ./ /app/samvera/hydra-derivatives
|
|
37
|
+
RUN gem install bundler && bundle install --jobs=3 --retry=3
|
data/Gemfile
CHANGED
data/README.md
CHANGED
|
@@ -253,6 +253,40 @@ If you don't want to run the whole suite all at once like CI, do the following:
|
|
|
253
253
|
1. Run the test servers with `rake derivatives:test_server`
|
|
254
254
|
2. Run the tests.
|
|
255
255
|
|
|
256
|
+
## Running tests with Docker
|
|
257
|
+
|
|
258
|
+
First, make sure you have installed [Docker](https://www.docker.com/).
|
|
259
|
+
|
|
260
|
+
Download the most recent version of the Linux Kakadu demo from [the downloads page](https://kakadusoftware.com/documentation-downloads/downloads/)
|
|
261
|
+
and place it in your cloned repository. (This requires signing up with an email address.)
|
|
262
|
+
|
|
263
|
+
Note the name of the zip file without the .zip extension. We will pass this name as an argument when building
|
|
264
|
+
the docker container. For example, if the name of the zip file is `KDU841_Demo_Apps_for_Linux-x86-64_231117.zip`,
|
|
265
|
+
we will pass `KDU841_Demo_Apps_for_Linux-x86-64_231117` to `docker compose build`.
|
|
266
|
+
|
|
267
|
+
Within your cloned repository, tell Docker to get started installing your development environment, replacing
|
|
268
|
+
`<name of zip file>` with the name of your downloaded file above.
|
|
269
|
+
|
|
270
|
+
```sh
|
|
271
|
+
docker compose build --build-arg KAKADU_ZIP=<name of zip file>
|
|
272
|
+
docker compose up
|
|
273
|
+
```
|
|
274
|
+
|
|
275
|
+
This starts containers for:
|
|
276
|
+
|
|
277
|
+
- Fedora
|
|
278
|
+
- Solr
|
|
279
|
+
|
|
280
|
+
It also builds an image containing all dependencies needed for the tests.
|
|
281
|
+
|
|
282
|
+
To stop the containers, type <kbd>Ctrl</kbd>+<kbd>c</kbd>. To restart the containers you need only run `docker compose up`.
|
|
283
|
+
|
|
284
|
+
You can run the full test suite using the following command:
|
|
285
|
+
|
|
286
|
+
```sh
|
|
287
|
+
docker compose run -w /app/samvera/hydra-derivatives test sh -c "bundle exec rspec"
|
|
288
|
+
```
|
|
289
|
+
|
|
256
290
|
# Acknowledgments
|
|
257
291
|
|
|
258
292
|
This software has been developed by and is brought to you by the Samvera community. Learn more at the
|
data/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
4.1.0
|
data/docker-compose.yml
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
version: '2.2'
|
|
2
|
+
|
|
3
|
+
volumes:
|
|
4
|
+
solr:
|
|
5
|
+
fcrepo:
|
|
6
|
+
|
|
7
|
+
networks:
|
|
8
|
+
internal:
|
|
9
|
+
|
|
10
|
+
services:
|
|
11
|
+
|
|
12
|
+
solr:
|
|
13
|
+
image: solr:8
|
|
14
|
+
ports:
|
|
15
|
+
- 8985:8983
|
|
16
|
+
command:
|
|
17
|
+
- bash
|
|
18
|
+
- "-c"
|
|
19
|
+
- "precreate-core hydra-test /opt/solr/server/configsets/hydra-test; exec solr -f"
|
|
20
|
+
volumes:
|
|
21
|
+
- .:/app
|
|
22
|
+
- ./solr/config:/opt/solr/server/configsets/hydra-test
|
|
23
|
+
- solr:/opt/solr/server/solr
|
|
24
|
+
networks:
|
|
25
|
+
internal:
|
|
26
|
+
|
|
27
|
+
fcrepo:
|
|
28
|
+
image: ghcr.io/samvera/fcrepo4:4.7.5
|
|
29
|
+
volumes:
|
|
30
|
+
- fcrepo:/data:cached
|
|
31
|
+
ports:
|
|
32
|
+
- 8986:8080
|
|
33
|
+
networks:
|
|
34
|
+
internal:
|
|
35
|
+
|
|
36
|
+
test:
|
|
37
|
+
build: .
|
|
38
|
+
env_file:
|
|
39
|
+
- test.env
|
|
40
|
+
volumes:
|
|
41
|
+
- .:/app/samvera/hydra-derivatives # Volume mounted
|
|
42
|
+
networks:
|
|
43
|
+
internal:
|
|
44
|
+
depends_on:
|
|
45
|
+
- fcrepo
|
|
46
|
+
- solr
|
data/hydra-derivatives.gemspec
CHANGED
|
@@ -18,17 +18,18 @@ Gem::Specification.new do |spec|
|
|
|
18
18
|
spec.add_development_dependency 'bundler', '~> 2.1'
|
|
19
19
|
spec.add_development_dependency 'fcrepo_wrapper', '~> 0.2'
|
|
20
20
|
spec.add_development_dependency 'pry-byebug'
|
|
21
|
-
spec.add_development_dependency 'rails', '> 5.1', '<
|
|
21
|
+
spec.add_development_dependency 'rails', '> 5.1', '< 9.0'
|
|
22
22
|
spec.add_development_dependency 'rake'
|
|
23
23
|
spec.add_development_dependency 'rspec', '~> 3.1'
|
|
24
24
|
spec.add_development_dependency "solr_wrapper"
|
|
25
25
|
|
|
26
|
-
spec.add_dependency 'active_encode', '~>
|
|
26
|
+
spec.add_dependency 'active_encode', '~> 1.2'
|
|
27
27
|
spec.add_dependency 'active-fedora', '>= 14.0'
|
|
28
28
|
spec.add_dependency 'active-triples', '>= 1.2'
|
|
29
|
-
spec.add_dependency 'activesupport', '>= 4.0', '<
|
|
29
|
+
spec.add_dependency 'activesupport', '>= 4.0', '< 9.0'
|
|
30
30
|
spec.add_dependency 'addressable', '~> 2.5'
|
|
31
31
|
spec.add_dependency 'deprecation'
|
|
32
32
|
spec.add_dependency 'mime-types', '> 2.0', '< 4.0'
|
|
33
33
|
spec.add_dependency 'mini_magick', '>= 3.2', '< 5'
|
|
34
|
+
spec.add_dependency 'ruby-vips'
|
|
34
35
|
end
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
require 'mini_magick'
|
|
3
|
+
require 'ruby-vips'
|
|
3
4
|
|
|
4
5
|
module Hydra::Derivatives::Processors
|
|
5
6
|
class Image < Processor
|
|
@@ -20,22 +21,72 @@ module Hydra::Derivatives::Processors
|
|
|
20
21
|
# When resizing images, it is necessary to flatten any layers, otherwise the background
|
|
21
22
|
# may be completely black. This happens especially with PDFs. See #110
|
|
22
23
|
def create_resized_image
|
|
23
|
-
|
|
24
|
+
if Hydra::Derivatives::ImageService.processor == :graphicsmagick
|
|
25
|
+
create_resized_image_with_graphicsmagick
|
|
26
|
+
elsif Hydra::Derivatives::ImageService.processor == :libvips
|
|
27
|
+
create_resized_image_with_libvips
|
|
28
|
+
else
|
|
29
|
+
create_resized_image_with_imagemagick
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def create_resized_image_with_graphicsmagick
|
|
34
|
+
Hydra::Derivatives::Logger.debug('[ImageProcessor] Using GraphicsMagick image resize method')
|
|
35
|
+
create_image do |temp_file|
|
|
24
36
|
if size
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
37
|
+
# remove layers and resize using convert instead of mogrify
|
|
38
|
+
MiniMagick::Tool::Convert.new do |cmd|
|
|
39
|
+
cmd << temp_file.path # input
|
|
40
|
+
cmd.flatten
|
|
41
|
+
cmd.resize(size)
|
|
42
|
+
cmd << temp_file.path # output
|
|
28
43
|
end
|
|
29
44
|
end
|
|
30
45
|
end
|
|
31
46
|
end
|
|
32
47
|
|
|
48
|
+
def create_resized_image_with_imagemagick
|
|
49
|
+
Hydra::Derivatives::Logger.debug('[ImageProcessor] Using ImageMagick image resize method')
|
|
50
|
+
create_image do |temp_file|
|
|
51
|
+
if size
|
|
52
|
+
temp_file.flatten
|
|
53
|
+
temp_file.resize(size)
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
# rubocop:disable Metrics/MethodLength
|
|
59
|
+
def create_resized_image_with_libvips
|
|
60
|
+
Hydra::Derivatives::Logger.debug('[ImageProcessor] Using libvips resize method')
|
|
61
|
+
create_image do |temp_file|
|
|
62
|
+
if size
|
|
63
|
+
width, height, option = size.match(/(\d+)x(\d+)(.)?/).captures
|
|
64
|
+
# Translate imagemagick resize syntax into ruby-vips
|
|
65
|
+
size_option = case option
|
|
66
|
+
when '>'
|
|
67
|
+
:down
|
|
68
|
+
when '<'
|
|
69
|
+
:up
|
|
70
|
+
when '!'
|
|
71
|
+
:force
|
|
72
|
+
end
|
|
73
|
+
temp_file.thumbnail_image(width.to_i, height: height.to_i, size: size_option)
|
|
74
|
+
end
|
|
75
|
+
end
|
|
76
|
+
end
|
|
77
|
+
# rubocop:enable Metrics/MethodLength
|
|
78
|
+
|
|
33
79
|
def create_image
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
80
|
+
if Hydra::Derivatives::ImageService.processor == :libvips
|
|
81
|
+
image = block_given? ? yield(load_image_transformer) : load_image_transformer
|
|
82
|
+
write_image_with_vips(image, directives)
|
|
83
|
+
else
|
|
84
|
+
xfrm = selected_layers(load_image_transformer)
|
|
85
|
+
yield(xfrm) if block_given?
|
|
86
|
+
xfrm.format(directives.fetch(:format))
|
|
87
|
+
xfrm.quality(quality.to_s) if quality
|
|
88
|
+
write_image(xfrm)
|
|
89
|
+
end
|
|
39
90
|
end
|
|
40
91
|
|
|
41
92
|
def write_image(xfrm)
|
|
@@ -45,10 +96,24 @@ module Hydra::Derivatives::Processors
|
|
|
45
96
|
output_file_service.call(output_io, directives)
|
|
46
97
|
end
|
|
47
98
|
|
|
99
|
+
def write_image_with_vips(image, directives)
|
|
100
|
+
output_io = StringIO.new
|
|
101
|
+
format = directives.fetch(:format, "jpg")
|
|
102
|
+
format_string = ".#{format}#{"[Q=#{quality}]" if quality}"
|
|
103
|
+
output_io.write(image.write_to_buffer(format_string))
|
|
104
|
+
output_io.rewind
|
|
105
|
+
output_file_service.call(output_io, directives)
|
|
106
|
+
end
|
|
107
|
+
|
|
48
108
|
# Override this method if you want a different transformer, or need to load the
|
|
49
109
|
# raw image from a different source (e.g. external file)
|
|
50
110
|
def load_image_transformer
|
|
51
|
-
|
|
111
|
+
if Hydra::Derivatives::ImageService.processor == :libvips
|
|
112
|
+
# Vips specifies pdf layers at load time
|
|
113
|
+
selected_vips_layers(source_path)
|
|
114
|
+
else
|
|
115
|
+
MiniMagick::Image.open(source_path)
|
|
116
|
+
end
|
|
52
117
|
end
|
|
53
118
|
|
|
54
119
|
private
|
|
@@ -70,5 +135,13 @@ module Hydra::Derivatives::Processors
|
|
|
70
135
|
image
|
|
71
136
|
end
|
|
72
137
|
end
|
|
138
|
+
|
|
139
|
+
def selected_vips_layers(source_path)
|
|
140
|
+
if `vipsheader #{Shellwords.escape(source_path)}` =~ /pdfload/i && directives.fetch(:layer, false)
|
|
141
|
+
Vips::Image.new_from_file(source_path, page: directives.fetch(:layer))
|
|
142
|
+
else
|
|
143
|
+
Vips::Image.new_from_file(source_path)
|
|
144
|
+
end
|
|
145
|
+
end
|
|
73
146
|
end
|
|
74
147
|
end
|
|
@@ -21,7 +21,7 @@ module Hydra::Derivatives::Processors::Video
|
|
|
21
21
|
|
|
22
22
|
def mpeg4
|
|
23
23
|
audio_encoder = Hydra::Derivatives::AudioEncoder.new
|
|
24
|
-
@mpeg4 ||= CodecConfig.new("-vcodec libx264 -acodec #{audio_encoder.audio_encoder}")
|
|
24
|
+
@mpeg4 ||= CodecConfig.new("-vcodec libx264 -profile:v high -pix_fmt yuv420p -acodec #{audio_encoder.audio_encoder}")
|
|
25
25
|
end
|
|
26
26
|
|
|
27
27
|
def webm
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
module Hydra::Derivatives
|
|
3
|
+
module ImageService
|
|
4
|
+
def self.default_processor
|
|
5
|
+
:imagemagick
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
def self.processor
|
|
9
|
+
case ENV['IMAGE_PROCESSOR']
|
|
10
|
+
when 'imagemagick'
|
|
11
|
+
Hydra::Derivatives::Logger.debug('[ImageProcessor] Using ImageMagick as image processor')
|
|
12
|
+
:imagemagick
|
|
13
|
+
when 'graphicsmagick'
|
|
14
|
+
Hydra::Derivatives::Logger.debug('[ImageProcessor] Using GraphicsMagick as image processor')
|
|
15
|
+
:graphicsmagick
|
|
16
|
+
when 'libvips'
|
|
17
|
+
Hydra::Derivatives::Logger.debug('[ImageProcessor] Using libvips as image processor')
|
|
18
|
+
:libvips
|
|
19
|
+
else
|
|
20
|
+
Hydra::Derivatives::Logger.debug("[ImageProcessor] The environment variable IMAGE_PROCESSOR should be set to 'imagemagick','graphicsmagick' or 'libvips'. It is currently set to: #{ENV['IMAGE_PROCESSOR']}. Defaulting to using #{default_processor}")
|
|
21
|
+
default_processor
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
data/lib/hydra/derivatives.rb
CHANGED
data/test.env
ADDED
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: hydra-derivatives
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version:
|
|
4
|
+
version: 4.1.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Justin Coyne
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2025-12-01 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: bundler
|
|
@@ -61,7 +61,7 @@ dependencies:
|
|
|
61
61
|
version: '5.1'
|
|
62
62
|
- - "<"
|
|
63
63
|
- !ruby/object:Gem::Version
|
|
64
|
-
version: '
|
|
64
|
+
version: '9.0'
|
|
65
65
|
type: :development
|
|
66
66
|
prerelease: false
|
|
67
67
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -71,7 +71,7 @@ dependencies:
|
|
|
71
71
|
version: '5.1'
|
|
72
72
|
- - "<"
|
|
73
73
|
- !ruby/object:Gem::Version
|
|
74
|
-
version: '
|
|
74
|
+
version: '9.0'
|
|
75
75
|
- !ruby/object:Gem::Dependency
|
|
76
76
|
name: rake
|
|
77
77
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -120,14 +120,14 @@ dependencies:
|
|
|
120
120
|
requirements:
|
|
121
121
|
- - "~>"
|
|
122
122
|
- !ruby/object:Gem::Version
|
|
123
|
-
version: '
|
|
123
|
+
version: '1.2'
|
|
124
124
|
type: :runtime
|
|
125
125
|
prerelease: false
|
|
126
126
|
version_requirements: !ruby/object:Gem::Requirement
|
|
127
127
|
requirements:
|
|
128
128
|
- - "~>"
|
|
129
129
|
- !ruby/object:Gem::Version
|
|
130
|
-
version: '
|
|
130
|
+
version: '1.2'
|
|
131
131
|
- !ruby/object:Gem::Dependency
|
|
132
132
|
name: active-fedora
|
|
133
133
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -165,7 +165,7 @@ dependencies:
|
|
|
165
165
|
version: '4.0'
|
|
166
166
|
- - "<"
|
|
167
167
|
- !ruby/object:Gem::Version
|
|
168
|
-
version: '
|
|
168
|
+
version: '9.0'
|
|
169
169
|
type: :runtime
|
|
170
170
|
prerelease: false
|
|
171
171
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -175,7 +175,7 @@ dependencies:
|
|
|
175
175
|
version: '4.0'
|
|
176
176
|
- - "<"
|
|
177
177
|
- !ruby/object:Gem::Version
|
|
178
|
-
version: '
|
|
178
|
+
version: '9.0'
|
|
179
179
|
- !ruby/object:Gem::Dependency
|
|
180
180
|
name: addressable
|
|
181
181
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -244,6 +244,20 @@ dependencies:
|
|
|
244
244
|
- - "<"
|
|
245
245
|
- !ruby/object:Gem::Version
|
|
246
246
|
version: '5'
|
|
247
|
+
- !ruby/object:Gem::Dependency
|
|
248
|
+
name: ruby-vips
|
|
249
|
+
requirement: !ruby/object:Gem::Requirement
|
|
250
|
+
requirements:
|
|
251
|
+
- - ">="
|
|
252
|
+
- !ruby/object:Gem::Version
|
|
253
|
+
version: '0'
|
|
254
|
+
type: :runtime
|
|
255
|
+
prerelease: false
|
|
256
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
257
|
+
requirements:
|
|
258
|
+
- - ">="
|
|
259
|
+
- !ruby/object:Gem::Version
|
|
260
|
+
version: '0'
|
|
247
261
|
description: Derivative generation plugin for hydra
|
|
248
262
|
email:
|
|
249
263
|
- jenlindner@gmail.com
|
|
@@ -261,6 +275,7 @@ files:
|
|
|
261
275
|
- ".solr_wrapper"
|
|
262
276
|
- CODE_OF_CONDUCT.md
|
|
263
277
|
- CONTRIBUTING.md
|
|
278
|
+
- Dockerfile
|
|
264
279
|
- Gemfile
|
|
265
280
|
- History.md
|
|
266
281
|
- LICENSE.txt
|
|
@@ -273,6 +288,7 @@ files:
|
|
|
273
288
|
- config/jetty.yml
|
|
274
289
|
- config/solr_wrapper_test.yml
|
|
275
290
|
- doc/amazon_elastic_transcoder.md
|
|
291
|
+
- docker-compose.yml
|
|
276
292
|
- hydra-derivatives.gemspec
|
|
277
293
|
- lib/color_profiles/license.txt
|
|
278
294
|
- lib/color_profiles/sRGB_IEC61966-2-1_no_black_scaling.icc
|
|
@@ -305,6 +321,7 @@ files:
|
|
|
305
321
|
- lib/hydra/derivatives/runners/runner.rb
|
|
306
322
|
- lib/hydra/derivatives/runners/video_derivatives.rb
|
|
307
323
|
- lib/hydra/derivatives/services/capability_service.rb
|
|
324
|
+
- lib/hydra/derivatives/services/image_service.rb
|
|
308
325
|
- lib/hydra/derivatives/services/mime_type_service.rb
|
|
309
326
|
- lib/hydra/derivatives/services/persist_basic_contained_output_file_service.rb
|
|
310
327
|
- lib/hydra/derivatives/services/persist_external_file_output_file_service.rb
|
|
@@ -328,6 +345,7 @@ files:
|
|
|
328
345
|
- solr/config/xslt/example_atom.xsl
|
|
329
346
|
- solr/config/xslt/example_rss.xsl
|
|
330
347
|
- solr/config/xslt/luke.xsl
|
|
348
|
+
- test.env
|
|
331
349
|
homepage: https://github.com/projecthydra/hydra-derivatives
|
|
332
350
|
licenses:
|
|
333
351
|
- APACHE2
|
|
@@ -348,7 +366,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
348
366
|
- !ruby/object:Gem::Version
|
|
349
367
|
version: '0'
|
|
350
368
|
requirements: []
|
|
351
|
-
rubygems_version: 3.
|
|
369
|
+
rubygems_version: 3.5.22
|
|
352
370
|
signing_key:
|
|
353
371
|
specification_version: 4
|
|
354
372
|
summary: Derivative generation plugin for hydra
|