aspera-cli 4.15.0 → 4.16.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.
Files changed (80) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data/BUGS.md +29 -3
  4. data/CHANGELOG.md +292 -228
  5. data/CONTRIBUTING.md +69 -18
  6. data/README.md +1102 -952
  7. data/bin/ascli +13 -31
  8. data/bin/asession +3 -1
  9. data/examples/dascli +2 -2
  10. data/lib/aspera/aoc.rb +28 -33
  11. data/lib/aspera/ascmd.rb +3 -6
  12. data/lib/aspera/assert.rb +45 -0
  13. data/lib/aspera/cli/extended_value.rb +5 -5
  14. data/lib/aspera/cli/formatter.rb +26 -13
  15. data/lib/aspera/cli/hints.rb +4 -3
  16. data/lib/aspera/cli/main.rb +16 -3
  17. data/lib/aspera/cli/manager.rb +45 -36
  18. data/lib/aspera/cli/plugin.rb +20 -13
  19. data/lib/aspera/cli/plugins/aoc.rb +103 -73
  20. data/lib/aspera/cli/plugins/ats.rb +4 -3
  21. data/lib/aspera/cli/plugins/config.rb +114 -119
  22. data/lib/aspera/cli/plugins/cos.rb +2 -2
  23. data/lib/aspera/cli/plugins/faspex.rb +23 -19
  24. data/lib/aspera/cli/plugins/faspex5.rb +75 -43
  25. data/lib/aspera/cli/plugins/node.rb +28 -15
  26. data/lib/aspera/cli/plugins/orchestrator.rb +4 -2
  27. data/lib/aspera/cli/plugins/preview.rb +9 -7
  28. data/lib/aspera/cli/plugins/server.rb +6 -3
  29. data/lib/aspera/cli/plugins/shares.rb +30 -26
  30. data/lib/aspera/cli/sync_actions.rb +9 -9
  31. data/lib/aspera/cli/transfer_agent.rb +21 -14
  32. data/lib/aspera/cli/transfer_progress.rb +2 -3
  33. data/lib/aspera/cli/version.rb +1 -1
  34. data/lib/aspera/command_line_builder.rb +13 -11
  35. data/lib/aspera/cos_node.rb +3 -2
  36. data/lib/aspera/coverage.rb +22 -0
  37. data/lib/aspera/data_repository.rb +33 -2
  38. data/lib/aspera/environment.rb +4 -2
  39. data/lib/aspera/fasp/{agent_aspera.rb → agent_alpha.rb} +29 -39
  40. data/lib/aspera/fasp/agent_base.rb +17 -7
  41. data/lib/aspera/fasp/agent_direct.rb +88 -84
  42. data/lib/aspera/fasp/agent_httpgw.rb +4 -3
  43. data/lib/aspera/fasp/agent_node.rb +3 -2
  44. data/lib/aspera/fasp/agent_trsdk.rb +79 -37
  45. data/lib/aspera/fasp/installation.rb +51 -12
  46. data/lib/aspera/fasp/management.rb +11 -6
  47. data/lib/aspera/fasp/parameters.rb +53 -47
  48. data/lib/aspera/fasp/resume_policy.rb +7 -5
  49. data/lib/aspera/fasp/sync.rb +273 -0
  50. data/lib/aspera/fasp/transfer_spec.rb +10 -8
  51. data/lib/aspera/fasp/uri.rb +2 -2
  52. data/lib/aspera/faspex_gw.rb +11 -8
  53. data/lib/aspera/faspex_postproc.rb +6 -5
  54. data/lib/aspera/id_generator.rb +3 -1
  55. data/lib/aspera/json_rpc.rb +10 -8
  56. data/lib/aspera/keychain/encrypted_hash.rb +46 -11
  57. data/lib/aspera/keychain/macos_security.rb +15 -13
  58. data/lib/aspera/log.rb +4 -3
  59. data/lib/aspera/nagios.rb +7 -2
  60. data/lib/aspera/node.rb +17 -16
  61. data/lib/aspera/node_simulator.rb +214 -0
  62. data/lib/aspera/oauth.rb +22 -19
  63. data/lib/aspera/persistency_action_once.rb +13 -14
  64. data/lib/aspera/persistency_folder.rb +3 -2
  65. data/lib/aspera/preview/file_types.rb +53 -267
  66. data/lib/aspera/preview/generator.rb +7 -5
  67. data/lib/aspera/preview/terminal.rb +14 -5
  68. data/lib/aspera/preview/utils.rb +8 -7
  69. data/lib/aspera/proxy_auto_config.rb +6 -3
  70. data/lib/aspera/rest.rb +29 -13
  71. data/lib/aspera/rest_error_analyzer.rb +1 -0
  72. data/lib/aspera/rest_errors_aspera.rb +2 -0
  73. data/lib/aspera/secret_hider.rb +5 -2
  74. data/lib/aspera/ssh.rb +10 -8
  75. data/lib/aspera/temp_file_manager.rb +1 -1
  76. data/lib/aspera/web_server_simple.rb +2 -1
  77. data.tar.gz.sig +0 -0
  78. metadata +96 -45
  79. metadata.gz.sig +0 -0
  80. 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
- raise "REST endpoint shall be http/s not #{uri.scheme}" unless %w[http https].include?(uri.scheme)
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
- raise 'Internal Error: param must be Hash' unless params.is_a?(Hash)
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
- raise "wring type #{http_session.class}" unless http_session.is_a?(Net::HTTP)
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
- raise "no socket for #{http_session}" if result.nil?
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
- raise "ERROR: unknown Rest option #{key}" unless @@global.key?(key)
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
- raise 'ERROR: no OAuth defined' unless @params[:auth][:type].eql?(:oauth2)
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
- raise 'ERROR: expecting Hash' unless a_rest_params.is_a?(Hash)
152
- raise 'ERROR: expecting base_url' unless a_rest_params[:base_url].is_a?(String)
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
- raise "ERROR: expecting boolean, have #{force_refresh}" unless [true, false].include?(force_refresh)
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
- raise "Hash call parameter is required (#{call_data.class})" unless call_data.is_a?(Hash)
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 raise "unsupported auth type: [#{call_data[:auth][:type]}]"
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
- raise "Error: redirect location is relative: #{new_url}, but does not start with /." unless new_url.start_with?('/')
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
- raise "Internal error: expecting array, have #{matching_items.class}" unless matching_items.is_a?(Array)
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
@@ -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
- # HACK: deactivate ed25519 and ecdsa private keys from ssh identities, as it usually cause problems
6
- old_verbose = $VERBOSE
7
- $VERBOSE = nil
8
- begin
9
- 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
10
- rescue StandardError
11
- # ignore errors
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
@@ -42,7 +42,7 @@ module Aspera
42
42
  new_file
43
43
  end
44
44
 
45
- # same as above but in global temp folder
45
+ # same as above but in global temp folder, with user's name
46
46
  def new_file_path_global(base_name)
47
47
  username =
48
48
  begin
@@ -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
- raise 'certificate must be Hash' unless certificate.is_a?(Hash)
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.15.0
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: 2023-11-17 00:00:00.000000000 Z
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: mimemagic
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: '2.0'
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: '2.0'
299
+ version: '13.0'
252
300
  - !ruby/object:Gem::Dependency
253
- name: rake
301
+ name: reek
254
302
  requirement: !ruby/object:Gem::Requirement
255
303
  requirements:
256
304
  - - "~>"
257
305
  - !ruby/object:Gem::Version
258
- version: '13.0'
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: '13.0'
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.18'
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.18'
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.44'
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.44'
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/agent_aspera.rb
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.10
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