photocopier 1.3.3.pre3 → 1.4.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 +5 -5
- data/.github/workflows/ruby.yml +33 -0
- data/.rubocop.yml +37 -11
- data/.ruby-version +1 -1
- data/README.md +1 -1
- data/Rakefile +5 -5
- data/lib/photocopier.rb +5 -6
- data/lib/photocopier/adapter.rb +4 -5
- data/lib/photocopier/ftp.rb +12 -10
- data/lib/photocopier/ssh.rb +27 -28
- data/lib/photocopier/version.rb +1 -1
- data/photocopier.gemspec +31 -23
- metadata +69 -59
- data/.ruby-gemset +0 -1
- data/.travis.yml +0 -5
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
|
-
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
2
|
+
SHA256:
|
|
3
|
+
metadata.gz: 777855dbc8e43b1f8047e8e4e1216f033157362dec70b88e90f36db3ba74f260
|
|
4
|
+
data.tar.gz: c40c5471fe3896b29ef9d8d3dd719083ad4a4d09dfc85dcb297cfffa69f8ce20
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: e98bc1a0f6c4c37bce0fd18a112cb8f96504093641bfe52a917bcf89b45b20f8f7afa61db9aea2d8fec6bbfbdb970293110599d4575f511b70d1b3748ab32ea5
|
|
7
|
+
data.tar.gz: 149f452aef5032c1927083e975f5714b20b829b026954d5f33e9e990eafe7d5529e271f0039caa1139748b0af48601acc21b5cfc33a0c2ff7033a75b83930b60
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# This workflow will download a prebuilt Ruby version, install dependencies and run tests with Rake
|
|
2
|
+
# For more information see: https://github.com/marketplace/actions/setup-ruby-jruby-and-truffleruby
|
|
3
|
+
|
|
4
|
+
name: Ruby
|
|
5
|
+
|
|
6
|
+
on:
|
|
7
|
+
push:
|
|
8
|
+
branches: [ master ]
|
|
9
|
+
pull_request:
|
|
10
|
+
branches: [ master ]
|
|
11
|
+
|
|
12
|
+
jobs:
|
|
13
|
+
test:
|
|
14
|
+
|
|
15
|
+
runs-on: ubuntu-latest
|
|
16
|
+
strategy:
|
|
17
|
+
fail-fast: false
|
|
18
|
+
matrix:
|
|
19
|
+
ruby: [2.6.0, 2.7.1]
|
|
20
|
+
steps:
|
|
21
|
+
- uses: actions/checkout@v2
|
|
22
|
+
- name: Set up Ruby
|
|
23
|
+
# To automatically get bug fixes and new Ruby versions for ruby/setup-ruby,
|
|
24
|
+
# change this to (see https://github.com/ruby/setup-ruby#versioning):
|
|
25
|
+
# uses: ruby/setup-ruby@v1
|
|
26
|
+
uses: ruby/setup-ruby@21351ecc0a7c196081abca5dc55b08f085efe09a
|
|
27
|
+
with:
|
|
28
|
+
ruby-version: ${{ matrix.ruby }}
|
|
29
|
+
bundler-cache: true
|
|
30
|
+
- name: Install dependencies
|
|
31
|
+
run: bundle install
|
|
32
|
+
- name: Run tests
|
|
33
|
+
run: bundle exec rake
|
data/.rubocop.yml
CHANGED
|
@@ -1,18 +1,16 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
Rails/Output:
|
|
5
|
-
Enabled: false
|
|
1
|
+
inherit_mode:
|
|
2
|
+
merge:
|
|
3
|
+
- Exclude
|
|
6
4
|
|
|
7
5
|
AllCops:
|
|
8
|
-
TargetRubyVersion: 2.
|
|
6
|
+
TargetRubyVersion: 2.6
|
|
9
7
|
DisplayCopNames: true
|
|
10
8
|
DisplayStyleGuide: true
|
|
11
9
|
|
|
12
10
|
Exclude:
|
|
13
11
|
- 'bin/*'
|
|
14
12
|
|
|
15
|
-
|
|
13
|
+
Layout/LineLength:
|
|
16
14
|
Max: 100
|
|
17
15
|
|
|
18
16
|
Metrics/MethodLength:
|
|
@@ -25,6 +23,7 @@ Metrics/BlockLength:
|
|
|
25
23
|
Exclude:
|
|
26
24
|
- 'spec/**/*_spec.rb'
|
|
27
25
|
- 'spec/factories/*.rb'
|
|
26
|
+
- 'spec/support/shared_examples/*.rb'
|
|
28
27
|
- '*.gemspec'
|
|
29
28
|
|
|
30
29
|
Metrics/CyclomaticComplexity:
|
|
@@ -33,10 +32,6 @@ Metrics/CyclomaticComplexity:
|
|
|
33
32
|
Metrics/PerceivedComplexity:
|
|
34
33
|
Max: 10
|
|
35
34
|
|
|
36
|
-
Style/StringLiterals:
|
|
37
|
-
Enabled: false
|
|
38
|
-
EnforcedStyle: double_quotes
|
|
39
|
-
|
|
40
35
|
Style/Documentation:
|
|
41
36
|
Enabled: false
|
|
42
37
|
|
|
@@ -45,3 +40,34 @@ Style/FrozenStringLiteralComment:
|
|
|
45
40
|
|
|
46
41
|
Metrics/AbcSize:
|
|
47
42
|
Max: 40
|
|
43
|
+
|
|
44
|
+
Lint/DuplicateBranch: # (new in 1.3)
|
|
45
|
+
Enabled: true
|
|
46
|
+
Lint/DuplicateRegexpCharacterClassElement: # (new in 1.1)
|
|
47
|
+
Enabled: true
|
|
48
|
+
Lint/EmptyBlock: # (new in 1.1)
|
|
49
|
+
Enabled: true
|
|
50
|
+
Lint/EmptyClass: # (new in 1.3)
|
|
51
|
+
Enabled: true
|
|
52
|
+
Lint/NoReturnInBeginEndBlocks: # (new in 1.2)
|
|
53
|
+
Enabled: true
|
|
54
|
+
Lint/ToEnumArguments: # (new in 1.1)
|
|
55
|
+
Enabled: true
|
|
56
|
+
Lint/UnexpectedBlockArity: # (new in 1.5)
|
|
57
|
+
Enabled: true
|
|
58
|
+
Lint/UnmodifiedReduceAccumulator: # (new in 1.1)
|
|
59
|
+
Enabled: true
|
|
60
|
+
Style/ArgumentsForwarding: # (new in 1.1)
|
|
61
|
+
Enabled: true
|
|
62
|
+
Style/CollectionCompact: # (new in 1.2)
|
|
63
|
+
Enabled: true
|
|
64
|
+
Style/DocumentDynamicEvalDefinition: # (new in 1.1)
|
|
65
|
+
Enabled: true
|
|
66
|
+
Style/NegatedIfElseCondition: # (new in 1.2)
|
|
67
|
+
Enabled: true
|
|
68
|
+
Style/NilLambda: # (new in 1.3)
|
|
69
|
+
Enabled: true
|
|
70
|
+
Style/RedundantArgument: # (new in 1.4)
|
|
71
|
+
Enabled: true
|
|
72
|
+
Style/SwapValues: # (new in 1.1)
|
|
73
|
+
Enabled: true
|
data/.ruby-version
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
2.
|
|
1
|
+
2.6.0
|
data/README.md
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Photocopier provides handy FTP/SSH adapters to abstract away file and directory copying.
|
|
4
4
|
To move directories to/from the remote server, it wraps efficient tools like lftp and rsync.
|
|
5
5
|
|
|
6
|
-
|
|
6
|
+

|
|
7
7
|
|
|
8
8
|
## Prerequisites
|
|
9
9
|
|
data/Rakefile
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
require
|
|
2
|
-
require
|
|
3
|
-
|
|
1
|
+
require 'bundler/gem_tasks'
|
|
2
|
+
require 'rspec/core/rake_task'
|
|
3
|
+
require 'rubocop/rake_task'
|
|
4
4
|
|
|
5
5
|
RSpec::Core::RakeTask.new(:spec)
|
|
6
6
|
task default: :spec
|
|
7
|
-
|
|
8
|
-
|
|
7
|
+
RuboCop::RakeTask.new(:rubocop)
|
|
8
|
+
task default: :rubocop
|
data/lib/photocopier.rb
CHANGED
|
@@ -6,12 +6,11 @@ require 'net/sftp'
|
|
|
6
6
|
require 'net/ssh'
|
|
7
7
|
require 'net/ssh/gateway'
|
|
8
8
|
require 'net/scp'
|
|
9
|
-
require 'fileutils'
|
|
10
9
|
require 'shellwords'
|
|
11
|
-
require
|
|
12
|
-
require
|
|
10
|
+
require 'active_support'
|
|
11
|
+
require 'active_support/core_ext'
|
|
13
12
|
|
|
14
13
|
require 'photocopier/adapter'
|
|
15
|
-
require
|
|
16
|
-
require
|
|
17
|
-
require
|
|
14
|
+
require 'photocopier/ssh'
|
|
15
|
+
require 'photocopier/ftp'
|
|
16
|
+
require 'photocopier/ftp/session'
|
data/lib/photocopier/adapter.rb
CHANGED
|
@@ -3,7 +3,7 @@ module Photocopier
|
|
|
3
3
|
attr_accessor :logger
|
|
4
4
|
|
|
5
5
|
def put(file_path_or_string, remote_path)
|
|
6
|
-
if File.
|
|
6
|
+
if File.exist? file_path_or_string
|
|
7
7
|
put_file(file_path_or_string, remote_path)
|
|
8
8
|
else
|
|
9
9
|
file = Tempfile.new('put')
|
|
@@ -15,9 +15,11 @@ module Photocopier
|
|
|
15
15
|
end
|
|
16
16
|
|
|
17
17
|
def put_file(file_path, remote_path); end
|
|
18
|
+
|
|
18
19
|
def put_directory(local_path, remote_path, exclude = []); end
|
|
19
20
|
|
|
20
21
|
def get(remote_path, file_path = nil); end
|
|
22
|
+
|
|
21
23
|
def get_directory(remote_path, local_path, exclude = []); end
|
|
22
24
|
|
|
23
25
|
def delete(remote_path); end
|
|
@@ -25,11 +27,8 @@ module Photocopier
|
|
|
25
27
|
protected
|
|
26
28
|
|
|
27
29
|
def run(command)
|
|
28
|
-
if logger.present?
|
|
29
|
-
logger.info command
|
|
30
|
-
end
|
|
30
|
+
logger.info command if logger.present?
|
|
31
31
|
system command
|
|
32
32
|
end
|
|
33
33
|
end
|
|
34
|
-
|
|
35
34
|
end
|
data/lib/photocopier/ftp.rb
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
module Photocopier
|
|
2
2
|
class FTP < Adapter
|
|
3
|
+
# rubocop:disable Lint/MissingSuper
|
|
3
4
|
def initialize(options = {})
|
|
4
5
|
@options = options
|
|
5
6
|
end
|
|
7
|
+
# rubocop:enable Lint/MissingSuper
|
|
6
8
|
|
|
7
9
|
def options
|
|
8
10
|
@options.clone
|
|
@@ -49,37 +51,37 @@ module Photocopier
|
|
|
49
51
|
remote = Shellwords.escape(remote)
|
|
50
52
|
local = Shellwords.escape(local)
|
|
51
53
|
command = [
|
|
52
|
-
|
|
54
|
+
'set ftp:list-options -a',
|
|
53
55
|
"set ftp:passive-mode #{options[:passive] || 'false'}",
|
|
54
|
-
|
|
56
|
+
'set cmd:fail-exit true',
|
|
55
57
|
"open -p #{port || inferred_port} #{remote_ftp_url}",
|
|
56
58
|
"find -d 1 #{remote} || mkdir -p #{remote}",
|
|
57
59
|
"lcd #{local}",
|
|
58
60
|
"cd #{remote}",
|
|
59
61
|
lftp_mirror_arguments(reverse, exclude)
|
|
60
|
-
].join(
|
|
62
|
+
].join('; ')
|
|
61
63
|
|
|
62
64
|
run "lftp -c '#{command}'"
|
|
63
65
|
end
|
|
64
66
|
|
|
65
67
|
def remote_ftp_url
|
|
66
|
-
url = options[:scheme].dup.presence ||
|
|
67
|
-
url <<
|
|
68
|
+
url = options[:scheme].dup.presence || 'ftp'
|
|
69
|
+
url << '://'
|
|
68
70
|
if options[:user].present?
|
|
69
71
|
url << CGI.escape(options[:user])
|
|
70
72
|
url << ":#{CGI.escape(options[:password])}" if options[:password].present?
|
|
71
|
-
url <<
|
|
73
|
+
url << '@'
|
|
72
74
|
end
|
|
73
75
|
url << options[:host]
|
|
74
76
|
url
|
|
75
77
|
end
|
|
76
78
|
|
|
77
79
|
def lftp_mirror_arguments(reverse, exclude = [])
|
|
78
|
-
mirror =
|
|
79
|
-
|
|
80
|
-
mirror <<
|
|
80
|
+
mirror = 'mirror --delete --use-cache --verbose' \
|
|
81
|
+
' --no-perms --allow-suid --no-umask --parallel=5'
|
|
82
|
+
mirror << ' --reverse --dereference' if reverse
|
|
81
83
|
exclude.each do |glob|
|
|
82
|
-
mirror << " --exclude-glob #{glob}" # NOTE do not use Shellwords.escape here
|
|
84
|
+
mirror << " --exclude-glob #{glob}" # NOTE: do not use Shellwords.escape here
|
|
83
85
|
end
|
|
84
86
|
mirror
|
|
85
87
|
end
|
data/lib/photocopier/ssh.rb
CHANGED
|
@@ -2,11 +2,13 @@ module Photocopier
|
|
|
2
2
|
class SSH < Adapter
|
|
3
3
|
attr_reader :gateway_options, :rsync_options
|
|
4
4
|
|
|
5
|
+
# rubocop:disable Lint/MissingSuper
|
|
5
6
|
def initialize(options = {})
|
|
6
7
|
@options = options
|
|
7
8
|
@gateway_options = options.delete(:gateway)
|
|
8
9
|
@rsync_options = options.delete(:rsync_options)
|
|
9
10
|
end
|
|
11
|
+
# rubocop:enable Lint/MissingSuper
|
|
10
12
|
|
|
11
13
|
def options
|
|
12
14
|
@options.clone
|
|
@@ -26,21 +28,20 @@ module Photocopier
|
|
|
26
28
|
|
|
27
29
|
def get_directory(remote_path, local_path, exclude = [], includes = [])
|
|
28
30
|
FileUtils.mkdir_p(local_path)
|
|
29
|
-
remote_path <<
|
|
31
|
+
remote_path << '/' unless remote_path.end_with?('/')
|
|
30
32
|
rsync ":#{remote_path}", local_path, exclude, includes
|
|
31
33
|
end
|
|
32
34
|
|
|
33
35
|
def put_directory(local_path, remote_path, exclude = [], includes = [])
|
|
34
|
-
local_path <<
|
|
36
|
+
local_path << '/' unless local_path.end_with?('/')
|
|
35
37
|
rsync local_path.to_s, ":#{remote_path}", exclude, includes
|
|
36
38
|
end
|
|
37
39
|
|
|
38
40
|
def exec!(cmd)
|
|
39
|
-
stdout =
|
|
40
|
-
stderr =
|
|
41
|
+
stdout = ''
|
|
42
|
+
stderr = ''
|
|
41
43
|
exit_code = nil
|
|
42
|
-
|
|
43
|
-
my_session.open_channel do |channel|
|
|
44
|
+
session.open_channel do |channel|
|
|
44
45
|
channel.exec(cmd) do |_ch, _success|
|
|
45
46
|
channel.on_data do |_ch, data|
|
|
46
47
|
stdout << data
|
|
@@ -48,14 +49,12 @@ module Photocopier
|
|
|
48
49
|
channel.on_extended_data do |_ch, _type, data|
|
|
49
50
|
stderr << data
|
|
50
51
|
end
|
|
51
|
-
channel.on_request(
|
|
52
|
+
channel.on_request('exit-status') do |_ch, data|
|
|
52
53
|
exit_code = data.read_long
|
|
53
54
|
end
|
|
54
55
|
end
|
|
55
|
-
|
|
56
|
-
channel.wait
|
|
57
56
|
end
|
|
58
|
-
|
|
57
|
+
session.loop
|
|
59
58
|
[stdout, stderr, exit_code]
|
|
60
59
|
end
|
|
61
60
|
|
|
@@ -66,23 +65,23 @@ module Photocopier
|
|
|
66
65
|
host = opts.delete(:host)
|
|
67
66
|
user = opts.delete(:user)
|
|
68
67
|
|
|
69
|
-
if gateway_options
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
68
|
+
@session ||= if gateway_options
|
|
69
|
+
gateway.ssh(host, user, opts)
|
|
70
|
+
else
|
|
71
|
+
Net::SSH.start(host, user, opts)
|
|
72
|
+
end
|
|
74
73
|
end
|
|
75
74
|
|
|
76
75
|
def rsync_command
|
|
77
76
|
command = [
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
77
|
+
'rsync',
|
|
78
|
+
'--progress',
|
|
79
|
+
'-e',
|
|
81
80
|
"'#{rsh_arguments}'",
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
81
|
+
'-rlpt',
|
|
82
|
+
'--compress',
|
|
83
|
+
'--omit-dir-times',
|
|
84
|
+
'--delete'
|
|
86
85
|
]
|
|
87
86
|
command.concat Shellwords.split(rsync_options).map(&:shellescape) if rsync_options
|
|
88
87
|
command.compact
|
|
@@ -92,30 +91,30 @@ module Photocopier
|
|
|
92
91
|
command = rsync_command
|
|
93
92
|
|
|
94
93
|
includes.each do |glob|
|
|
95
|
-
command <<
|
|
94
|
+
command << '--include'
|
|
96
95
|
command << Shellwords.escape(glob)
|
|
97
96
|
end
|
|
98
97
|
|
|
99
98
|
exclude.each do |glob|
|
|
100
|
-
command <<
|
|
99
|
+
command << '--exclude'
|
|
101
100
|
command << Shellwords.escape(glob)
|
|
102
101
|
end
|
|
103
102
|
|
|
104
103
|
command << Shellwords.escape(source)
|
|
105
104
|
command << Shellwords.escape(destination)
|
|
106
105
|
|
|
107
|
-
run command.join(
|
|
106
|
+
run command.join(' ')
|
|
108
107
|
end
|
|
109
108
|
|
|
110
109
|
def rsh_arguments
|
|
111
110
|
arguments = []
|
|
112
111
|
arguments << ssh_command(gateway_options) if gateway_options
|
|
113
112
|
arguments << ssh_command(options)
|
|
114
|
-
arguments.join(
|
|
113
|
+
arguments.join(' ')
|
|
115
114
|
end
|
|
116
115
|
|
|
117
116
|
def ssh_command(opts)
|
|
118
|
-
command =
|
|
117
|
+
command = 'ssh '
|
|
119
118
|
command << "-p #{opts[:port]} " if opts[:port].present?
|
|
120
119
|
command << "#{opts[:user]}@" if opts[:user].present?
|
|
121
120
|
command << opts[:host]
|
|
@@ -131,7 +130,7 @@ module Photocopier
|
|
|
131
130
|
host = opts.delete(:host)
|
|
132
131
|
user = opts.delete(:user)
|
|
133
132
|
|
|
134
|
-
Net::SSH::Gateway.new(host, user, opts)
|
|
133
|
+
@gateway ||= Net::SSH::Gateway.new(host, user, opts)
|
|
135
134
|
end
|
|
136
135
|
end
|
|
137
136
|
end
|
data/lib/photocopier/version.rb
CHANGED
data/photocopier.gemspec
CHANGED
|
@@ -1,34 +1,42 @@
|
|
|
1
|
-
lib = File.expand_path('
|
|
1
|
+
lib = File.expand_path('lib', __dir__)
|
|
2
2
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
3
|
-
require
|
|
3
|
+
require 'photocopier/version'
|
|
4
4
|
|
|
5
5
|
Gem::Specification.new do |spec|
|
|
6
|
-
spec.name =
|
|
6
|
+
spec.name = 'photocopier'
|
|
7
7
|
spec.version = Photocopier::VERSION
|
|
8
|
-
spec.authors = [
|
|
9
|
-
spec.email = [
|
|
8
|
+
spec.authors = ['Stefano Verna', 'Ju Liu', 'Fabrizio Monti']
|
|
9
|
+
spec.email = ['stefano.verna@welaika.com', 'ju.liu@welaika.com',
|
|
10
|
+
'fabrizio.monti@welaika.com']
|
|
10
11
|
|
|
11
|
-
spec.summary = 'Photocopier provides FTP/SSH adapters to abstract away file and
|
|
12
|
-
|
|
13
|
-
spec.
|
|
14
|
-
|
|
12
|
+
spec.summary = 'Photocopier provides FTP/SSH adapters to abstract away file and ' \
|
|
13
|
+
'directory copying.'
|
|
14
|
+
spec.description = 'Photocopier provides FTP/SSH adapters to abstract away file and ' \
|
|
15
|
+
'directory copying.'
|
|
16
|
+
spec.homepage = 'https://github.com/welaika/photocopier'
|
|
17
|
+
spec.license = 'MIT'
|
|
15
18
|
|
|
16
|
-
spec.files = `git ls-files -z`.split("\x0").reject
|
|
17
|
-
|
|
19
|
+
spec.files = `git ls-files -z`.split("\x0").reject do |f|
|
|
20
|
+
f.match(%r{^(test|spec|features)/})
|
|
21
|
+
end
|
|
22
|
+
spec.bindir = 'exe'
|
|
18
23
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
|
19
|
-
spec.require_paths = [
|
|
24
|
+
spec.require_paths = ['lib']
|
|
20
25
|
|
|
21
|
-
spec.required_ruby_version =
|
|
26
|
+
spec.required_ruby_version = '>= 2.6.0'
|
|
22
27
|
|
|
23
|
-
spec.add_dependency
|
|
24
|
-
spec.add_dependency
|
|
25
|
-
spec.add_dependency
|
|
26
|
-
spec.add_dependency
|
|
27
|
-
spec.add_dependency
|
|
28
|
+
spec.add_dependency 'activesupport', '~> 6.1'
|
|
29
|
+
spec.add_dependency 'net-scp', '~> 3.0'
|
|
30
|
+
spec.add_dependency 'net-sftp', '~> 3.0'
|
|
31
|
+
spec.add_dependency 'net-ssh', '~> 6.1'
|
|
32
|
+
spec.add_dependency 'net-ssh-gateway', '~> 2.0'
|
|
28
33
|
|
|
29
|
-
spec.add_development_dependency
|
|
30
|
-
spec.add_development_dependency
|
|
31
|
-
spec.add_development_dependency
|
|
32
|
-
spec.add_development_dependency
|
|
33
|
-
spec.add_development_dependency
|
|
34
|
+
spec.add_development_dependency 'bundler', '~> 2.2'
|
|
35
|
+
spec.add_development_dependency 'pry-byebug', '~> 3.9'
|
|
36
|
+
spec.add_development_dependency 'rake', '~> 13.0'
|
|
37
|
+
spec.add_development_dependency 'rspec', '~> 3.10'
|
|
38
|
+
spec.add_development_dependency 'rubocop', '~> 1.6'
|
|
39
|
+
spec.add_development_dependency 'rubocop-rake', '~> 0.5'
|
|
40
|
+
spec.add_development_dependency 'rubocop-rspec', '~> 2.0'
|
|
41
|
+
spec.add_development_dependency 'simplecov', '~> 0.20'
|
|
34
42
|
end
|
metadata
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: photocopier
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.
|
|
4
|
+
version: 1.4.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Stefano Verna
|
|
8
8
|
- Ju Liu
|
|
9
9
|
- Fabrizio Monti
|
|
10
|
-
autorequire:
|
|
10
|
+
autorequire:
|
|
11
11
|
bindir: exe
|
|
12
12
|
cert_chain: []
|
|
13
|
-
date:
|
|
13
|
+
date: 2020-12-12 00:00:00.000000000 Z
|
|
14
14
|
dependencies:
|
|
15
15
|
- !ruby/object:Gem::Dependency
|
|
16
16
|
name: activesupport
|
|
@@ -18,68 +18,56 @@ dependencies:
|
|
|
18
18
|
requirements:
|
|
19
19
|
- - "~>"
|
|
20
20
|
- !ruby/object:Gem::Version
|
|
21
|
-
version: '
|
|
22
|
-
- - ">="
|
|
23
|
-
- !ruby/object:Gem::Version
|
|
24
|
-
version: 5.1.1
|
|
21
|
+
version: '6.1'
|
|
25
22
|
type: :runtime
|
|
26
23
|
prerelease: false
|
|
27
24
|
version_requirements: !ruby/object:Gem::Requirement
|
|
28
25
|
requirements:
|
|
29
26
|
- - "~>"
|
|
30
27
|
- !ruby/object:Gem::Version
|
|
31
|
-
version: '
|
|
32
|
-
- - ">="
|
|
33
|
-
- !ruby/object:Gem::Version
|
|
34
|
-
version: 5.1.1
|
|
28
|
+
version: '6.1'
|
|
35
29
|
- !ruby/object:Gem::Dependency
|
|
36
30
|
name: net-scp
|
|
37
31
|
requirement: !ruby/object:Gem::Requirement
|
|
38
32
|
requirements:
|
|
39
33
|
- - "~>"
|
|
40
34
|
- !ruby/object:Gem::Version
|
|
41
|
-
version: '
|
|
42
|
-
- - ">="
|
|
43
|
-
- !ruby/object:Gem::Version
|
|
44
|
-
version: 1.2.1
|
|
35
|
+
version: '3.0'
|
|
45
36
|
type: :runtime
|
|
46
37
|
prerelease: false
|
|
47
38
|
version_requirements: !ruby/object:Gem::Requirement
|
|
48
39
|
requirements:
|
|
49
40
|
- - "~>"
|
|
50
41
|
- !ruby/object:Gem::Version
|
|
51
|
-
version: '
|
|
52
|
-
- - ">="
|
|
53
|
-
- !ruby/object:Gem::Version
|
|
54
|
-
version: 1.2.1
|
|
42
|
+
version: '3.0'
|
|
55
43
|
- !ruby/object:Gem::Dependency
|
|
56
44
|
name: net-sftp
|
|
57
45
|
requirement: !ruby/object:Gem::Requirement
|
|
58
46
|
requirements:
|
|
59
47
|
- - "~>"
|
|
60
48
|
- !ruby/object:Gem::Version
|
|
61
|
-
version:
|
|
49
|
+
version: '3.0'
|
|
62
50
|
type: :runtime
|
|
63
51
|
prerelease: false
|
|
64
52
|
version_requirements: !ruby/object:Gem::Requirement
|
|
65
53
|
requirements:
|
|
66
54
|
- - "~>"
|
|
67
55
|
- !ruby/object:Gem::Version
|
|
68
|
-
version:
|
|
56
|
+
version: '3.0'
|
|
69
57
|
- !ruby/object:Gem::Dependency
|
|
70
58
|
name: net-ssh
|
|
71
59
|
requirement: !ruby/object:Gem::Requirement
|
|
72
60
|
requirements:
|
|
73
61
|
- - "~>"
|
|
74
62
|
- !ruby/object:Gem::Version
|
|
75
|
-
version: '
|
|
63
|
+
version: '6.1'
|
|
76
64
|
type: :runtime
|
|
77
65
|
prerelease: false
|
|
78
66
|
version_requirements: !ruby/object:Gem::Requirement
|
|
79
67
|
requirements:
|
|
80
68
|
- - "~>"
|
|
81
69
|
- !ruby/object:Gem::Version
|
|
82
|
-
version: '
|
|
70
|
+
version: '6.1'
|
|
83
71
|
- !ruby/object:Gem::Dependency
|
|
84
72
|
name: net-ssh-gateway
|
|
85
73
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -100,88 +88,112 @@ dependencies:
|
|
|
100
88
|
requirements:
|
|
101
89
|
- - "~>"
|
|
102
90
|
- !ruby/object:Gem::Version
|
|
103
|
-
version: '
|
|
104
|
-
- - ">="
|
|
105
|
-
- !ruby/object:Gem::Version
|
|
106
|
-
version: 1.14.6
|
|
91
|
+
version: '2.2'
|
|
107
92
|
type: :development
|
|
108
93
|
prerelease: false
|
|
109
94
|
version_requirements: !ruby/object:Gem::Requirement
|
|
110
95
|
requirements:
|
|
111
96
|
- - "~>"
|
|
112
97
|
- !ruby/object:Gem::Version
|
|
113
|
-
version: '
|
|
114
|
-
- - ">="
|
|
115
|
-
- !ruby/object:Gem::Version
|
|
116
|
-
version: 1.14.6
|
|
98
|
+
version: '2.2'
|
|
117
99
|
- !ruby/object:Gem::Dependency
|
|
118
100
|
name: pry-byebug
|
|
119
101
|
requirement: !ruby/object:Gem::Requirement
|
|
120
102
|
requirements:
|
|
121
103
|
- - "~>"
|
|
122
104
|
- !ruby/object:Gem::Version
|
|
123
|
-
version: '3.
|
|
124
|
-
- - ">="
|
|
125
|
-
- !ruby/object:Gem::Version
|
|
126
|
-
version: 3.4.2
|
|
105
|
+
version: '3.9'
|
|
127
106
|
type: :development
|
|
128
107
|
prerelease: false
|
|
129
108
|
version_requirements: !ruby/object:Gem::Requirement
|
|
130
109
|
requirements:
|
|
131
110
|
- - "~>"
|
|
132
111
|
- !ruby/object:Gem::Version
|
|
133
|
-
version: '3.
|
|
134
|
-
- - ">="
|
|
135
|
-
- !ruby/object:Gem::Version
|
|
136
|
-
version: 3.4.2
|
|
112
|
+
version: '3.9'
|
|
137
113
|
- !ruby/object:Gem::Dependency
|
|
138
114
|
name: rake
|
|
139
115
|
requirement: !ruby/object:Gem::Requirement
|
|
140
116
|
requirements:
|
|
141
117
|
- - "~>"
|
|
142
118
|
- !ruby/object:Gem::Version
|
|
143
|
-
version: '
|
|
119
|
+
version: '13.0'
|
|
144
120
|
type: :development
|
|
145
121
|
prerelease: false
|
|
146
122
|
version_requirements: !ruby/object:Gem::Requirement
|
|
147
123
|
requirements:
|
|
148
124
|
- - "~>"
|
|
149
125
|
- !ruby/object:Gem::Version
|
|
150
|
-
version: '
|
|
126
|
+
version: '13.0'
|
|
151
127
|
- !ruby/object:Gem::Dependency
|
|
152
128
|
name: rspec
|
|
153
129
|
requirement: !ruby/object:Gem::Requirement
|
|
154
130
|
requirements:
|
|
155
131
|
- - "~>"
|
|
156
132
|
- !ruby/object:Gem::Version
|
|
157
|
-
version: '3.
|
|
133
|
+
version: '3.10'
|
|
158
134
|
type: :development
|
|
159
135
|
prerelease: false
|
|
160
136
|
version_requirements: !ruby/object:Gem::Requirement
|
|
161
137
|
requirements:
|
|
162
138
|
- - "~>"
|
|
163
139
|
- !ruby/object:Gem::Version
|
|
164
|
-
version: '3.
|
|
140
|
+
version: '3.10'
|
|
165
141
|
- !ruby/object:Gem::Dependency
|
|
166
|
-
name:
|
|
142
|
+
name: rubocop
|
|
143
|
+
requirement: !ruby/object:Gem::Requirement
|
|
144
|
+
requirements:
|
|
145
|
+
- - "~>"
|
|
146
|
+
- !ruby/object:Gem::Version
|
|
147
|
+
version: '1.6'
|
|
148
|
+
type: :development
|
|
149
|
+
prerelease: false
|
|
150
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
151
|
+
requirements:
|
|
152
|
+
- - "~>"
|
|
153
|
+
- !ruby/object:Gem::Version
|
|
154
|
+
version: '1.6'
|
|
155
|
+
- !ruby/object:Gem::Dependency
|
|
156
|
+
name: rubocop-rake
|
|
167
157
|
requirement: !ruby/object:Gem::Requirement
|
|
168
158
|
requirements:
|
|
169
159
|
- - "~>"
|
|
170
160
|
- !ruby/object:Gem::Version
|
|
171
|
-
version: '0.
|
|
172
|
-
|
|
161
|
+
version: '0.5'
|
|
162
|
+
type: :development
|
|
163
|
+
prerelease: false
|
|
164
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
165
|
+
requirements:
|
|
166
|
+
- - "~>"
|
|
167
|
+
- !ruby/object:Gem::Version
|
|
168
|
+
version: '0.5'
|
|
169
|
+
- !ruby/object:Gem::Dependency
|
|
170
|
+
name: rubocop-rspec
|
|
171
|
+
requirement: !ruby/object:Gem::Requirement
|
|
172
|
+
requirements:
|
|
173
|
+
- - "~>"
|
|
173
174
|
- !ruby/object:Gem::Version
|
|
174
|
-
version: 0
|
|
175
|
+
version: '2.0'
|
|
175
176
|
type: :development
|
|
176
177
|
prerelease: false
|
|
177
178
|
version_requirements: !ruby/object:Gem::Requirement
|
|
178
179
|
requirements:
|
|
179
180
|
- - "~>"
|
|
180
181
|
- !ruby/object:Gem::Version
|
|
181
|
-
version: '0
|
|
182
|
-
|
|
182
|
+
version: '2.0'
|
|
183
|
+
- !ruby/object:Gem::Dependency
|
|
184
|
+
name: simplecov
|
|
185
|
+
requirement: !ruby/object:Gem::Requirement
|
|
186
|
+
requirements:
|
|
187
|
+
- - "~>"
|
|
188
|
+
- !ruby/object:Gem::Version
|
|
189
|
+
version: '0.20'
|
|
190
|
+
type: :development
|
|
191
|
+
prerelease: false
|
|
192
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
193
|
+
requirements:
|
|
194
|
+
- - "~>"
|
|
183
195
|
- !ruby/object:Gem::Version
|
|
184
|
-
version: 0.
|
|
196
|
+
version: '0.20'
|
|
185
197
|
description: Photocopier provides FTP/SSH adapters to abstract away file and directory
|
|
186
198
|
copying.
|
|
187
199
|
email:
|
|
@@ -192,12 +204,11 @@ executables: []
|
|
|
192
204
|
extensions: []
|
|
193
205
|
extra_rdoc_files: []
|
|
194
206
|
files:
|
|
207
|
+
- ".github/workflows/ruby.yml"
|
|
195
208
|
- ".gitignore"
|
|
196
209
|
- ".rspec"
|
|
197
210
|
- ".rubocop.yml"
|
|
198
|
-
- ".ruby-gemset"
|
|
199
211
|
- ".ruby-version"
|
|
200
|
-
- ".travis.yml"
|
|
201
212
|
- ".vscode/launch.json"
|
|
202
213
|
- CHANGELOG.md
|
|
203
214
|
- Gemfile
|
|
@@ -225,7 +236,7 @@ homepage: https://github.com/welaika/photocopier
|
|
|
225
236
|
licenses:
|
|
226
237
|
- MIT
|
|
227
238
|
metadata: {}
|
|
228
|
-
post_install_message:
|
|
239
|
+
post_install_message:
|
|
229
240
|
rdoc_options: []
|
|
230
241
|
require_paths:
|
|
231
242
|
- lib
|
|
@@ -233,16 +244,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
233
244
|
requirements:
|
|
234
245
|
- - ">="
|
|
235
246
|
- !ruby/object:Gem::Version
|
|
236
|
-
version: 2.
|
|
247
|
+
version: 2.6.0
|
|
237
248
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
238
249
|
requirements:
|
|
239
|
-
- - "
|
|
250
|
+
- - ">="
|
|
240
251
|
- !ruby/object:Gem::Version
|
|
241
|
-
version:
|
|
252
|
+
version: '0'
|
|
242
253
|
requirements: []
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
signing_key:
|
|
254
|
+
rubygems_version: 3.0.1
|
|
255
|
+
signing_key:
|
|
246
256
|
specification_version: 4
|
|
247
257
|
summary: Photocopier provides FTP/SSH adapters to abstract away file and directory
|
|
248
258
|
copying.
|
data/.ruby-gemset
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
photocopier
|