uricp 0.0.23 → 0.0.27
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/Gemfile +2 -0
- data/Gemfile.lock +2 -4
- data/features/rbd_access.feature +1 -1
- data/lib/segment_upload.rb +2 -28
- data/lib/uricp/curl_primitives.rb +2 -0
- data/lib/uricp/orbit_auth.rb +2 -0
- data/lib/uricp/segmenter.rb +3 -1
- data/lib/uricp/strategy/cache_common.rb +5 -3
- data/lib/uricp/strategy/cached_get.rb +2 -0
- data/lib/uricp/strategy/cleaner.rb +2 -0
- data/lib/uricp/strategy/common.rb +13 -6
- data/lib/uricp/strategy/local_convert.rb +2 -0
- data/lib/uricp/strategy/local_link.rb +2 -0
- data/lib/uricp/strategy/piped_cache.rb +3 -2
- data/lib/uricp/strategy/piped_cache_convert.rb +2 -0
- data/lib/uricp/strategy/piped_compress.rb +2 -0
- data/lib/uricp/strategy/piped_decompress.rb +2 -0
- data/lib/uricp/strategy/piped_local_compress.rb +2 -0
- data/lib/uricp/strategy/piped_local_decompress.rb +2 -0
- data/lib/uricp/strategy/piped_local_get.rb +2 -0
- data/lib/uricp/strategy/piped_local_put.rb +2 -0
- data/lib/uricp/strategy/piped_rbd_get.rb +4 -3
- data/lib/uricp/strategy/piped_remote_get.rb +2 -0
- data/lib/uricp/strategy/rbd_cache_base_snap.rb +3 -2
- data/lib/uricp/strategy/rbd_cache_check.rb +2 -1
- data/lib/uricp/strategy/rbd_cache_clone.rb +2 -1
- data/lib/uricp/strategy/rbd_cache_upload.rb +6 -9
- data/lib/uricp/strategy/rbd_cached_get.rb +2 -1
- data/lib/uricp/strategy/rbd_cached_put.rb +8 -5
- data/lib/uricp/strategy/rbd_put.rb +12 -11
- data/lib/uricp/strategy/rbd_snap.rb +6 -5
- data/lib/uricp/strategy/rbd_sweeper.rb +2 -0
- data/lib/uricp/strategy/remote_put.rb +2 -0
- data/lib/uricp/strategy/segmented_remote_put.rb +2 -0
- data/lib/uricp/strategy/sweeper.rb +2 -0
- data/lib/uricp/uri_strategy.rb +2 -0
- data/lib/uricp/version.rb +1 -1
- data/uricp.gemspec +14 -14
- metadata +28 -42
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 2bdc788caae911b8877f44865af0a39419c96148ca47ee2536b04d2de1630fc1
|
|
4
|
+
data.tar.gz: 0f2ae7d75bb93abc8f3eff7437eb82552fa39ef7c9ddfadd7f197f775071519d
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 77528ea35b99174312d1bdf1aa73ec5d9e53aa1c432dfde4cf9c720c35c093746f5289a3e558c46dff05a39d5efb1a248ec71b6ae6d66192f3e52c420d5ccde1
|
|
7
|
+
data.tar.gz: 97fc3ada66b80f66374b46d03302f37459d937d31ab5c15ecb3f4ab4f0dd3856031f168ba2f804a199d18e7df31227bc6145d94e263e75c687fa6f73f2306a1c
|
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
uricp (0.0.
|
|
4
|
+
uricp (0.0.27)
|
|
5
5
|
childprocess (~> 1.0)
|
|
6
6
|
filesize (= 0.0.2)
|
|
7
7
|
methadone (~> 2.0.2)
|
|
8
8
|
open4 (~> 1.3.0)
|
|
9
|
-
sendfile (~> 1.2.0)
|
|
10
9
|
|
|
11
10
|
GEM
|
|
12
11
|
remote: https://rubygems.org/
|
|
@@ -41,8 +40,7 @@ GEM
|
|
|
41
40
|
rspec-expectations (3.10.1)
|
|
42
41
|
diff-lcs (>= 1.2.0, < 2.0)
|
|
43
42
|
rspec-support (~> 3.10.0)
|
|
44
|
-
rspec-support (3.10.
|
|
45
|
-
sendfile (1.2.2)
|
|
43
|
+
rspec-support (3.10.3)
|
|
46
44
|
|
|
47
45
|
PLATFORMS
|
|
48
46
|
ruby
|
data/features/rbd_access.feature
CHANGED
|
@@ -41,7 +41,7 @@ Feature: Manipulate file images in ceph
|
|
|
41
41
|
When I successfully run `uricp --dry-run --target-format=raw --cache=/tmp/uricp http://orbit.brightbox.com/v1/acc-tqs4c/downloads/freedos.qcow2 rbd:///servers/srv-testy`
|
|
42
42
|
And the output should contain:
|
|
43
43
|
"""
|
|
44
|
-
rbd import --no-progress --id libvirt '/tmp/uricp/cache/freedos.qcow2' 'servers/freedos.qcow2'
|
|
44
|
+
rbd import --no-progress --id libvirt - <'/tmp/uricp/cache/freedos.qcow2' 'servers/freedos.qcow2'
|
|
45
45
|
"""
|
|
46
46
|
And the output should contain:
|
|
47
47
|
"""
|
data/lib/segment_upload.rb
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
require 'uricp/version'
|
|
2
4
|
require 'uricp/curl_primitives'
|
|
3
5
|
require 'uricp/orbit_auth'
|
|
@@ -6,31 +8,3 @@ require 'uricp/segmenter'
|
|
|
6
8
|
module Uricp
|
|
7
9
|
UnsupportedURLtype = Class.new(ArgumentError)
|
|
8
10
|
end
|
|
9
|
-
|
|
10
|
-
# Monkey patch a copy_stream facility in using 'sendfile'
|
|
11
|
-
unless IO.respond_to? :copy_stream
|
|
12
|
-
require 'sendfile'
|
|
13
|
-
|
|
14
|
-
def IO.copy_stream(src, dst, copy_length = nil, offset = nil)
|
|
15
|
-
if src.stat.pipe?
|
|
16
|
-
amount = copy_length.to_i
|
|
17
|
-
buf_size = [amount, 2**16].min
|
|
18
|
-
buffer = ''
|
|
19
|
-
while amount > 0
|
|
20
|
-
src.read(buf_size, buffer)
|
|
21
|
-
amount_read = buffer.length
|
|
22
|
-
dst.write(buffer)
|
|
23
|
-
amount -= amount_read
|
|
24
|
-
break if src.eof?
|
|
25
|
-
end
|
|
26
|
-
copy_length.to_i - amount
|
|
27
|
-
else
|
|
28
|
-
current_pos = src.pos
|
|
29
|
-
count = dst.sendfile(src, offset || current_pos, copy_length)
|
|
30
|
-
src.seek(count, IO::SEEK_CUR)
|
|
31
|
-
count
|
|
32
|
-
end
|
|
33
|
-
rescue EOFError
|
|
34
|
-
0
|
|
35
|
-
end
|
|
36
|
-
end
|
data/lib/uricp/orbit_auth.rb
CHANGED
data/lib/uricp/segmenter.rb
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
require 'pathname'
|
|
2
4
|
|
|
3
5
|
module Uricp
|
|
@@ -67,7 +69,7 @@ module Uricp
|
|
|
67
69
|
end
|
|
68
70
|
|
|
69
71
|
def upload_segment(segment_number)
|
|
70
|
-
segment_name = File.join(to.to_s, manifest_suffix, '%08d'
|
|
72
|
+
segment_name = File.join(to.to_s, manifest_suffix, format('%08d', segment_number))
|
|
71
73
|
debug "Uploading with #{curl_upload_from('-', segment_name)}"
|
|
72
74
|
open('|' + curl_upload_from('-', segment_name), 'w') do |destination|
|
|
73
75
|
copy_length = IO.copy_stream(@source, destination, segment_size)
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
require 'fileutils'
|
|
2
4
|
|
|
3
5
|
module Uricp::Strategy
|
|
@@ -25,11 +27,11 @@ module Uricp::Strategy
|
|
|
25
27
|
end
|
|
26
28
|
|
|
27
29
|
def without_active_cache
|
|
28
|
-
|
|
29
|
-
yield
|
|
30
|
-
else
|
|
30
|
+
if cache_root
|
|
31
31
|
debug "#{self.class.name}: cache active - not appropriate"
|
|
32
32
|
false
|
|
33
|
+
else
|
|
34
|
+
yield
|
|
33
35
|
end
|
|
34
36
|
end
|
|
35
37
|
|
|
@@ -1,7 +1,10 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
module Uricp::Strategy
|
|
2
4
|
module Common
|
|
3
5
|
include Methadone::CLILogging
|
|
4
6
|
include Uricp::CurlPrimitives
|
|
7
|
+
include Methadone::SH
|
|
5
8
|
|
|
6
9
|
def initialize(options)
|
|
7
10
|
@options = options
|
|
@@ -91,10 +94,10 @@ module Uricp::Strategy
|
|
|
91
94
|
end
|
|
92
95
|
|
|
93
96
|
PIPE_URI = URI('pipe:/')
|
|
94
|
-
DRY_SNAP = 'uricp_snap'
|
|
97
|
+
DRY_SNAP = 'uricp_snap'
|
|
95
98
|
|
|
96
99
|
def rbd_base_name
|
|
97
|
-
'base'
|
|
100
|
+
'base'
|
|
98
101
|
end
|
|
99
102
|
|
|
100
103
|
def rbd_snapshot_name
|
|
@@ -103,7 +106,7 @@ module Uricp::Strategy
|
|
|
103
106
|
|
|
104
107
|
def get_temp_filename(base_dir)
|
|
105
108
|
t = Time.now.strftime('%Y%m%d')
|
|
106
|
-
File.join(base_dir, "uricp-#{t}-#{
|
|
109
|
+
File.join(base_dir, "uricp-#{t}-#{$PROCESS_ID}-#{rand(0x100000000).to_s(36)}")
|
|
107
110
|
end
|
|
108
111
|
|
|
109
112
|
def proposed_path
|
|
@@ -130,7 +133,7 @@ module Uricp::Strategy
|
|
|
130
133
|
options['rbd_cache_name']
|
|
131
134
|
end
|
|
132
135
|
|
|
133
|
-
def rbd_clone_snapshot(cache=rbd_cache_name)
|
|
136
|
+
def rbd_clone_snapshot(cache = rbd_cache_name)
|
|
134
137
|
"#{cache}@#{rbd_base_name}"
|
|
135
138
|
end
|
|
136
139
|
|
|
@@ -158,13 +161,17 @@ module Uricp::Strategy
|
|
|
158
161
|
uri.scheme == 'rbd' && uri.path.include?('@')
|
|
159
162
|
end
|
|
160
163
|
|
|
164
|
+
def rbd_cache_upload_available?
|
|
165
|
+
rbd_cache_name && !rbd_cache_image_exists?(rbd_cache_name)
|
|
166
|
+
end
|
|
167
|
+
|
|
161
168
|
def rbd_cache_image_exists?(target)
|
|
162
169
|
command = "rbd status --id #{rbd_id} --format json #{target} 2>/dev/null"
|
|
163
170
|
if dry_run?
|
|
164
171
|
if options['dry-cache'] == :partial_rbd && options['cache_name'] !~ /srv-...../
|
|
165
|
-
command =
|
|
172
|
+
command = 'exit 0'
|
|
166
173
|
else
|
|
167
|
-
command =
|
|
174
|
+
command = 'exit 2'
|
|
168
175
|
end
|
|
169
176
|
end
|
|
170
177
|
sh!(command)
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
require 'fileutils'
|
|
2
4
|
|
|
3
5
|
module Uricp::Strategy
|
|
4
6
|
class PipedCache
|
|
5
7
|
include Uricp::Strategy::Common
|
|
6
8
|
include Uricp::Strategy::CacheCommon
|
|
7
|
-
include Methadone::SH
|
|
8
9
|
|
|
9
10
|
def appropriate?
|
|
10
11
|
with_active_cache do
|
|
@@ -26,7 +27,7 @@ module Uricp::Strategy
|
|
|
26
27
|
@proposed_options = options.dup
|
|
27
28
|
@proposed_options['sweep'] = [temp_cache_file, cache_file]
|
|
28
29
|
image_spec_to_check = rbd_cache_image_spec(to)
|
|
29
|
-
if to.scheme == 'rbd'
|
|
30
|
+
if to.scheme == 'rbd'
|
|
30
31
|
@proposed_options['rbd_cache_name'] = image_spec_to_check
|
|
31
32
|
end
|
|
32
33
|
@proposed_options.delete('cache')
|
|
@@ -1,15 +1,16 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
require 'json'
|
|
2
4
|
module Uricp::Strategy
|
|
3
5
|
class PipedRbdGet
|
|
4
6
|
include Uricp::Strategy::Common
|
|
5
7
|
include Uricp::Strategy::CacheCommon
|
|
6
|
-
include Methadone::SH
|
|
7
8
|
|
|
8
9
|
def appropriate?
|
|
9
10
|
without_active_cache do
|
|
10
11
|
if from.scheme == 'rbd' &&
|
|
11
|
-
|
|
12
|
-
|
|
12
|
+
rbd_snapshot_spec?(from) &&
|
|
13
|
+
to.scheme != 'rbd'
|
|
13
14
|
return proposal unless sequence_complete?
|
|
14
15
|
end
|
|
15
16
|
end
|
|
@@ -1,11 +1,12 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
module Uricp::Strategy
|
|
2
4
|
class RbdCacheBaseSnap
|
|
3
5
|
include Uricp::Strategy::Common
|
|
4
|
-
include Methadone::SH
|
|
5
6
|
|
|
6
7
|
def appropriate?
|
|
7
8
|
if rbd_cache_name &&
|
|
8
|
-
|
|
9
|
+
rbd_image_spec(from) == rbd_cache_name
|
|
9
10
|
return proposal
|
|
10
11
|
end
|
|
11
12
|
debug "#{self.class.name}: not appropriate"
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
require 'uri'
|
|
2
4
|
|
|
3
5
|
module Uricp::Strategy
|
|
4
6
|
class RbdCacheCheck
|
|
5
7
|
include Uricp::Strategy::Common
|
|
6
8
|
include Uricp::Strategy::CacheCommon
|
|
7
|
-
include Methadone::SH
|
|
8
9
|
|
|
9
10
|
def appropriate?
|
|
10
11
|
unless (from.scheme == 'rbd') != (to.scheme == 'rbd')
|
|
@@ -1,14 +1,15 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
module Uricp::Strategy
|
|
2
4
|
class RbdCacheUpload
|
|
3
5
|
include Uricp::Strategy::Common
|
|
4
|
-
include Methadone::SH
|
|
5
6
|
|
|
6
7
|
def appropriate?
|
|
7
8
|
if compression_required? || conversion_required?
|
|
8
9
|
debug "#{self.class.name}: not ready to upload"
|
|
9
10
|
return false
|
|
10
11
|
end
|
|
11
|
-
if
|
|
12
|
+
if rbd_cache_upload_available?
|
|
12
13
|
case from.scheme
|
|
13
14
|
when 'pipe', 'file'
|
|
14
15
|
return proposal if to.scheme == 'rbd'
|
|
@@ -19,7 +20,7 @@ module Uricp::Strategy
|
|
|
19
20
|
end
|
|
20
21
|
|
|
21
22
|
def command
|
|
22
|
-
"rbd import --no-progress --id #{rbd_id}
|
|
23
|
+
"rbd import --no-progress --id #{rbd_id} -#{data_source} '#{rbd_cache_name}';"
|
|
23
24
|
end
|
|
24
25
|
|
|
25
26
|
def proposal
|
|
@@ -29,12 +30,8 @@ module Uricp::Strategy
|
|
|
29
30
|
end
|
|
30
31
|
|
|
31
32
|
def data_source
|
|
32
|
-
if from.scheme == 'pipe'
|
|
33
|
-
|
|
34
|
-
else
|
|
35
|
-
"'#{from.path}'"
|
|
36
|
-
end
|
|
33
|
+
return if from.scheme == 'pipe'
|
|
34
|
+
" <'#{from.path}'"
|
|
37
35
|
end
|
|
38
|
-
|
|
39
36
|
end
|
|
40
37
|
end
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
require 'uri'
|
|
2
4
|
|
|
3
5
|
module Uricp::Strategy
|
|
4
6
|
class RbdCachedGet
|
|
5
7
|
include Uricp::Strategy::Common
|
|
6
8
|
include Uricp::Strategy::CacheCommon
|
|
7
|
-
include Methadone::SH
|
|
8
9
|
|
|
9
10
|
def appropriate?
|
|
10
11
|
if from.scheme != 'rbd' || rbd_snapshot_spec?(from)
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
module Uricp::Strategy
|
|
2
4
|
class RbdCachedPut
|
|
3
5
|
include Uricp::Strategy::Common
|
|
@@ -5,16 +7,18 @@ module Uricp::Strategy
|
|
|
5
7
|
|
|
6
8
|
def appropriate?
|
|
7
9
|
return proposal if to.scheme == 'rbd' &&
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
10
|
+
rbd_snapshot_spec?(from) &&
|
|
11
|
+
rbd_cache_name.nil? &&
|
|
12
|
+
!rbd_sequence_complete?
|
|
11
13
|
|
|
12
14
|
debug "#{self.class.name}: not appropriate"
|
|
13
15
|
false
|
|
14
16
|
end
|
|
15
17
|
|
|
16
18
|
def command
|
|
17
|
-
"rbd clone --id #{rbd_id} '#{rbd_image_spec(from)}'
|
|
19
|
+
"rbd clone --id #{rbd_id} '#{rbd_image_spec(from)}' "\
|
|
20
|
+
"'#{rbd_image_spec(to)}' || [ $? -eq 22 ] && "\
|
|
21
|
+
"rbd create --id #{rbd_id} -s 0 '#{rbd_image_spec(to)}';"
|
|
18
22
|
end
|
|
19
23
|
|
|
20
24
|
def proposal
|
|
@@ -27,6 +31,5 @@ module Uricp::Strategy
|
|
|
27
31
|
end
|
|
28
32
|
self
|
|
29
33
|
end
|
|
30
|
-
|
|
31
34
|
end
|
|
32
35
|
end
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
module Uricp::Strategy
|
|
2
4
|
class RbdPut
|
|
3
5
|
include Uricp::Strategy::Common
|
|
@@ -7,18 +9,20 @@ module Uricp::Strategy
|
|
|
7
9
|
debug "#{self.class.name}: not ready to upload"
|
|
8
10
|
return false
|
|
9
11
|
end
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
12
|
+
if rbd_cache_upload_available?
|
|
13
|
+
debug "#{self.class.name}: cacheing in RBD instead"
|
|
14
|
+
return false
|
|
15
|
+
end
|
|
16
|
+
case from.scheme
|
|
17
|
+
when 'pipe', 'file'
|
|
18
|
+
return proposal if to.scheme == 'rbd'
|
|
15
19
|
end
|
|
16
20
|
debug "#{self.class.name}: not appropriate"
|
|
17
21
|
false
|
|
18
22
|
end
|
|
19
23
|
|
|
20
24
|
def command
|
|
21
|
-
"rbd import --no-progress --id #{rbd_id}
|
|
25
|
+
"rbd import --no-progress --id #{rbd_id} -#{data_source} '#{rbd_image_spec(to)}';"
|
|
22
26
|
end
|
|
23
27
|
|
|
24
28
|
def proposal
|
|
@@ -28,11 +32,8 @@ module Uricp::Strategy
|
|
|
28
32
|
end
|
|
29
33
|
|
|
30
34
|
def data_source
|
|
31
|
-
if from.scheme == 'pipe'
|
|
32
|
-
|
|
33
|
-
else
|
|
34
|
-
"'#{from.path}'"
|
|
35
|
-
end
|
|
35
|
+
return if from.scheme == 'pipe'
|
|
36
|
+
" <'#{from.path}'"
|
|
36
37
|
end
|
|
37
38
|
end
|
|
38
39
|
end
|
|
@@ -1,17 +1,18 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
require 'json'
|
|
2
4
|
module Uricp::Strategy
|
|
3
5
|
class RbdSnap
|
|
4
6
|
include Uricp::Strategy::Common
|
|
5
7
|
include Uricp::Strategy::CacheCommon
|
|
6
|
-
include Methadone::SH
|
|
7
8
|
|
|
8
9
|
def appropriate?
|
|
9
10
|
without_active_cache do
|
|
10
11
|
if from.scheme == 'rbd' &&
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
12
|
+
options['rbd_snapshot'].nil? &&
|
|
13
|
+
!rbd_snapshot_spec?(from) &&
|
|
14
|
+
(rbd_cache_name.nil? ||
|
|
15
|
+
!from.path.include?(rbd_cache_name))
|
|
15
16
|
if snap_in_progress?
|
|
16
17
|
debug "#{self.class.name}: detected snapshot in progress"
|
|
17
18
|
else
|
data/lib/uricp/uri_strategy.rb
CHANGED
data/lib/uricp/version.rb
CHANGED
data/uricp.gemspec
CHANGED
|
@@ -1,32 +1,32 @@
|
|
|
1
|
-
#
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
2
3
|
lib = File.expand_path('../lib', __FILE__)
|
|
3
4
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
4
5
|
require 'uricp/version'
|
|
5
6
|
|
|
6
7
|
Gem::Specification.new do |spec|
|
|
7
|
-
spec.name =
|
|
8
|
+
spec.name = 'uricp'
|
|
8
9
|
spec.version = Uricp::VERSION
|
|
9
|
-
spec.authors = [
|
|
10
|
-
spec.email = [
|
|
11
|
-
spec.summary =
|
|
12
|
-
spec.description =
|
|
13
|
-
spec.homepage =
|
|
14
|
-
spec.license =
|
|
10
|
+
spec.authors = ['Neil Wilson']
|
|
11
|
+
spec.email = ['neil@aldur.co.uk']
|
|
12
|
+
spec.summary = 'Copy one URL to another with optional cacheing'
|
|
13
|
+
spec.description = 'Copy one URL to another with optional cacheing'
|
|
14
|
+
spec.homepage = ''
|
|
15
|
+
spec.license = 'gplv3'
|
|
15
16
|
|
|
16
17
|
spec.files = `git ls-files -z`.split("\x0")
|
|
17
18
|
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
|
18
19
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
|
19
|
-
spec.require_paths = [
|
|
20
|
+
spec.require_paths = ['lib']
|
|
20
21
|
|
|
21
|
-
spec.add_development_dependency "bundler", "~> 1.7"
|
|
22
|
-
spec.add_development_dependency('rdoc', '~> 4.2.0')
|
|
23
22
|
spec.add_development_dependency('aruba', '~> 0.6.0')
|
|
23
|
+
spec.add_development_dependency 'bundler', '~> 1.7'
|
|
24
24
|
spec.add_development_dependency('cucumber', '~> 1.3')
|
|
25
|
+
spec.add_development_dependency('inifile', '~> 1.1')
|
|
25
26
|
spec.add_development_dependency('rake', '~> 12.3')
|
|
27
|
+
spec.add_development_dependency('rdoc', '~> 4.2.0')
|
|
26
28
|
spec.add_dependency('childprocess', '~> 1.0')
|
|
29
|
+
spec.add_dependency('filesize', '= 0.0.2')
|
|
27
30
|
spec.add_dependency('methadone', '~> 2.0.2')
|
|
28
31
|
spec.add_dependency('open4', '~> 1.3.0')
|
|
29
|
-
spec.add_dependency('filesize', '= 0.0.2')
|
|
30
|
-
spec.add_dependency('sendfile', '~> 1.2.0')
|
|
31
|
-
spec.add_development_dependency('inifile', '~> 1.1')
|
|
32
32
|
end
|
metadata
CHANGED
|
@@ -1,71 +1,71 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: uricp
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.0.
|
|
4
|
+
version: 0.0.27
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Neil Wilson
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2022-02-15 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
|
-
name:
|
|
14
|
+
name: aruba
|
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
|
16
16
|
requirements:
|
|
17
17
|
- - "~>"
|
|
18
18
|
- !ruby/object:Gem::Version
|
|
19
|
-
version:
|
|
19
|
+
version: 0.6.0
|
|
20
20
|
type: :development
|
|
21
21
|
prerelease: false
|
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
|
23
23
|
requirements:
|
|
24
24
|
- - "~>"
|
|
25
25
|
- !ruby/object:Gem::Version
|
|
26
|
-
version:
|
|
26
|
+
version: 0.6.0
|
|
27
27
|
- !ruby/object:Gem::Dependency
|
|
28
|
-
name:
|
|
28
|
+
name: bundler
|
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
|
30
30
|
requirements:
|
|
31
31
|
- - "~>"
|
|
32
32
|
- !ruby/object:Gem::Version
|
|
33
|
-
version:
|
|
33
|
+
version: '1.7'
|
|
34
34
|
type: :development
|
|
35
35
|
prerelease: false
|
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
|
37
37
|
requirements:
|
|
38
38
|
- - "~>"
|
|
39
39
|
- !ruby/object:Gem::Version
|
|
40
|
-
version:
|
|
40
|
+
version: '1.7'
|
|
41
41
|
- !ruby/object:Gem::Dependency
|
|
42
|
-
name:
|
|
42
|
+
name: cucumber
|
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
|
44
44
|
requirements:
|
|
45
45
|
- - "~>"
|
|
46
46
|
- !ruby/object:Gem::Version
|
|
47
|
-
version:
|
|
47
|
+
version: '1.3'
|
|
48
48
|
type: :development
|
|
49
49
|
prerelease: false
|
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
|
51
51
|
requirements:
|
|
52
52
|
- - "~>"
|
|
53
53
|
- !ruby/object:Gem::Version
|
|
54
|
-
version:
|
|
54
|
+
version: '1.3'
|
|
55
55
|
- !ruby/object:Gem::Dependency
|
|
56
|
-
name:
|
|
56
|
+
name: inifile
|
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
|
58
58
|
requirements:
|
|
59
59
|
- - "~>"
|
|
60
60
|
- !ruby/object:Gem::Version
|
|
61
|
-
version: '1.
|
|
61
|
+
version: '1.1'
|
|
62
62
|
type: :development
|
|
63
63
|
prerelease: false
|
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
|
65
65
|
requirements:
|
|
66
66
|
- - "~>"
|
|
67
67
|
- !ruby/object:Gem::Version
|
|
68
|
-
version: '1.
|
|
68
|
+
version: '1.1'
|
|
69
69
|
- !ruby/object:Gem::Dependency
|
|
70
70
|
name: rake
|
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -81,47 +81,33 @@ dependencies:
|
|
|
81
81
|
- !ruby/object:Gem::Version
|
|
82
82
|
version: '12.3'
|
|
83
83
|
- !ruby/object:Gem::Dependency
|
|
84
|
-
name:
|
|
85
|
-
requirement: !ruby/object:Gem::Requirement
|
|
86
|
-
requirements:
|
|
87
|
-
- - "~>"
|
|
88
|
-
- !ruby/object:Gem::Version
|
|
89
|
-
version: '1.0'
|
|
90
|
-
type: :runtime
|
|
91
|
-
prerelease: false
|
|
92
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
93
|
-
requirements:
|
|
94
|
-
- - "~>"
|
|
95
|
-
- !ruby/object:Gem::Version
|
|
96
|
-
version: '1.0'
|
|
97
|
-
- !ruby/object:Gem::Dependency
|
|
98
|
-
name: methadone
|
|
84
|
+
name: rdoc
|
|
99
85
|
requirement: !ruby/object:Gem::Requirement
|
|
100
86
|
requirements:
|
|
101
87
|
- - "~>"
|
|
102
88
|
- !ruby/object:Gem::Version
|
|
103
|
-
version: 2.0
|
|
104
|
-
type: :
|
|
89
|
+
version: 4.2.0
|
|
90
|
+
type: :development
|
|
105
91
|
prerelease: false
|
|
106
92
|
version_requirements: !ruby/object:Gem::Requirement
|
|
107
93
|
requirements:
|
|
108
94
|
- - "~>"
|
|
109
95
|
- !ruby/object:Gem::Version
|
|
110
|
-
version: 2.0
|
|
96
|
+
version: 4.2.0
|
|
111
97
|
- !ruby/object:Gem::Dependency
|
|
112
|
-
name:
|
|
98
|
+
name: childprocess
|
|
113
99
|
requirement: !ruby/object:Gem::Requirement
|
|
114
100
|
requirements:
|
|
115
101
|
- - "~>"
|
|
116
102
|
- !ruby/object:Gem::Version
|
|
117
|
-
version: 1.
|
|
103
|
+
version: '1.0'
|
|
118
104
|
type: :runtime
|
|
119
105
|
prerelease: false
|
|
120
106
|
version_requirements: !ruby/object:Gem::Requirement
|
|
121
107
|
requirements:
|
|
122
108
|
- - "~>"
|
|
123
109
|
- !ruby/object:Gem::Version
|
|
124
|
-
version: 1.
|
|
110
|
+
version: '1.0'
|
|
125
111
|
- !ruby/object:Gem::Dependency
|
|
126
112
|
name: filesize
|
|
127
113
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -137,33 +123,33 @@ dependencies:
|
|
|
137
123
|
- !ruby/object:Gem::Version
|
|
138
124
|
version: 0.0.2
|
|
139
125
|
- !ruby/object:Gem::Dependency
|
|
140
|
-
name:
|
|
126
|
+
name: methadone
|
|
141
127
|
requirement: !ruby/object:Gem::Requirement
|
|
142
128
|
requirements:
|
|
143
129
|
- - "~>"
|
|
144
130
|
- !ruby/object:Gem::Version
|
|
145
|
-
version:
|
|
131
|
+
version: 2.0.2
|
|
146
132
|
type: :runtime
|
|
147
133
|
prerelease: false
|
|
148
134
|
version_requirements: !ruby/object:Gem::Requirement
|
|
149
135
|
requirements:
|
|
150
136
|
- - "~>"
|
|
151
137
|
- !ruby/object:Gem::Version
|
|
152
|
-
version:
|
|
138
|
+
version: 2.0.2
|
|
153
139
|
- !ruby/object:Gem::Dependency
|
|
154
|
-
name:
|
|
140
|
+
name: open4
|
|
155
141
|
requirement: !ruby/object:Gem::Requirement
|
|
156
142
|
requirements:
|
|
157
143
|
- - "~>"
|
|
158
144
|
- !ruby/object:Gem::Version
|
|
159
|
-
version:
|
|
160
|
-
type: :
|
|
145
|
+
version: 1.3.0
|
|
146
|
+
type: :runtime
|
|
161
147
|
prerelease: false
|
|
162
148
|
version_requirements: !ruby/object:Gem::Requirement
|
|
163
149
|
requirements:
|
|
164
150
|
- - "~>"
|
|
165
151
|
- !ruby/object:Gem::Version
|
|
166
|
-
version:
|
|
152
|
+
version: 1.3.0
|
|
167
153
|
description: Copy one URL to another with optional cacheing
|
|
168
154
|
email:
|
|
169
155
|
- neil@aldur.co.uk
|