aspera-cli 4.16.0 → 4.17.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/CHANGELOG.md +50 -19
- data/CONTRIBUTING.md +3 -1
- data/README.md +965 -793
- data/bin/asession +29 -21
- data/lib/aspera/{fasp/agent_alpha.rb → agent/alpha.rb} +26 -25
- data/lib/aspera/{fasp/agent_base.rb → agent/base.rb} +15 -12
- data/lib/aspera/{fasp/agent_connect.rb → agent/connect.rb} +13 -11
- data/lib/aspera/{fasp/agent_direct.rb → agent/direct.rb} +49 -53
- data/lib/aspera/{fasp/agent_httpgw.rb → agent/httpgw.rb} +20 -19
- data/lib/aspera/{fasp/agent_node.rb → agent/node.rb} +20 -33
- data/lib/aspera/{fasp/agent_trsdk.rb → agent/trsdk.rb} +11 -11
- data/lib/aspera/api/aoc.rb +586 -0
- data/lib/aspera/api/ats.rb +46 -0
- data/lib/aspera/api/cos_node.rb +95 -0
- data/lib/aspera/api/node.rb +344 -0
- data/lib/aspera/ascmd.rb +46 -10
- data/lib/aspera/{fasp → ascp}/installation.rb +5 -5
- data/lib/aspera/{fasp → ascp}/management.rb +3 -8
- data/lib/aspera/{fasp → ascp}/products.rb +1 -1
- data/lib/aspera/assert.rb +30 -30
- data/lib/aspera/cli/basic_auth_plugin.rb +11 -10
- data/lib/aspera/cli/extended_value.rb +1 -1
- data/lib/aspera/cli/formatter.rb +13 -13
- data/lib/aspera/cli/hints.rb +5 -5
- data/lib/aspera/cli/main.rb +35 -28
- data/lib/aspera/cli/manager.rb +25 -24
- data/lib/aspera/cli/plugin.rb +22 -15
- data/lib/aspera/cli/plugin_factory.rb +61 -0
- data/lib/aspera/cli/plugins/alee.rb +7 -7
- data/lib/aspera/cli/plugins/aoc.rb +83 -77
- data/lib/aspera/cli/plugins/ats.rb +32 -33
- data/lib/aspera/cli/plugins/bss.rb +3 -4
- data/lib/aspera/cli/plugins/config.rb +169 -186
- data/lib/aspera/cli/plugins/console.rb +8 -6
- data/lib/aspera/cli/plugins/cos.rb +19 -18
- data/lib/aspera/cli/plugins/faspex.rb +61 -54
- data/lib/aspera/cli/plugins/faspex5.rb +150 -103
- data/lib/aspera/cli/plugins/node.rb +68 -73
- data/lib/aspera/cli/plugins/orchestrator.rb +34 -44
- data/lib/aspera/cli/plugins/preview.rb +31 -31
- data/lib/aspera/cli/plugins/server.rb +31 -33
- data/lib/aspera/cli/plugins/shares.rb +13 -11
- data/lib/aspera/cli/sync_actions.rb +8 -8
- data/lib/aspera/cli/transfer_agent.rb +32 -19
- data/lib/aspera/cli/transfer_progress.rb +1 -1
- data/lib/aspera/cli/version.rb +1 -1
- data/lib/aspera/colors.rb +5 -0
- data/lib/aspera/command_line_builder.rb +14 -14
- data/lib/aspera/coverage.rb +1 -2
- data/lib/aspera/data_repository.rb +1 -1
- data/lib/aspera/environment.rb +2 -3
- data/lib/aspera/faspex_gw.rb +5 -6
- data/lib/aspera/faspex_postproc.rb +1 -1
- data/lib/aspera/id_generator.rb +2 -2
- data/lib/aspera/json_rpc.rb +5 -5
- data/lib/aspera/keychain/encrypted_hash.rb +6 -6
- data/lib/aspera/keychain/macos_security.rb +27 -22
- data/lib/aspera/log.rb +2 -2
- data/lib/aspera/nagios.rb +3 -3
- data/lib/aspera/node_simulator.rb +5 -6
- data/lib/aspera/oauth/base.rb +143 -0
- data/lib/aspera/oauth/factory.rb +124 -0
- data/lib/aspera/oauth/generic.rb +34 -0
- data/lib/aspera/oauth/jwt.rb +51 -0
- data/lib/aspera/oauth/url_json.rb +31 -0
- data/lib/aspera/oauth/web.rb +50 -0
- data/lib/aspera/oauth.rb +5 -331
- data/lib/aspera/open_application.rb +7 -7
- data/lib/aspera/persistency_action_once.rb +4 -4
- data/lib/aspera/persistency_folder.rb +2 -2
- data/lib/aspera/preview/generator.rb +5 -5
- data/lib/aspera/preview/terminal.rb +3 -2
- data/lib/aspera/preview/utils.rb +3 -3
- data/lib/aspera/proxy_auto_config.rb +4 -4
- data/lib/aspera/rest.rb +175 -144
- data/lib/aspera/rest_errors_aspera.rb +3 -3
- data/lib/aspera/resumer.rb +77 -0
- data/lib/aspera/ssh.rb +6 -1
- data/lib/aspera/{fasp → transfer}/error.rb +3 -3
- data/lib/aspera/{fasp → transfer}/error_info.rb +1 -1
- data/lib/aspera/{fasp → transfer}/faux_file.rb +1 -1
- data/lib/aspera/{fasp → transfer}/parameters.rb +58 -89
- data/lib/aspera/{fasp/transfer_spec.rb → transfer/spec.rb} +18 -16
- data/lib/aspera/{fasp/parameters.yaml → transfer/spec.yaml} +4 -99
- data/lib/aspera/{fasp → transfer}/sync.rb +32 -32
- data/lib/aspera/{fasp → transfer}/uri.rb +9 -8
- data/lib/aspera/web_server_simple.rb +11 -3
- data.tar.gz.sig +0 -0
- metadata +36 -63
- metadata.gz.sig +0 -0
- data/lib/aspera/aoc.rb +0 -601
- data/lib/aspera/ats_api.rb +0 -47
- data/lib/aspera/cos_node.rb +0 -94
- data/lib/aspera/fasp/resume_policy.rb +0 -79
- data/lib/aspera/node.rb +0 -339
@@ -3,7 +3,7 @@
|
|
3
3
|
# cspell:words logdir bidi watchd cooloff asyncadmin
|
4
4
|
|
5
5
|
require 'aspera/command_line_builder'
|
6
|
-
require 'aspera/
|
6
|
+
require 'aspera/ascp/installation'
|
7
7
|
require 'aspera/log'
|
8
8
|
require 'aspera/assert'
|
9
9
|
require 'json'
|
@@ -12,7 +12,7 @@ require 'open3'
|
|
12
12
|
require 'English'
|
13
13
|
|
14
14
|
module Aspera
|
15
|
-
module
|
15
|
+
module Transfer
|
16
16
|
# builds command line arg for async
|
17
17
|
module Sync
|
18
18
|
# sync direction, default is push
|
@@ -40,7 +40,7 @@ module Aspera
|
|
40
40
|
'private_key_paths' => { cli: { type: :opt_with_arg, switch: '--private-key-path'}, accepted_types: :array},
|
41
41
|
'direction' => { cli: { type: :opt_with_arg}, accepted_types: :string},
|
42
42
|
'checksum' => { cli: { type: :opt_with_arg}, accepted_types: :string},
|
43
|
-
'tags' => { cli: { type: :opt_with_arg, switch: '--tags64', convert: 'Aspera::
|
43
|
+
'tags' => { cli: { type: :opt_with_arg, switch: '--tags64', convert: 'Aspera::Transfer::Parameters.convert_json64'},
|
44
44
|
accepted_types: :hash, ts: true},
|
45
45
|
'tcp_port' => { cli: { type: :opt_with_arg}, accepted_types: :int, ts: :ssh_port},
|
46
46
|
'rate_policy' => { cli: { type: :opt_with_arg}, accepted_types: :string},
|
@@ -48,7 +48,7 @@ module Aspera
|
|
48
48
|
'cooloff' => { cli: { type: :opt_with_arg}, accepted_types: :int},
|
49
49
|
'pending_max' => { cli: { type: :opt_with_arg}, accepted_types: :int},
|
50
50
|
'scan_intensity' => { cli: { type: :opt_with_arg}, accepted_types: :string},
|
51
|
-
'cipher' => { cli: { type: :opt_with_arg, convert: 'Aspera::
|
51
|
+
'cipher' => { cli: { type: :opt_with_arg, convert: 'Aspera::Transfer::Parameters.convert_remove_hyphen'}, accepted_types: :string, ts: true},
|
52
52
|
'transfer_threads' => { cli: { type: :opt_with_arg}, accepted_types: :int},
|
53
53
|
'preserve_time' => { cli: { type: :opt_without_arg}, ts: :preserve_times},
|
54
54
|
'preserve_access_time' => { cli: { type: :opt_without_arg}, ts: nil},
|
@@ -64,8 +64,8 @@ module Aspera
|
|
64
64
|
'license' => { cli: { type: :envvar, variable: 'ASPERA_SCP_LICENSE'}}
|
65
65
|
}.freeze
|
66
66
|
|
67
|
-
|
68
|
-
|
67
|
+
CommandLineBuilder.normalize_description(PARAMS_VX_INSTANCE)
|
68
|
+
CommandLineBuilder.normalize_description(PARAMS_VX_SESSION)
|
69
69
|
|
70
70
|
PARAMS_VX_KEYS = %w[instance sessions].freeze
|
71
71
|
|
@@ -112,12 +112,12 @@ module Aspera
|
|
112
112
|
remote.delete('port')
|
113
113
|
remote.delete('fingerprint')
|
114
114
|
# ignore cert for wss ?
|
115
|
-
if
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
end
|
115
|
+
# if @options[:check_ignore_cb]&.call(remote['host'], remote['ws_port'])
|
116
|
+
# wss_cert_file = TempFileManager.instance.new_file_path_global('wss_cert')
|
117
|
+
# wss_url = "https://#{remote['host']}:#{remote['ws_port']}"
|
118
|
+
# File.write(wss_cert_file, Rest.remote_certificate_chain(wss_url))
|
119
|
+
# certificates_to_use.push(wss_cert_file)
|
120
|
+
# end
|
121
121
|
# set location for CA bundle to be the one of Ruby, see env var SSL_CERT_FILE / SSL_CERT_DIR
|
122
122
|
# certificates_to_use.concat(@options[:trusted_certs]) if @options[:trusted_certs]
|
123
123
|
else
|
@@ -125,7 +125,7 @@ module Aspera
|
|
125
125
|
remote.delete('ws_port')
|
126
126
|
# add SSH bypass keys when authentication is token and no auth is provided
|
127
127
|
if remote.key?('token') && !remote.key?('pass')
|
128
|
-
certificates_to_use.concat(Installation.instance.aspera_token_ssh_key_paths)
|
128
|
+
certificates_to_use.concat(Ascp::Installation.instance.aspera_token_ssh_key_paths)
|
129
129
|
end
|
130
130
|
end
|
131
131
|
return certificates_to_use
|
@@ -134,7 +134,7 @@ module Aspera
|
|
134
134
|
# @param sync_params [Hash] sync parameters, old or new format
|
135
135
|
# @param block [nil, Proc] block to generate transfer spec, takes: direction (one of DIRECTIONS), local_dir, remote_dir
|
136
136
|
def start(sync_params, &block)
|
137
|
-
assert_type(sync_params, Hash)
|
137
|
+
Aspera.assert_type(sync_params, Hash)
|
138
138
|
env_args = {
|
139
139
|
args: [],
|
140
140
|
env: {}
|
@@ -142,12 +142,12 @@ module Aspera
|
|
142
142
|
if sync_params.key?('local')
|
143
143
|
remote = sync_params['remote']
|
144
144
|
# async native JSON format (v2)
|
145
|
-
assert_type(remote, Hash)
|
145
|
+
Aspera.assert_type(remote, Hash)
|
146
146
|
# get transfer spec if possible, and feed back to new structure
|
147
147
|
if block
|
148
148
|
transfer_spec = yield((sync_params['direction'] || 'push').to_sym, sync_params['local']['path'], remote['path'])
|
149
149
|
# async native JSON format
|
150
|
-
assert_type(sync_params['local'], Hash)
|
150
|
+
Aspera.assert_type(sync_params['local'], Hash)
|
151
151
|
# translate transfer spec to async parameters
|
152
152
|
TS_TO_PARAMS_V2.each do |ts_param, sy_path|
|
153
153
|
next unless transfer_spec.key?(ts_param)
|
@@ -165,7 +165,7 @@ module Aspera
|
|
165
165
|
remote['private_key_paths'] ||= []
|
166
166
|
remote['private_key_paths'].concat(add_certificates)
|
167
167
|
end
|
168
|
-
assert_type(sync_params, Hash)
|
168
|
+
Aspera.assert_type(sync_params, Hash)
|
169
169
|
env_args[:args] = ["--conf64=#{Base64.strict_encode64(JSON.generate(sync_params))}"]
|
170
170
|
elsif sync_params.key?('sessions')
|
171
171
|
# ascli JSON format (v1)
|
@@ -178,25 +178,25 @@ module Aspera
|
|
178
178
|
session[async_param] ||= transfer_spec[tspec_param] if transfer_spec.key?(tspec_param)
|
179
179
|
end
|
180
180
|
end
|
181
|
-
session['private_key_paths'] =
|
181
|
+
session['private_key_paths'] = Ascp::Installation.instance.aspera_token_ssh_key_paths if transfer_spec.key?('token')
|
182
182
|
update_remote_dir(session, 'remote_dir', transfer_spec)
|
183
183
|
end
|
184
184
|
end
|
185
185
|
raise StandardError, "Only 'sessions', and optionally 'instance' keys are allowed" unless
|
186
186
|
sync_params.keys.push('instance').uniq.sort.eql?(PARAMS_VX_KEYS)
|
187
|
-
assert_type(sync_params['sessions'], Array)
|
188
|
-
assert_type(sync_params['sessions'].first, Hash)
|
187
|
+
Aspera.assert_type(sync_params['sessions'], Array)
|
188
|
+
Aspera.assert_type(sync_params['sessions'].first, Hash)
|
189
189
|
if sync_params.key?('instance')
|
190
|
-
assert_type(sync_params['instance'], Hash)
|
191
|
-
instance_builder =
|
190
|
+
Aspera.assert_type(sync_params['instance'], Hash)
|
191
|
+
instance_builder = CommandLineBuilder.new(sync_params['instance'], PARAMS_VX_INSTANCE)
|
192
192
|
instance_builder.process_params
|
193
193
|
instance_builder.add_env_args(env_args)
|
194
194
|
end
|
195
195
|
|
196
196
|
sync_params['sessions'].each do |session_params|
|
197
|
-
assert_type(session_params, Hash)
|
198
|
-
assert(session_params.key?('name')){'session must contain at least name'}
|
199
|
-
session_builder =
|
197
|
+
Aspera.assert_type(session_params, Hash)
|
198
|
+
Aspera.assert(session_params.key?('name')){'session must contain at least name'}
|
199
|
+
session_builder = CommandLineBuilder.new(session_params, PARAMS_VX_SESSION)
|
200
200
|
session_builder.process_params
|
201
201
|
session_builder.add_env_args(env_args)
|
202
202
|
end
|
@@ -211,7 +211,7 @@ module Aspera
|
|
211
211
|
when true then return nil
|
212
212
|
when false then raise "failed: #{$CHILD_STATUS}"
|
213
213
|
when nil then raise "not started: #{$CHILD_STATUS}"
|
214
|
-
else error_unexpected_value(res)
|
214
|
+
else Aspera.error_unexpected_value(res)
|
215
215
|
end
|
216
216
|
end
|
217
217
|
|
@@ -235,8 +235,8 @@ module Aspera
|
|
235
235
|
def admin_status(sync_params, session_name)
|
236
236
|
command_line = [ASYNC_ADMIN_EXECUTABLE, '--quiet']
|
237
237
|
if sync_params.key?('local')
|
238
|
-
assert(!sync_params['name'].nil?){'Missing session name'}
|
239
|
-
assert(session_name.nil? || session_name.eql?(sync_params['name'])){'Session not found'}
|
238
|
+
Aspera.assert(!sync_params['name'].nil?){'Missing session name'}
|
239
|
+
Aspera.assert(session_name.nil? || session_name.eql?(sync_params['name'])){'Session not found'}
|
240
240
|
command_line.push("--name=#{sync_params['name']}")
|
241
241
|
if sync_params.key?('local_db_dir')
|
242
242
|
command_line.push("--local-db-dir=#{sync_params['local_db_dir']}")
|
@@ -267,7 +267,7 @@ module Aspera
|
|
267
267
|
raise "Sync failed: #{status.exitstatus} : #{stderr}" unless status.success?
|
268
268
|
return parse_status(stdout)
|
269
269
|
end
|
270
|
-
end
|
271
|
-
end
|
272
|
-
end
|
273
|
-
end
|
270
|
+
end
|
271
|
+
end
|
272
|
+
end
|
273
|
+
end
|
@@ -7,22 +7,23 @@ require 'aspera/rest'
|
|
7
7
|
require 'aspera/command_line_builder'
|
8
8
|
|
9
9
|
module Aspera
|
10
|
-
module
|
10
|
+
module Transfer
|
11
11
|
# translates a "faspe:" URI (used in Faspex 4) into transfer spec (Hash)
|
12
12
|
class Uri
|
13
13
|
SCHEME = 'faspe'
|
14
14
|
def initialize(fasp_link)
|
15
15
|
@fasp_uri = URI.parse(fasp_link.gsub(' ', '%20'))
|
16
|
-
|
16
|
+
Aspera.assert(@fasp_uri.scheme == SCHEME, "Invalid scheme: #{@fasp_uri.scheme}")
|
17
17
|
end
|
18
18
|
|
19
|
+
# Generate transfer spec from provided faspe: URL
|
19
20
|
def transfer_spec
|
20
21
|
result_ts = {}
|
21
22
|
result_ts['remote_host'] = @fasp_uri.host
|
22
23
|
result_ts['remote_user'] = @fasp_uri.user
|
23
24
|
result_ts['ssh_port'] = @fasp_uri.port
|
24
25
|
result_ts['paths'] = [{'source' => URI.decode_www_form_component(@fasp_uri.path)}]
|
25
|
-
# faspex does not encode trailing base64 padding, fix that to be able to decode properly
|
26
|
+
# faspex 4 does not encode trailing base64 padding, fix that to be able to decode properly
|
26
27
|
fixed_query = @fasp_uri.query.gsub(/(=+)$/){|x|'%3D' * x.length}
|
27
28
|
|
28
29
|
Rest.decode_query(fixed_query).each do |name, value|
|
@@ -36,20 +37,20 @@ module Aspera
|
|
36
37
|
when 'minrate' then result_ts['min_rate_kbps'] = value.to_i
|
37
38
|
when 'port' then result_ts['fasp_port'] = value.to_i
|
38
39
|
when 'bwcap' then result_ts['target_rate_cap_kbps'] = value.to_i
|
39
|
-
when 'enc' then result_ts['cipher'] = value.gsub(/^aes/, 'aes-').gsub(/cfb$/, '-cfb').gsub(/gcm$/, '-gcm').gsub(
|
40
|
+
when 'enc' then result_ts['cipher'] = value.gsub(/^aes/, 'aes-').gsub(/cfb$/, '-cfb').gsub(/gcm$/, '-gcm').gsub('--', '-')
|
40
41
|
when 'tags64' then result_ts['tags'] = JSON.parse(Base64.strict_decode64(value))
|
41
42
|
when 'createpath' then result_ts['create_dir'] = CommandLineBuilder.yes_to_true(value)
|
42
43
|
when 'fallback' then result_ts['http_fallback'] = CommandLineBuilder.yes_to_true(value)
|
43
44
|
when 'lockpolicy' then result_ts['lock_rate_policy'] = CommandLineBuilder.yes_to_true(value)
|
44
45
|
when 'lockminrate' then result_ts['lock_min_rate'] = CommandLineBuilder.yes_to_true(value)
|
45
46
|
when 'auth' then Log.log.debug{"ignoring #{name}=#{value}"} # Not used (yes/no)
|
46
|
-
when 'v' then Log.log.debug{"ignoring #{name}=#{value}"} # rubocop:disable Lint/DuplicateBranch Not used (2)
|
47
|
+
when 'v' then Log.log.debug{"ignoring #{name}=#{value}"} # rubocop:disable Lint/DuplicateBranch Not used (shall be 2)
|
47
48
|
when 'protect' then Log.log.debug{"ignoring #{name}=#{value}"} # rubocop:disable Lint/DuplicateBranch TODO: what is this ?
|
48
49
|
else Log.log.warn{"URI parameter ignored: #{name} = #{value}"}
|
49
50
|
end
|
50
51
|
end
|
51
52
|
return result_ts
|
52
53
|
end
|
53
|
-
end
|
54
|
-
end
|
55
|
-
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
@@ -38,6 +38,7 @@ module Aspera
|
|
38
38
|
|
39
39
|
# @param uri [URI]
|
40
40
|
def initialize(uri, certificate: nil)
|
41
|
+
@url = uri
|
41
42
|
# see https://www.rubydoc.info/stdlib/webrick/WEBrick/Config
|
42
43
|
webrick_options = {
|
43
44
|
BindAddress: uri.host,
|
@@ -53,7 +54,7 @@ module Aspera
|
|
53
54
|
if certificate.nil?
|
54
55
|
webrick_options[:SSLCertName] = [['CN', WEBrick::Utils.getservername]]
|
55
56
|
else
|
56
|
-
assert_type(certificate, Hash)
|
57
|
+
Aspera.assert_type(certificate, Hash)
|
57
58
|
certificate = certificate.symbolize_keys
|
58
59
|
raise "unexpected key in certificate config: only: #{CERT_PARAMETERS.join(', ')}" if certificate.keys.any?{|k|!CERT_PARAMETERS.include?(k)}
|
59
60
|
webrick_options[:SSLPrivateKey] = if certificate.key?(:key)
|
@@ -72,10 +73,17 @@ module Aspera
|
|
72
73
|
end
|
73
74
|
end
|
74
75
|
end
|
76
|
+
# call constructor of parent class, but capture STDERR
|
75
77
|
# self signed certificate generates characters on STDERR, see create_self_signed_cert in webrick/ssl.rb
|
76
78
|
Log.capture_stderr { super(webrick_options) }
|
77
|
-
|
78
|
-
|
79
|
+
end
|
80
|
+
|
81
|
+
# blocking
|
82
|
+
def start
|
83
|
+
Log.log.info{"Listening on #{@url}"}
|
84
|
+
# kill -HUP for graceful shutdown
|
85
|
+
Kernel.trap('HUP') { shutdown }
|
86
|
+
super
|
79
87
|
end
|
80
88
|
|
81
89
|
# log web server access ( option AccessLog )
|
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.17.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Laurent Martin
|
@@ -37,42 +37,8 @@ cert_chain:
|
|
37
37
|
eTf9kxhVM40wGQOECVNA8UsEEZHD48eF+csUYZtAJOF5oxTI8UyV9T/o6CgO0c9/
|
38
38
|
Gzz+Qm5ULOUcPiJLjSpaiTrkiIVYiDGnqNSr6R1Hb1c=
|
39
39
|
-----END CERTIFICATE-----
|
40
|
-
date: 2024-
|
40
|
+
date: 2024-05-13 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
|
76
42
|
- !ruby/object:Gem::Dependency
|
77
43
|
name: blankslate
|
78
44
|
requirement: !ruby/object:Gem::Requirement
|
@@ -219,14 +185,14 @@ dependencies:
|
|
219
185
|
requirements:
|
220
186
|
- - "~>"
|
221
187
|
- !ruby/object:Gem::Version
|
222
|
-
version:
|
188
|
+
version: 3.0.2
|
223
189
|
type: :runtime
|
224
190
|
prerelease: false
|
225
191
|
version_requirements: !ruby/object:Gem::Requirement
|
226
192
|
requirements:
|
227
193
|
- - "~>"
|
228
194
|
- !ruby/object:Gem::Version
|
229
|
-
version:
|
195
|
+
version: 3.0.2
|
230
196
|
- !ruby/object:Gem::Dependency
|
231
197
|
name: tty-spinner
|
232
198
|
requirement: !ruby/object:Gem::Requirement
|
@@ -401,14 +367,14 @@ dependencies:
|
|
401
367
|
requirements:
|
402
368
|
- - "~>"
|
403
369
|
- !ruby/object:Gem::Version
|
404
|
-
version: '0.
|
370
|
+
version: '0.48'
|
405
371
|
type: :development
|
406
372
|
prerelease: false
|
407
373
|
version_requirements: !ruby/object:Gem::Requirement
|
408
374
|
requirements:
|
409
375
|
- - "~>"
|
410
376
|
- !ruby/object:Gem::Version
|
411
|
-
version: '0.
|
377
|
+
version: '0.48'
|
412
378
|
description: Command line interface for IBM Aspera products
|
413
379
|
email:
|
414
380
|
- laurent.martin.aspera@fr.ibm.com
|
@@ -427,10 +393,22 @@ files:
|
|
427
393
|
- examples/dascli
|
428
394
|
- examples/proxy.pac
|
429
395
|
- examples/rubyc
|
430
|
-
- lib/aspera/
|
396
|
+
- lib/aspera/agent/alpha.rb
|
397
|
+
- lib/aspera/agent/base.rb
|
398
|
+
- lib/aspera/agent/connect.rb
|
399
|
+
- lib/aspera/agent/direct.rb
|
400
|
+
- lib/aspera/agent/httpgw.rb
|
401
|
+
- lib/aspera/agent/node.rb
|
402
|
+
- lib/aspera/agent/trsdk.rb
|
403
|
+
- lib/aspera/api/aoc.rb
|
404
|
+
- lib/aspera/api/ats.rb
|
405
|
+
- lib/aspera/api/cos_node.rb
|
406
|
+
- lib/aspera/api/node.rb
|
431
407
|
- lib/aspera/ascmd.rb
|
408
|
+
- lib/aspera/ascp/installation.rb
|
409
|
+
- lib/aspera/ascp/management.rb
|
410
|
+
- lib/aspera/ascp/products.rb
|
432
411
|
- lib/aspera/assert.rb
|
433
|
-
- lib/aspera/ats_api.rb
|
434
412
|
- lib/aspera/cli/basic_auth_plugin.rb
|
435
413
|
- lib/aspera/cli/error.rb
|
436
414
|
- lib/aspera/cli/extended_value.rb
|
@@ -440,6 +418,7 @@ files:
|
|
440
418
|
- lib/aspera/cli/main.rb
|
441
419
|
- lib/aspera/cli/manager.rb
|
442
420
|
- lib/aspera/cli/plugin.rb
|
421
|
+
- lib/aspera/cli/plugin_factory.rb
|
443
422
|
- lib/aspera/cli/plugins/alee.rb
|
444
423
|
- lib/aspera/cli/plugins/aoc.rb
|
445
424
|
- lib/aspera/cli/plugins/ats.rb
|
@@ -460,7 +439,6 @@ files:
|
|
460
439
|
- lib/aspera/cli/version.rb
|
461
440
|
- lib/aspera/colors.rb
|
462
441
|
- lib/aspera/command_line_builder.rb
|
463
|
-
- lib/aspera/cos_node.rb
|
464
442
|
- lib/aspera/coverage.rb
|
465
443
|
- lib/aspera/data/1
|
466
444
|
- lib/aspera/data/2
|
@@ -470,25 +448,6 @@ files:
|
|
470
448
|
- lib/aspera/data/6
|
471
449
|
- lib/aspera/data_repository.rb
|
472
450
|
- lib/aspera/environment.rb
|
473
|
-
- lib/aspera/fasp/agent_alpha.rb
|
474
|
-
- lib/aspera/fasp/agent_base.rb
|
475
|
-
- lib/aspera/fasp/agent_connect.rb
|
476
|
-
- lib/aspera/fasp/agent_direct.rb
|
477
|
-
- lib/aspera/fasp/agent_httpgw.rb
|
478
|
-
- lib/aspera/fasp/agent_node.rb
|
479
|
-
- lib/aspera/fasp/agent_trsdk.rb
|
480
|
-
- lib/aspera/fasp/error.rb
|
481
|
-
- lib/aspera/fasp/error_info.rb
|
482
|
-
- lib/aspera/fasp/faux_file.rb
|
483
|
-
- lib/aspera/fasp/installation.rb
|
484
|
-
- lib/aspera/fasp/management.rb
|
485
|
-
- lib/aspera/fasp/parameters.rb
|
486
|
-
- lib/aspera/fasp/parameters.yaml
|
487
|
-
- lib/aspera/fasp/products.rb
|
488
|
-
- lib/aspera/fasp/resume_policy.rb
|
489
|
-
- lib/aspera/fasp/sync.rb
|
490
|
-
- lib/aspera/fasp/transfer_spec.rb
|
491
|
-
- lib/aspera/fasp/uri.rb
|
492
451
|
- lib/aspera/faspex_gw.rb
|
493
452
|
- lib/aspera/faspex_postproc.rb
|
494
453
|
- lib/aspera/hash_ext.rb
|
@@ -499,9 +458,14 @@ files:
|
|
499
458
|
- lib/aspera/line_logger.rb
|
500
459
|
- lib/aspera/log.rb
|
501
460
|
- lib/aspera/nagios.rb
|
502
|
-
- lib/aspera/node.rb
|
503
461
|
- lib/aspera/node_simulator.rb
|
504
462
|
- lib/aspera/oauth.rb
|
463
|
+
- lib/aspera/oauth/base.rb
|
464
|
+
- lib/aspera/oauth/factory.rb
|
465
|
+
- lib/aspera/oauth/generic.rb
|
466
|
+
- lib/aspera/oauth/jwt.rb
|
467
|
+
- lib/aspera/oauth/url_json.rb
|
468
|
+
- lib/aspera/oauth/web.rb
|
505
469
|
- lib/aspera/open_application.rb
|
506
470
|
- lib/aspera/persistency_action_once.rb
|
507
471
|
- lib/aspera/persistency_folder.rb
|
@@ -518,10 +482,19 @@ files:
|
|
518
482
|
- lib/aspera/rest_call_error.rb
|
519
483
|
- lib/aspera/rest_error_analyzer.rb
|
520
484
|
- lib/aspera/rest_errors_aspera.rb
|
485
|
+
- lib/aspera/resumer.rb
|
521
486
|
- lib/aspera/secret_hider.rb
|
522
487
|
- lib/aspera/ssh.rb
|
523
488
|
- lib/aspera/temp_file_manager.rb
|
524
489
|
- lib/aspera/timer_limiter.rb
|
490
|
+
- lib/aspera/transfer/error.rb
|
491
|
+
- lib/aspera/transfer/error_info.rb
|
492
|
+
- lib/aspera/transfer/faux_file.rb
|
493
|
+
- lib/aspera/transfer/parameters.rb
|
494
|
+
- lib/aspera/transfer/spec.rb
|
495
|
+
- lib/aspera/transfer/spec.yaml
|
496
|
+
- lib/aspera/transfer/sync.rb
|
497
|
+
- lib/aspera/transfer/uri.rb
|
525
498
|
- lib/aspera/uri_reader.rb
|
526
499
|
- lib/aspera/web_auth.rb
|
527
500
|
- lib/aspera/web_server_simple.rb
|
metadata.gz.sig
CHANGED
Binary file
|