aspera-cli 4.15.0 → 4.16.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data/BUGS.md +29 -3
- data/CHANGELOG.md +292 -228
- data/CONTRIBUTING.md +69 -18
- data/README.md +1102 -952
- data/bin/ascli +13 -31
- data/bin/asession +3 -1
- data/examples/dascli +2 -2
- data/lib/aspera/aoc.rb +28 -33
- data/lib/aspera/ascmd.rb +3 -6
- data/lib/aspera/assert.rb +45 -0
- data/lib/aspera/cli/extended_value.rb +5 -5
- data/lib/aspera/cli/formatter.rb +26 -13
- data/lib/aspera/cli/hints.rb +4 -3
- data/lib/aspera/cli/main.rb +16 -3
- data/lib/aspera/cli/manager.rb +45 -36
- data/lib/aspera/cli/plugin.rb +20 -13
- data/lib/aspera/cli/plugins/aoc.rb +103 -73
- data/lib/aspera/cli/plugins/ats.rb +4 -3
- data/lib/aspera/cli/plugins/config.rb +114 -119
- data/lib/aspera/cli/plugins/cos.rb +2 -2
- data/lib/aspera/cli/plugins/faspex.rb +23 -19
- data/lib/aspera/cli/plugins/faspex5.rb +75 -43
- data/lib/aspera/cli/plugins/node.rb +28 -15
- data/lib/aspera/cli/plugins/orchestrator.rb +4 -2
- data/lib/aspera/cli/plugins/preview.rb +9 -7
- data/lib/aspera/cli/plugins/server.rb +6 -3
- data/lib/aspera/cli/plugins/shares.rb +30 -26
- data/lib/aspera/cli/sync_actions.rb +9 -9
- data/lib/aspera/cli/transfer_agent.rb +21 -14
- data/lib/aspera/cli/transfer_progress.rb +2 -3
- data/lib/aspera/cli/version.rb +1 -1
- data/lib/aspera/command_line_builder.rb +13 -11
- data/lib/aspera/cos_node.rb +3 -2
- data/lib/aspera/coverage.rb +22 -0
- data/lib/aspera/data_repository.rb +33 -2
- data/lib/aspera/environment.rb +4 -2
- data/lib/aspera/fasp/{agent_aspera.rb → agent_alpha.rb} +29 -39
- data/lib/aspera/fasp/agent_base.rb +17 -7
- data/lib/aspera/fasp/agent_direct.rb +88 -84
- data/lib/aspera/fasp/agent_httpgw.rb +4 -3
- data/lib/aspera/fasp/agent_node.rb +3 -2
- data/lib/aspera/fasp/agent_trsdk.rb +79 -37
- data/lib/aspera/fasp/installation.rb +51 -12
- data/lib/aspera/fasp/management.rb +11 -6
- data/lib/aspera/fasp/parameters.rb +53 -47
- data/lib/aspera/fasp/resume_policy.rb +7 -5
- data/lib/aspera/fasp/sync.rb +273 -0
- data/lib/aspera/fasp/transfer_spec.rb +10 -8
- data/lib/aspera/fasp/uri.rb +2 -2
- data/lib/aspera/faspex_gw.rb +11 -8
- data/lib/aspera/faspex_postproc.rb +6 -5
- data/lib/aspera/id_generator.rb +3 -1
- data/lib/aspera/json_rpc.rb +10 -8
- data/lib/aspera/keychain/encrypted_hash.rb +46 -11
- data/lib/aspera/keychain/macos_security.rb +15 -13
- data/lib/aspera/log.rb +4 -3
- data/lib/aspera/nagios.rb +7 -2
- data/lib/aspera/node.rb +17 -16
- data/lib/aspera/node_simulator.rb +214 -0
- data/lib/aspera/oauth.rb +22 -19
- data/lib/aspera/persistency_action_once.rb +13 -14
- data/lib/aspera/persistency_folder.rb +3 -2
- data/lib/aspera/preview/file_types.rb +53 -267
- data/lib/aspera/preview/generator.rb +7 -5
- data/lib/aspera/preview/terminal.rb +14 -5
- data/lib/aspera/preview/utils.rb +8 -7
- data/lib/aspera/proxy_auto_config.rb +6 -3
- data/lib/aspera/rest.rb +29 -13
- data/lib/aspera/rest_error_analyzer.rb +1 -0
- data/lib/aspera/rest_errors_aspera.rb +2 -0
- data/lib/aspera/secret_hider.rb +5 -2
- data/lib/aspera/ssh.rb +10 -8
- data/lib/aspera/temp_file_manager.rb +1 -1
- data/lib/aspera/web_server_simple.rb +2 -1
- data.tar.gz.sig +0 -0
- metadata +96 -45
- metadata.gz.sig +0 -0
- data/lib/aspera/sync.rb +0 -219
data/lib/aspera/rest.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require 'aspera/log'
|
4
|
+
require 'aspera/assert'
|
4
5
|
require 'aspera/oauth'
|
5
6
|
require 'aspera/rest_error_analyzer'
|
6
7
|
require 'aspera/hash_ext'
|
@@ -58,10 +59,11 @@ module Aspera
|
|
58
59
|
# build URI from URL and parameters and check it is http or https
|
59
60
|
def build_uri(url, params=nil)
|
60
61
|
uri = URI.parse(url)
|
61
|
-
|
62
|
+
assert(%w[http https].include?(uri.scheme)){"REST endpoint shall be http/s not #{uri.scheme}"}
|
62
63
|
return uri if params.nil?
|
63
64
|
Log.log.debug{Log.dump('params', params)}
|
64
|
-
|
65
|
+
assert_type(params, Hash)
|
66
|
+
return uri if params.empty?
|
65
67
|
query = []
|
66
68
|
params.each do |k, v|
|
67
69
|
case v
|
@@ -103,17 +105,31 @@ module Aspera
|
|
103
105
|
# little hack, handy because HTTP debug, proxy, etc... will be available
|
104
106
|
# used implement web sockets after `start_http_session`
|
105
107
|
def io_http_session(http_session)
|
106
|
-
|
108
|
+
assert_type(http_session, Net::HTTP)
|
107
109
|
# Net::BufferedIO in net/protocol.rb
|
108
110
|
result = http_session.instance_variable_get(:@socket)
|
109
|
-
|
111
|
+
assert(!result.nil?){"no socket for #{http_session}"}
|
110
112
|
return result
|
111
113
|
end
|
112
114
|
|
115
|
+
# @return [String] PEM certificates of remote server
|
116
|
+
def remote_certificates(url)
|
117
|
+
# initiate a session to retrieve remote certificate
|
118
|
+
http_session = Rest.start_http_session(url)
|
119
|
+
begin
|
120
|
+
# retrieve underlying openssl socket
|
121
|
+
return Rest.io_http_session(http_session).io.peer_cert_chain.reverse.map(&:to_pem).join("\n")
|
122
|
+
rescue
|
123
|
+
return http_session.peer_cert.to_pem
|
124
|
+
ensure
|
125
|
+
http_session.finish
|
126
|
+
end
|
127
|
+
end
|
128
|
+
|
113
129
|
# set global parameters
|
114
130
|
def set_parameters(**options)
|
115
131
|
options.each do |key, value|
|
116
|
-
|
132
|
+
assert(@@global.key?(key)){"unknown Rest option #{key}"}
|
117
133
|
@@global[key] = value
|
118
134
|
end
|
119
135
|
end
|
@@ -140,7 +156,7 @@ module Aspera
|
|
140
156
|
|
141
157
|
def oauth
|
142
158
|
if @oauth.nil?
|
143
|
-
|
159
|
+
assert(@params[:auth][:type].eql?(:oauth2)){'no OAuth defined'}
|
144
160
|
@oauth = Oauth.new(@params[:auth])
|
145
161
|
end
|
146
162
|
return @oauth
|
@@ -148,8 +164,8 @@ module Aspera
|
|
148
164
|
|
149
165
|
# @param a_rest_params [Hash] default call parameters (merged at call)
|
150
166
|
def initialize(a_rest_params)
|
151
|
-
|
152
|
-
|
167
|
+
assert_type(a_rest_params, Hash)
|
168
|
+
assert_type(a_rest_params[:base_url], String)
|
153
169
|
@params = a_rest_params.clone
|
154
170
|
Log.log.debug{Log.dump('REST params', @params)}
|
155
171
|
# base url without trailing slashes (note: string may be frozen)
|
@@ -163,7 +179,7 @@ module Aspera
|
|
163
179
|
end
|
164
180
|
|
165
181
|
def oauth_token(force_refresh: false)
|
166
|
-
|
182
|
+
assert_values(force_refresh, [true, false])
|
167
183
|
return oauth.get_authorization(use_refresh_token: force_refresh)
|
168
184
|
end
|
169
185
|
|
@@ -227,7 +243,7 @@ module Aspera
|
|
227
243
|
# :url_query [:url] a hash
|
228
244
|
# :* [:oauth2] see Oauth class
|
229
245
|
def call(call_data)
|
230
|
-
|
246
|
+
assert_type(call_data, Hash)
|
231
247
|
call_data[:subpath] = '' if call_data[:subpath].nil?
|
232
248
|
Log.log.debug{"accessing #{call_data[:subpath]}".red.bold.bg_green}
|
233
249
|
call_data[:headers] ||= {}
|
@@ -247,7 +263,7 @@ module Aspera
|
|
247
263
|
call_data[:auth][:url_query].each do |key, value|
|
248
264
|
call_data[:url_params][key] = value
|
249
265
|
end
|
250
|
-
else
|
266
|
+
else error_unexpected_value(call_data[:auth][:type])
|
251
267
|
end
|
252
268
|
req = build_request(call_data)
|
253
269
|
Log.log.debug{"call_data = #{call_data}"}
|
@@ -332,7 +348,7 @@ module Aspera
|
|
332
348
|
# special case: relative redirect
|
333
349
|
if URI.parse(new_url).host.nil?
|
334
350
|
# we don't manage relative redirects with non-absolute path
|
335
|
-
|
351
|
+
assert(new_url.start_with?('/')){"redirect location is relative: #{new_url}, but does not start with /."}
|
336
352
|
new_url = current_uri.scheme + '://' + current_uri.host + new_url
|
337
353
|
end
|
338
354
|
Log.log.info{"URL is moved: #{new_url}"}
|
@@ -390,7 +406,7 @@ module Aspera
|
|
390
406
|
# API style: {totalcount:, ...} cspell: disable-line
|
391
407
|
# TODO: not generic enough ? move somewhere ? inheritance ?
|
392
408
|
matching_items = matching_items[subpath] if matching_items.is_a?(Hash)
|
393
|
-
|
409
|
+
assert_type(matching_items, Array)
|
394
410
|
case matching_items.length
|
395
411
|
when 1 then return matching_items.first
|
396
412
|
when 0 then raise %Q{#{ENTITY_NOT_FOUND} #{subpath}: "#{search_name}"}
|
@@ -90,6 +90,7 @@ module Aspera
|
|
90
90
|
# @param msg one error message to add to list
|
91
91
|
def add_error(call_context, type, msg)
|
92
92
|
call_context[:messages].push(msg)
|
93
|
+
Log.log.trace1{"Found error: #{type}: #{msg}"}
|
93
94
|
log_file = instance.log_file
|
94
95
|
# log error for further analysis (file must exist to activate)
|
95
96
|
return if log_file.nil? || !File.exist?(log_file)
|
@@ -21,6 +21,8 @@ module Aspera
|
|
21
21
|
RestErrorAnalyzer.instance.add_simple_handler(name: 'Type 6', path: ['message'])
|
22
22
|
RestErrorAnalyzer.instance.add_handler('Type 7: errors[]') do |type, call_context|
|
23
23
|
next unless call_context[:data].is_a?(Hash) && call_context[:data]['errors'].is_a?(Hash)
|
24
|
+
# special for Shares: false positive ? (update global transfer_settings)
|
25
|
+
next if call_context[:data].key?('min_connect_version')
|
24
26
|
call_context[:data]['errors'].each do |k, v|
|
25
27
|
RestErrorAnalyzer.add_error(call_context, type, "#{k}: #{v}")
|
26
28
|
end
|
data/lib/aspera/secret_hider.rb
CHANGED
@@ -6,6 +6,8 @@ require 'logger'
|
|
6
6
|
module Aspera
|
7
7
|
# remove secret from logs and output
|
8
8
|
class SecretHider
|
9
|
+
# configurable:
|
10
|
+
ADDITIONAL_KEYS_TO_HIDE = []
|
9
11
|
# display string for hidden secrets
|
10
12
|
HIDDEN_PASSWORD = '🔑'
|
11
13
|
# env vars for ascp with secrets
|
@@ -14,7 +16,7 @@ module Aspera
|
|
14
16
|
KEY_SECRETS = %w[password secret passphrase _key apikey crn token].freeze
|
15
17
|
HTTP_SECRETS = %w[Authorization].freeze
|
16
18
|
ALL_SECRETS = [ASCP_ENV_SECRETS, KEY_SECRETS, HTTP_SECRETS].flatten.freeze
|
17
|
-
KEY_FALSE_POSITIVES = [/^access_key$/].freeze
|
19
|
+
KEY_FALSE_POSITIVES = [/^access_key$/, /^fallback_private_key$/].freeze
|
18
20
|
# regex that define named captures :begin and :end
|
19
21
|
REGEX_LOG_REPLACES = [
|
20
22
|
# CLI manager get/set options
|
@@ -32,7 +34,7 @@ module Aspera
|
|
32
34
|
# cred in http dump
|
33
35
|
/(?<begin>(?:#{HTTP_SECRETS.join('|')}): )[^\\]+(?<end>\\)/i
|
34
36
|
].freeze
|
35
|
-
private_constant :HIDDEN_PASSWORD, :ASCP_ENV_SECRETS, :KEY_SECRETS, :ALL_SECRETS, :REGEX_LOG_REPLACES
|
37
|
+
private_constant :HIDDEN_PASSWORD, :ASCP_ENV_SECRETS, :KEY_SECRETS, :HTTP_SECRETS, :ALL_SECRETS, :KEY_FALSE_POSITIVES, :REGEX_LOG_REPLACES
|
36
38
|
@log_secrets = false
|
37
39
|
class << self
|
38
40
|
attr_accessor :log_secrets
|
@@ -56,6 +58,7 @@ module Aspera
|
|
56
58
|
return false unless keyword.is_a?(String) && value.is_a?(String)
|
57
59
|
# those are not secrets
|
58
60
|
return false if KEY_FALSE_POSITIVES.any?{|f|f.match?(keyword)}
|
61
|
+
return true if ADDITIONAL_KEYS_TO_HIDE.include?(keyword)
|
59
62
|
# check if keyword (name) contains an element that designate it as a secret
|
60
63
|
ALL_SECRETS.any?{|kw|keyword.include?(kw)}
|
61
64
|
end
|
data/lib/aspera/ssh.rb
CHANGED
@@ -2,15 +2,17 @@
|
|
2
2
|
|
3
3
|
require 'net/ssh'
|
4
4
|
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
5
|
+
if ENV.fetch('ASCLI_ENABLE_ED25519', 'false').eql?('false')
|
6
|
+
# HACK: deactivate ed25519 and ecdsa private keys from ssh identities, as it usually cause problems
|
7
|
+
old_verbose = $VERBOSE
|
8
|
+
$VERBOSE = nil
|
9
|
+
begin
|
10
|
+
module Net; module SSH; module Authentication; class Session; private; def default_keys; %w[~/.ssh/id_dsa ~/.ssh/id_rsa ~/.ssh2/id_dsa ~/.ssh2/id_rsa]; end; end; end; end; end # rubocop:disable Layout/AccessModifierIndentation, Layout/EmptyLinesAroundAccessModifier, Layout/LineLength, Style/Semicolon
|
11
|
+
rescue StandardError
|
12
|
+
# ignore errors
|
13
|
+
end
|
14
|
+
$VERBOSE = old_verbose
|
12
15
|
end
|
13
|
-
$VERBOSE = old_verbose
|
14
16
|
|
15
17
|
module Aspera
|
16
18
|
# A simple wrapper around Net::SSH
|
@@ -3,6 +3,7 @@
|
|
3
3
|
require 'webrick'
|
4
4
|
require 'webrick/https'
|
5
5
|
require 'aspera/log'
|
6
|
+
require 'aspera/assert'
|
6
7
|
require 'openssl'
|
7
8
|
|
8
9
|
module Aspera
|
@@ -52,7 +53,7 @@ module Aspera
|
|
52
53
|
if certificate.nil?
|
53
54
|
webrick_options[:SSLCertName] = [['CN', WEBrick::Utils.getservername]]
|
54
55
|
else
|
55
|
-
|
56
|
+
assert_type(certificate, Hash)
|
56
57
|
certificate = certificate.symbolize_keys
|
57
58
|
raise "unexpected key in certificate config: only: #{CERT_PARAMETERS.join(', ')}" if certificate.keys.any?{|k|!CERT_PARAMETERS.include?(k)}
|
58
59
|
webrick_options[:SSLPrivateKey] = if certificate.key?(:key)
|
data.tar.gz.sig
CHANGED
Binary file
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: aspera-cli
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.
|
4
|
+
version: 4.16.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Laurent Martin
|
@@ -37,8 +37,42 @@ cert_chain:
|
|
37
37
|
eTf9kxhVM40wGQOECVNA8UsEEZHD48eF+csUYZtAJOF5oxTI8UyV9T/o6CgO0c9/
|
38
38
|
Gzz+Qm5ULOUcPiJLjSpaiTrkiIVYiDGnqNSr6R1Hb1c=
|
39
39
|
-----END CERTIFICATE-----
|
40
|
-
date:
|
40
|
+
date: 2024-02-14 00:00:00.000000000 Z
|
41
41
|
dependencies:
|
42
|
+
- !ruby/object:Gem::Dependency
|
43
|
+
name: base64
|
44
|
+
requirement: !ruby/object:Gem::Requirement
|
45
|
+
requirements:
|
46
|
+
- - "~>"
|
47
|
+
- !ruby/object:Gem::Version
|
48
|
+
version: 0.2.0
|
49
|
+
type: :runtime
|
50
|
+
prerelease: false
|
51
|
+
version_requirements: !ruby/object:Gem::Requirement
|
52
|
+
requirements:
|
53
|
+
- - "~>"
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
version: 0.2.0
|
56
|
+
- !ruby/object:Gem::Dependency
|
57
|
+
name: bigdecimal
|
58
|
+
requirement: !ruby/object:Gem::Requirement
|
59
|
+
requirements:
|
60
|
+
- - "~>"
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: '3.1'
|
63
|
+
- - ">="
|
64
|
+
- !ruby/object:Gem::Version
|
65
|
+
version: 3.1.6
|
66
|
+
type: :runtime
|
67
|
+
prerelease: false
|
68
|
+
version_requirements: !ruby/object:Gem::Requirement
|
69
|
+
requirements:
|
70
|
+
- - "~>"
|
71
|
+
- !ruby/object:Gem::Version
|
72
|
+
version: '3.1'
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: 3.1.6
|
42
76
|
- !ruby/object:Gem::Dependency
|
43
77
|
name: blankslate
|
44
78
|
requirement: !ruby/object:Gem::Requirement
|
@@ -53,6 +87,20 @@ dependencies:
|
|
53
87
|
- - "~>"
|
54
88
|
- !ruby/object:Gem::Version
|
55
89
|
version: '3.1'
|
90
|
+
- !ruby/object:Gem::Dependency
|
91
|
+
name: csv
|
92
|
+
requirement: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - "~>"
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '3.0'
|
97
|
+
type: :runtime
|
98
|
+
prerelease: false
|
99
|
+
version_requirements: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - "~>"
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '3.0'
|
56
104
|
- !ruby/object:Gem::Dependency
|
57
105
|
name: execjs
|
58
106
|
requirement: !ruby/object:Gem::Requirement
|
@@ -81,6 +129,20 @@ dependencies:
|
|
81
129
|
- - "~>"
|
82
130
|
- !ruby/object:Gem::Version
|
83
131
|
version: '2.0'
|
132
|
+
- !ruby/object:Gem::Dependency
|
133
|
+
name: mime-types
|
134
|
+
requirement: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - "~>"
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '3.5'
|
139
|
+
type: :runtime
|
140
|
+
prerelease: false
|
141
|
+
version_requirements: !ruby/object:Gem::Requirement
|
142
|
+
requirements:
|
143
|
+
- - "~>"
|
144
|
+
- !ruby/object:Gem::Version
|
145
|
+
version: '3.5'
|
84
146
|
- !ruby/object:Gem::Dependency
|
85
147
|
name: net-ssh
|
86
148
|
requirement: !ruby/object:Gem::Requirement
|
@@ -95,6 +157,20 @@ dependencies:
|
|
95
157
|
- - "~>"
|
96
158
|
- !ruby/object:Gem::Version
|
97
159
|
version: '7.0'
|
160
|
+
- !ruby/object:Gem::Dependency
|
161
|
+
name: rainbow
|
162
|
+
requirement: !ruby/object:Gem::Requirement
|
163
|
+
requirements:
|
164
|
+
- - "~>"
|
165
|
+
- !ruby/object:Gem::Version
|
166
|
+
version: '3.0'
|
167
|
+
type: :runtime
|
168
|
+
prerelease: false
|
169
|
+
version_requirements: !ruby/object:Gem::Requirement
|
170
|
+
requirements:
|
171
|
+
- - "~>"
|
172
|
+
- !ruby/object:Gem::Version
|
173
|
+
version: '3.0'
|
98
174
|
- !ruby/object:Gem::Dependency
|
99
175
|
name: ruby-progressbar
|
100
176
|
requirement: !ruby/object:Gem::Requirement
|
@@ -208,61 +284,33 @@ dependencies:
|
|
208
284
|
- !ruby/object:Gem::Version
|
209
285
|
version: '1.0'
|
210
286
|
- !ruby/object:Gem::Dependency
|
211
|
-
name:
|
212
|
-
requirement: !ruby/object:Gem::Requirement
|
213
|
-
requirements:
|
214
|
-
- - "~>"
|
215
|
-
- !ruby/object:Gem::Version
|
216
|
-
version: '0.3'
|
217
|
-
type: :development
|
218
|
-
prerelease: false
|
219
|
-
version_requirements: !ruby/object:Gem::Requirement
|
220
|
-
requirements:
|
221
|
-
- - "~>"
|
222
|
-
- !ruby/object:Gem::Version
|
223
|
-
version: '0.3'
|
224
|
-
- !ruby/object:Gem::Dependency
|
225
|
-
name: rmagick
|
226
|
-
requirement: !ruby/object:Gem::Requirement
|
227
|
-
requirements:
|
228
|
-
- - "~>"
|
229
|
-
- !ruby/object:Gem::Version
|
230
|
-
version: '5.3'
|
231
|
-
type: :development
|
232
|
-
prerelease: false
|
233
|
-
version_requirements: !ruby/object:Gem::Requirement
|
234
|
-
requirements:
|
235
|
-
- - "~>"
|
236
|
-
- !ruby/object:Gem::Version
|
237
|
-
version: '5.3'
|
238
|
-
- !ruby/object:Gem::Dependency
|
239
|
-
name: bundler
|
287
|
+
name: rake
|
240
288
|
requirement: !ruby/object:Gem::Requirement
|
241
289
|
requirements:
|
242
290
|
- - "~>"
|
243
291
|
- !ruby/object:Gem::Version
|
244
|
-
version: '
|
292
|
+
version: '13.0'
|
245
293
|
type: :development
|
246
294
|
prerelease: false
|
247
295
|
version_requirements: !ruby/object:Gem::Requirement
|
248
296
|
requirements:
|
249
297
|
- - "~>"
|
250
298
|
- !ruby/object:Gem::Version
|
251
|
-
version: '
|
299
|
+
version: '13.0'
|
252
300
|
- !ruby/object:Gem::Dependency
|
253
|
-
name:
|
301
|
+
name: reek
|
254
302
|
requirement: !ruby/object:Gem::Requirement
|
255
303
|
requirements:
|
256
304
|
- - "~>"
|
257
305
|
- !ruby/object:Gem::Version
|
258
|
-
version:
|
306
|
+
version: 6.1.0
|
259
307
|
type: :development
|
260
308
|
prerelease: false
|
261
309
|
version_requirements: !ruby/object:Gem::Requirement
|
262
310
|
requirements:
|
263
311
|
- - "~>"
|
264
312
|
- !ruby/object:Gem::Version
|
265
|
-
version:
|
313
|
+
version: 6.1.0
|
266
314
|
- !ruby/object:Gem::Dependency
|
267
315
|
name: rspec
|
268
316
|
requirement: !ruby/object:Gem::Requirement
|
@@ -339,28 +387,28 @@ dependencies:
|
|
339
387
|
requirements:
|
340
388
|
- - "~>"
|
341
389
|
- !ruby/object:Gem::Version
|
342
|
-
version: '0.
|
390
|
+
version: '0.22'
|
343
391
|
type: :development
|
344
392
|
prerelease: false
|
345
393
|
version_requirements: !ruby/object:Gem::Requirement
|
346
394
|
requirements:
|
347
395
|
- - "~>"
|
348
396
|
- !ruby/object:Gem::Version
|
349
|
-
version: '0.
|
397
|
+
version: '0.22'
|
350
398
|
- !ruby/object:Gem::Dependency
|
351
399
|
name: solargraph
|
352
400
|
requirement: !ruby/object:Gem::Requirement
|
353
401
|
requirements:
|
354
402
|
- - "~>"
|
355
403
|
- !ruby/object:Gem::Version
|
356
|
-
version: '0.
|
404
|
+
version: '0.50'
|
357
405
|
type: :development
|
358
406
|
prerelease: false
|
359
407
|
version_requirements: !ruby/object:Gem::Requirement
|
360
408
|
requirements:
|
361
409
|
- - "~>"
|
362
410
|
- !ruby/object:Gem::Version
|
363
|
-
version: '0.
|
411
|
+
version: '0.50'
|
364
412
|
description: Command line interface for IBM Aspera products
|
365
413
|
email:
|
366
414
|
- laurent.martin.aspera@fr.ibm.com
|
@@ -381,6 +429,7 @@ files:
|
|
381
429
|
- examples/rubyc
|
382
430
|
- lib/aspera/aoc.rb
|
383
431
|
- lib/aspera/ascmd.rb
|
432
|
+
- lib/aspera/assert.rb
|
384
433
|
- lib/aspera/ats_api.rb
|
385
434
|
- lib/aspera/cli/basic_auth_plugin.rb
|
386
435
|
- lib/aspera/cli/error.rb
|
@@ -412,6 +461,7 @@ files:
|
|
412
461
|
- lib/aspera/colors.rb
|
413
462
|
- lib/aspera/command_line_builder.rb
|
414
463
|
- lib/aspera/cos_node.rb
|
464
|
+
- lib/aspera/coverage.rb
|
415
465
|
- lib/aspera/data/1
|
416
466
|
- lib/aspera/data/2
|
417
467
|
- lib/aspera/data/3
|
@@ -420,7 +470,7 @@ files:
|
|
420
470
|
- lib/aspera/data/6
|
421
471
|
- lib/aspera/data_repository.rb
|
422
472
|
- lib/aspera/environment.rb
|
423
|
-
- lib/aspera/fasp/
|
473
|
+
- lib/aspera/fasp/agent_alpha.rb
|
424
474
|
- lib/aspera/fasp/agent_base.rb
|
425
475
|
- lib/aspera/fasp/agent_connect.rb
|
426
476
|
- lib/aspera/fasp/agent_direct.rb
|
@@ -436,6 +486,7 @@ files:
|
|
436
486
|
- lib/aspera/fasp/parameters.yaml
|
437
487
|
- lib/aspera/fasp/products.rb
|
438
488
|
- lib/aspera/fasp/resume_policy.rb
|
489
|
+
- lib/aspera/fasp/sync.rb
|
439
490
|
- lib/aspera/fasp/transfer_spec.rb
|
440
491
|
- lib/aspera/fasp/uri.rb
|
441
492
|
- lib/aspera/faspex_gw.rb
|
@@ -449,6 +500,7 @@ files:
|
|
449
500
|
- lib/aspera/log.rb
|
450
501
|
- lib/aspera/nagios.rb
|
451
502
|
- lib/aspera/node.rb
|
503
|
+
- lib/aspera/node_simulator.rb
|
452
504
|
- lib/aspera/oauth.rb
|
453
505
|
- lib/aspera/open_application.rb
|
454
506
|
- lib/aspera/persistency_action_once.rb
|
@@ -468,7 +520,6 @@ files:
|
|
468
520
|
- lib/aspera/rest_errors_aspera.rb
|
469
521
|
- lib/aspera/secret_hider.rb
|
470
522
|
- lib/aspera/ssh.rb
|
471
|
-
- lib/aspera/sync.rb
|
472
523
|
- lib/aspera/temp_file_manager.rb
|
473
524
|
- lib/aspera/timer_limiter.rb
|
474
525
|
- lib/aspera/uri_reader.rb
|
@@ -480,8 +531,8 @@ licenses:
|
|
480
531
|
metadata:
|
481
532
|
allowed_push_host: https://rubygems.org
|
482
533
|
homepage_uri: https://github.com/IBM/aspera-cli
|
483
|
-
source_code_uri: https://github.com/IBM/aspera-cli
|
484
|
-
changelog_uri: https://github.com/IBM/aspera-cli
|
534
|
+
source_code_uri: https://github.com/IBM/aspera-cli/tree/main/lib/aspera
|
535
|
+
changelog_uri: https://github.com/IBM/aspera-cli/CHANGELOG.md
|
485
536
|
rubygems_uri: https://rubygems.org/gems/aspera-cli
|
486
537
|
documentation_uri: https://www.rubydoc.info/gems/aspera-cli
|
487
538
|
post_install_message:
|
@@ -500,7 +551,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
500
551
|
version: '0'
|
501
552
|
requirements:
|
502
553
|
- Read the manual for any requirement
|
503
|
-
rubygems_version: 3.4.
|
554
|
+
rubygems_version: 3.4.19
|
504
555
|
signing_key:
|
505
556
|
specification_version: 4
|
506
557
|
summary: 'Execute actions using command line on IBM Aspera Server products: Aspera
|
metadata.gz.sig
CHANGED
Binary file
|