aspera-cli 4.26.1 → 4.27.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 +4 -4
- checksums.yaml.gz.sig +0 -0
- data/CHANGELOG.md +300 -22
- data/CONTRIBUTING.md +100 -12
- data/bin/ascli +5 -5
- data/docs/README.md +10757 -0
- data/docs/test-mcp-with-ai.md +202 -0
- data/lib/aspera/agent/base.rb +20 -6
- data/lib/aspera/agent/connect.rb +53 -16
- data/lib/aspera/agent/desktop.rb +52 -17
- data/lib/aspera/agent/direct.rb +27 -25
- data/lib/aspera/agent/factory.rb +4 -0
- data/lib/aspera/agent/httpgw.rb +2 -2
- data/lib/aspera/agent/node.rb +34 -2
- data/lib/aspera/agent/transferd.rb +39 -3
- data/lib/aspera/api/alee.rb +1 -1
- data/lib/aspera/api/aoc.rb +56 -51
- data/lib/aspera/api/cos_node.rb +2 -2
- data/lib/aspera/api/faspex.rb +22 -20
- data/lib/aspera/api/httpgw.rb +4 -4
- data/lib/aspera/api/node.rb +33 -30
- data/lib/aspera/api/queries/bss_subscription_account.graphql +18 -0
- data/lib/aspera/api/queries/bss_subscription_usage.graphql +18 -0
- data/lib/aspera/ascmd.rb +25 -23
- data/lib/aspera/ascp/installation.rb +43 -40
- data/lib/aspera/ascp/management.rb +2 -3
- data/lib/aspera/cli/ascp_actions.rb +155 -0
- data/lib/aspera/cli/async_transfer_store.rb +81 -0
- data/lib/aspera/cli/bootstrapper.rb +197 -0
- data/lib/aspera/cli/command_registry.rb +145 -0
- data/lib/aspera/cli/command_spec.rb +138 -0
- data/lib/aspera/cli/context.rb +71 -0
- data/lib/aspera/cli/error.rb +16 -0
- data/lib/aspera/cli/extended_value.rb +5 -3
- data/lib/aspera/cli/formatter.rb +122 -209
- data/lib/aspera/cli/gem_checker.rb +65 -0
- data/lib/aspera/cli/hints.rb +2 -2
- data/lib/aspera/cli/http.rb +218 -0
- data/lib/aspera/cli/info.rb +2 -0
- data/lib/aspera/cli/mailer.rb +97 -0
- data/lib/aspera/cli/mcp_tool.rb +198 -0
- data/lib/aspera/cli/options.schema.yaml +364 -7
- data/lib/aspera/cli/{manager.rb → parser.rb} +337 -144
- data/lib/aspera/cli/plugins/alee.rb +20 -22
- data/lib/aspera/cli/plugins/aoc.rb +1173 -849
- data/lib/aspera/cli/plugins/ats.rb +200 -161
- data/lib/aspera/cli/plugins/base.rb +470 -107
- data/lib/aspera/cli/plugins/basic_auth.rb +14 -4
- data/lib/aspera/cli/plugins/config.rb +434 -1032
- data/lib/aspera/cli/plugins/console.rb +106 -64
- data/lib/aspera/cli/plugins/cos.rb +44 -32
- data/lib/aspera/cli/plugins/factory.rb +7 -4
- data/lib/aspera/cli/plugins/faspex.rb +296 -259
- data/lib/aspera/cli/plugins/faspex5.rb +592 -344
- data/lib/aspera/cli/plugins/faspio.rb +49 -51
- data/lib/aspera/cli/plugins/httpgw.rb +18 -25
- data/lib/aspera/cli/plugins/mcp.rb +279 -0
- data/lib/aspera/cli/plugins/node.rb +1001 -797
- data/lib/aspera/cli/plugins/oauth.rb +7 -10
- data/lib/aspera/cli/plugins/orchestrator.rb +111 -139
- data/lib/aspera/cli/plugins/preview.rb +183 -142
- data/lib/aspera/cli/plugins/server.rb +125 -80
- data/lib/aspera/cli/plugins/shares.rb +301 -107
- data/lib/aspera/cli/preset_actions.rb +139 -0
- data/lib/aspera/cli/preset_manager.rb +236 -0
- data/lib/aspera/cli/result.rb +360 -0
- data/lib/aspera/cli/runner.rb +473 -0
- data/lib/aspera/cli/secret_finder.rb +40 -0
- data/lib/aspera/cli/special_values.rb +1 -0
- data/lib/aspera/cli/sync_actions.rb +84 -56
- data/lib/aspera/cli/terminal_formatter.rb +65 -0
- data/lib/aspera/cli/transfer_actions.rb +83 -0
- data/lib/aspera/cli/transfer_agent.rb +116 -51
- data/lib/aspera/cli/transfer_progress.rb +9 -9
- data/lib/aspera/cli/vault_manager.rb +57 -0
- data/lib/aspera/cli/version.rb +1 -1
- data/lib/aspera/cli/wizard.rb +26 -26
- data/lib/aspera/command_line_builder.rb +23 -23
- data/lib/aspera/data_repository.rb +6 -1
- data/lib/aspera/dot_container.rb +5 -5
- data/lib/aspera/environment.rb +39 -13
- data/lib/aspera/exec_spec.rb +13 -0
- data/lib/aspera/faspex_gw.rb +2 -2
- data/lib/aspera/faspex_postproc.rb +4 -3
- data/lib/aspera/graphql.rb +35 -0
- data/lib/aspera/hash_ext.rb +6 -0
- data/lib/aspera/json_rpc/client.rb +62 -0
- data/lib/aspera/json_rpc/version.rb +7 -0
- data/lib/aspera/keychain/base.rb +1 -1
- data/lib/aspera/keychain/encrypted_hash.rb +2 -2
- data/lib/aspera/keychain/factory.rb +4 -4
- data/lib/aspera/keychain/macos_security.rb +4 -4
- data/lib/aspera/link_header.rb +82 -0
- data/lib/aspera/log.rb +23 -5
- data/lib/aspera/markdown.rb +85 -2
- data/lib/aspera/nagios.rb +2 -2
- data/lib/aspera/node_simulator.rb +3 -1
- data/lib/aspera/oauth/base.rb +10 -10
- data/lib/aspera/oauth/boot.rb +43 -0
- data/lib/aspera/oauth/factory.rb +41 -15
- data/lib/aspera/oauth/jwt.rb +4 -4
- data/lib/aspera/oauth/web.rb +4 -4
- data/lib/aspera/oauth.rb +1 -0
- data/lib/aspera/persistency_action_once.rb +10 -10
- data/lib/aspera/persistency_folder.rb +10 -3
- data/lib/aspera/preview/file_types.rb +7 -3
- data/lib/aspera/preview/generator.rb +3 -3
- data/lib/aspera/preview/utils.rb +1 -1
- data/lib/aspera/products/connect.rb +4 -1
- data/lib/aspera/products/other.rb +1 -1
- data/lib/aspera/products/transferd.rb +3 -3
- data/lib/aspera/proxy_auto_config.rb +10 -9
- data/lib/aspera/rest.rb +18 -40
- data/lib/aspera/rest_error_analyzer.rb +7 -3
- data/lib/aspera/rest_errors_aspera.rb +0 -10
- data/lib/aspera/rest_list.rb +13 -6
- data/lib/aspera/schema/IBM Aspera Faspex API-5.0-enhanced.yaml +14 -4
- data/lib/aspera/schema/IBM Aspera on Cloud API-0.2.6-enhanced.yaml +2730 -648
- data/lib/aspera/schema/async_tables.yaml +361 -0
- data/lib/aspera/schema/documentation.rb +57 -26
- data/lib/aspera/schema/reader.rb +60 -11
- data/lib/aspera/schema/registry.rb +50 -10
- data/lib/aspera/secret_hider.rb +11 -2
- data/lib/aspera/ssl.rb +4 -4
- data/lib/aspera/sync/conf.schema.yaml +2 -2
- data/lib/aspera/sync/database.rb +14 -10
- data/lib/aspera/sync/operations.rb +15 -18
- data/lib/aspera/temp_file_manager.rb +5 -1
- data/lib/aspera/timer_limiter.rb +1 -1
- data/lib/aspera/transfer/faux_file.rb +24 -11
- data/lib/aspera/transfer/parameters.rb +27 -25
- data/lib/aspera/transfer/result.rb +74 -0
- data/lib/aspera/transfer/resumer.rb +7 -7
- data/lib/aspera/transfer/spec.rb +18 -1
- data/lib/aspera/transfer/spec.schema.yaml +26 -8
- data/lib/aspera/transfer/uri.rb +1 -1
- data/lib/aspera/uri_reader.rb +2 -2
- data/lib/aspera/web_auth.rb +2 -2
- data/lib/aspera/web_server_simple.rb +8 -5
- data/lib/aspera/yaml.rb +2 -1
- data.tar.gz.sig +0 -0
- metadata +45 -16
- metadata.gz.sig +0 -0
- data/lib/aspera/cli/main.rb +0 -480
- data/lib/aspera/json_rpc.rb +0 -51
|
@@ -12,20 +12,20 @@ module Aspera
|
|
|
12
12
|
# @param iter_max [Integer] Maximum number of executions
|
|
13
13
|
# @param sleep_initial [Integer] Initial wait to re-execute
|
|
14
14
|
# @param sleep_factor [Integer] Multiplier
|
|
15
|
-
# @param sleep_max
|
|
15
|
+
# @param sleep_max [Integer] Max iterations
|
|
16
16
|
def initialize(
|
|
17
17
|
iter_max: 7,
|
|
18
18
|
sleep_initial: 2,
|
|
19
19
|
sleep_factor: 2,
|
|
20
20
|
sleep_max: 60
|
|
21
21
|
)
|
|
22
|
-
Aspera.assert_type(iter_max, Integer){
|
|
22
|
+
Aspera.assert_type(iter_max, Integer){'iter_max'}
|
|
23
23
|
@iter_max = iter_max
|
|
24
|
-
Aspera.assert_type(sleep_initial, Integer){
|
|
24
|
+
Aspera.assert_type(sleep_initial, Integer){'sleep_initial'}
|
|
25
25
|
@sleep_initial = sleep_initial
|
|
26
|
-
Aspera.assert_type(sleep_factor, Integer){
|
|
26
|
+
Aspera.assert_type(sleep_factor, Integer){'sleep_factor'}
|
|
27
27
|
@sleep_factor = sleep_factor
|
|
28
|
-
Aspera.assert_type(sleep_max, Integer){
|
|
28
|
+
Aspera.assert_type(sleep_max, Integer){'sleep_max'}
|
|
29
29
|
@sleep_max = sleep_max
|
|
30
30
|
end
|
|
31
31
|
|
|
@@ -34,7 +34,7 @@ module Aspera
|
|
|
34
34
|
#
|
|
35
35
|
# @yieldreturn [void] Executes the transfer operation
|
|
36
36
|
def execute_with_resume
|
|
37
|
-
Aspera.assert(block_given
|
|
37
|
+
Aspera.assert(block_given?, 'block required for execute_with_resume')
|
|
38
38
|
# maximum of retry
|
|
39
39
|
remaining_resumes = @iter_max
|
|
40
40
|
sleep_seconds = @sleep_initial
|
|
@@ -53,7 +53,7 @@ module Aspera
|
|
|
53
53
|
# do not retry non-retryable
|
|
54
54
|
raise unless e.retryable?
|
|
55
55
|
# exit if we exceed the max number of retry
|
|
56
|
-
|
|
56
|
+
Aspera.assert(remaining_resumes > 0, type: Error){"Maximum number of retry reached: #{@iter_max}"}
|
|
57
57
|
end
|
|
58
58
|
|
|
59
59
|
# take this retry in account
|
data/lib/aspera/transfer/spec.rb
CHANGED
|
@@ -34,7 +34,13 @@ module Aspera
|
|
|
34
34
|
'sparse_csum' => 'sparse_checksum',
|
|
35
35
|
'full_csum' => 'full_checksum'
|
|
36
36
|
}
|
|
37
|
-
|
|
37
|
+
# Multipliers for target_rate suffix (result is in kbps)
|
|
38
|
+
RATE_SUFFIX_KBPS = {
|
|
39
|
+
'k' => 1,
|
|
40
|
+
'm' => 1_000,
|
|
41
|
+
'g' => 1_000_000
|
|
42
|
+
}.freeze
|
|
43
|
+
private_constant :POLICY_FIX, :RATE_SUFFIX_KBPS
|
|
38
44
|
# translate upload/download to send/receive
|
|
39
45
|
def transfer_type_to_direction(transfer_type)
|
|
40
46
|
XFER_TYPE_TO_DIR.fetch(transfer_type)
|
|
@@ -45,6 +51,17 @@ module Aspera
|
|
|
45
51
|
XFER_DIR_TO_TYPE.fetch(direction)
|
|
46
52
|
end
|
|
47
53
|
|
|
54
|
+
# Parse a human-readable rate string (as accepted by ascp -l) into an integer kbps value.
|
|
55
|
+
# Accepted: plain integer (kbps), or integer + suffix k/K (kbps), m/M (x1000 kbps), g/G (x1000000 kbps).
|
|
56
|
+
# @param value [String] e.g. "100m", "500000", "1g"
|
|
57
|
+
# @return [Integer] value in kbps
|
|
58
|
+
def rate_string_to_kbps(value)
|
|
59
|
+
m = value.to_s.strip.match(/\A(\d+)([kKmMgG])?\z/)
|
|
60
|
+
Aspera.assert(m){"Invalid rate value: #{value.inspect}. Expected integer with optional suffix k/K, m/M or g/G."}
|
|
61
|
+
multiplier = m[2] ? RATE_SUFFIX_KBPS.fetch(m[2].downcase) : 1
|
|
62
|
+
return m[1].to_i * multiplier
|
|
63
|
+
end
|
|
64
|
+
|
|
48
65
|
def fix_transferd_resume_policy(transfer_spec)
|
|
49
66
|
# Fix discrepancy in transfer spec
|
|
50
67
|
transfer_spec['resume_policy'] = POLICY_FIX[transfer_spec['resume_policy']] if transfer_spec.key?('resume_policy')
|
|
@@ -377,6 +377,7 @@ properties:
|
|
|
377
377
|
description: Specifies whether to precalculate the job size.
|
|
378
378
|
type: boolean
|
|
379
379
|
x-cli-switch: true
|
|
380
|
+
x-cli-false: --precalculate-disable
|
|
380
381
|
preserve_access_time:
|
|
381
382
|
description: >-
|
|
382
383
|
Preserve the source-file access timestamps at the destination.
|
|
@@ -706,7 +707,17 @@ properties:
|
|
|
706
707
|
- transferd
|
|
707
708
|
x-cli-option: -i
|
|
708
709
|
symlink_policy:
|
|
709
|
-
description:
|
|
710
|
+
description: >-
|
|
711
|
+
Handle source side symbolic links.
|
|
712
|
+
Refer to HSTS manual for more details.
|
|
713
|
+
|
|
714
|
+
- `follow`: Follow a symbolic link and transfer the contents of the linked file or directory when the link target is in the user's docroot.
|
|
715
|
+
|
|
716
|
+
- `copy`: Copy only the symbolic link. If a file with the same name exists at the destination, the symbolic link does not replace the file.
|
|
717
|
+
|
|
718
|
+
- `skip`: Skip-symbolic links. The link or the file to which it points are not transferred.
|
|
719
|
+
|
|
720
|
+
- `copy+force`: Copy only the symbolic link. If a file with the same name exists at the destination, the symbolic link replaces the file. If the file of the same name at the destination is a symbolic link to a directory, it is not replaced.
|
|
710
721
|
type: string
|
|
711
722
|
enum:
|
|
712
723
|
- follow
|
|
@@ -719,15 +730,13 @@ properties:
|
|
|
719
730
|
description: >-
|
|
720
731
|
Metadata for transfer as JSON.
|
|
721
732
|
Key `aspera` is reserved.
|
|
722
|
-
Key `aspera.xfer_retry` specifies a retry timeout for node API initiated transfers.
|
|
733
|
+
Key `aspera.xfer_retry` specifies a "retry timeout" but is not actually used for node API initiated transfers.
|
|
723
734
|
type: object
|
|
724
735
|
x-cli-option: --tags64
|
|
725
736
|
x-cli-convert: json64
|
|
726
737
|
tags64:
|
|
727
738
|
description: >-
|
|
728
|
-
|
|
729
|
-
Key `aspera` is reserved.
|
|
730
|
-
Key `aspera.xfer_retry` specifies a retry timeout for node API initiated transfers.
|
|
739
|
+
Base64 string for `tags`.
|
|
731
740
|
type: string
|
|
732
741
|
x-agents:
|
|
733
742
|
- direct
|
|
@@ -745,6 +754,14 @@ properties:
|
|
|
745
754
|
description: Specifies desired speed for the transfer.
|
|
746
755
|
type: integer
|
|
747
756
|
x-cli-option: -l
|
|
757
|
+
target_rate:
|
|
758
|
+
description: >-
|
|
759
|
+
Pseudo-parameter: desired transfer rate as a human-readable string with an optional unit suffix.
|
|
760
|
+
Converted to `target_rate_kbps` before the transfer is started, overriding it if both are present.
|
|
761
|
+
Accepted formats: plain integer (kbps), or integer followed by `k`/`K` (kbps), `m`/`M` (x1000 kbps), `g`/`G` (x1000000 kbps).
|
|
762
|
+
Examples: `100000`, `100000k`, `100m`, `1g`.
|
|
763
|
+
type: string
|
|
764
|
+
x-cli-special: true
|
|
748
765
|
title:
|
|
749
766
|
description: Title of the transfer.
|
|
750
767
|
type: string
|
|
@@ -753,11 +770,12 @@ properties:
|
|
|
753
770
|
- connect
|
|
754
771
|
- transferd
|
|
755
772
|
token:
|
|
756
|
-
|
|
773
|
+
$comment: Also arg -W
|
|
774
|
+
description: Authorization token. Type is Bearer, Basic or ATM.
|
|
757
775
|
type: string
|
|
758
776
|
x-cli-envvar: ASPERA_SCP_TOKEN
|
|
759
777
|
use_ascp4:
|
|
760
|
-
description: Specify version of protocol.
|
|
778
|
+
description: Specify version of protocol. `ascp4` will be deprecated.
|
|
761
779
|
type: boolean
|
|
762
780
|
default: false
|
|
763
781
|
x-agents:
|
|
@@ -881,7 +899,7 @@ properties:
|
|
|
881
899
|
xfer_max_retries:
|
|
882
900
|
description: >-
|
|
883
901
|
Maximum number of retries, for node API initiated transfers.
|
|
884
|
-
Shall not exceed `aspera.conf` parameter `transfer_manager_max_retries` (default
|
|
902
|
+
Shall not exceed `aspera.conf` parameter `transfer_manager_max_retries` (default 3).
|
|
885
903
|
type: integer
|
|
886
904
|
x-agents:
|
|
887
905
|
- node
|
data/lib/aspera/transfer/uri.rb
CHANGED
|
@@ -13,7 +13,7 @@ module Aspera
|
|
|
13
13
|
SCHEME = 'faspe'
|
|
14
14
|
def initialize(fasp_link)
|
|
15
15
|
@fasp_uri = URI.parse(fasp_link.gsub(' ', '%20'))
|
|
16
|
-
Aspera.
|
|
16
|
+
Aspera.assert_values(@fasp_uri.scheme, [SCHEME]){"Invalid scheme: #{@fasp_uri.scheme}"}
|
|
17
17
|
end
|
|
18
18
|
|
|
19
19
|
# Generate transfer spec from provided faspe: URL
|
data/lib/aspera/uri_reader.rb
CHANGED
|
@@ -45,14 +45,14 @@ module Aspera
|
|
|
45
45
|
end
|
|
46
46
|
when SCHEME_FILE, NilClass
|
|
47
47
|
local_file_path = uri.path
|
|
48
|
-
|
|
48
|
+
Aspera.assert(!local_file_path.nil?, type: Error){'URL shall have a path, check syntax'}
|
|
49
49
|
local_file_path = File.expand_path(local_file_path.gsub(%r{^/}, '')) if %r{^/(~|.|..)/}.match?(local_file_path)
|
|
50
50
|
return File.read(local_file_path)
|
|
51
51
|
else Aspera.error_unexpected_value(uri.scheme){"scheme for [#{uri_to_read}]"}
|
|
52
52
|
end
|
|
53
53
|
end
|
|
54
54
|
|
|
55
|
-
# @return
|
|
55
|
+
# @return [String] path to file with content at URL
|
|
56
56
|
def read_as_file(url)
|
|
57
57
|
if url.start_with?(SCHEME_FILE_PFX1)
|
|
58
58
|
# for file scheme, return directly the path
|
data/lib/aspera/web_auth.rb
CHANGED
|
@@ -6,8 +6,8 @@ require 'aspera/assert'
|
|
|
6
6
|
module Aspera
|
|
7
7
|
# servlet called on callback: it records the callback request
|
|
8
8
|
class WebAuthServlet < WEBrick::HTTPServlet::AbstractServlet
|
|
9
|
-
# @param server
|
|
10
|
-
# @param web_auth [WebAuth]
|
|
9
|
+
# @param server [WEBrick::HTTPServer] the HTTP server instance
|
|
10
|
+
# @param web_auth [WebAuth] the WebAuth instance to record the callback
|
|
11
11
|
def initialize(server, web_auth)
|
|
12
12
|
Log.log.debug('WebAuthServlet initialize')
|
|
13
13
|
super(server)
|
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
3
|
require 'webrick'
|
|
4
|
-
require 'webrick/https'
|
|
5
4
|
require 'aspera/log'
|
|
6
5
|
require 'aspera/assert'
|
|
7
6
|
require 'aspera/hash_ext'
|
|
8
|
-
require 'openssl'
|
|
9
7
|
|
|
10
8
|
module Aspera
|
|
11
9
|
# Simple WEBrick server with HTTPS support
|
|
@@ -42,7 +40,7 @@ module Aspera
|
|
|
42
40
|
cert
|
|
43
41
|
end
|
|
44
42
|
|
|
45
|
-
# @return
|
|
43
|
+
# @return [Array<OpenSSL::X509::Certificate>] list of Certificates from chain file
|
|
46
44
|
def read_chain_file(chain)
|
|
47
45
|
File.read(chain).scan(/-----BEGIN CERTIFICATE-----.*?-----END CERTIFICATE-----/m).map{ |i| OpenSSL::X509::Certificate.new(i)}
|
|
48
46
|
end
|
|
@@ -66,13 +64,18 @@ module Aspera
|
|
|
66
64
|
when 'http'
|
|
67
65
|
Log.log.debug('HTTP mode')
|
|
68
66
|
when 'https'
|
|
67
|
+
# Required lazily: webrick/ssl.rb reads OpenSSL::OPENSSL_VERSION at load time,
|
|
68
|
+
# a constant CosmoRuby's OpenSSL shim does not define, so requiring it
|
|
69
|
+
# unconditionally at file load would break any command in a Cosmo build
|
|
70
|
+
# even when no HTTPS server is ever started.
|
|
71
|
+
require 'webrick/https'
|
|
69
72
|
webrick_options[:SSLEnable] = true
|
|
70
73
|
if cert.nil? && key.nil?
|
|
71
74
|
webrick_options[:SSLCertName] = [['CN', WEBrick::Utils.getservername]]
|
|
72
75
|
elsif cert && PKCS12_EXT.include?(File.extname(cert).downcase)
|
|
73
76
|
# PKCS12
|
|
74
77
|
Log.log.debug('Using PKCS12 certificate')
|
|
75
|
-
|
|
78
|
+
Aspera.assert(!key.nil?, type: Error){'PKCS12 requires a key (password)'}
|
|
76
79
|
pkcs12 = OpenSSL::PKCS12.new(File.read(cert), key)
|
|
77
80
|
webrick_options[:SSLCertificate] = pkcs12.certificate
|
|
78
81
|
webrick_options[:SSLPrivateKey] = pkcs12.key
|
|
@@ -90,7 +93,7 @@ module Aspera
|
|
|
90
93
|
OpenSSL::X509::Certificate.new(File.read(cert))
|
|
91
94
|
end
|
|
92
95
|
webrick_options[:SSLExtraChainCert] = read_chain_file(chain) unless chain.nil?
|
|
93
|
-
|
|
96
|
+
Aspera.assert(webrick_options[:SSLCertificate].public_key.to_der == webrick_options[:SSLPrivateKey].public_key.to_der, type: Error){'key and cert do not match'}
|
|
94
97
|
end
|
|
95
98
|
end
|
|
96
99
|
# call constructor of parent class, but capture STDERR
|
data/lib/aspera/yaml.rb
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
+
require 'aspera/assert'
|
|
3
4
|
require 'yaml'
|
|
4
5
|
|
|
5
6
|
module Aspera
|
|
@@ -42,7 +43,7 @@ module Aspera
|
|
|
42
43
|
# @raise [RuntimeError] If duplicate keys are found
|
|
43
44
|
def safe_load(yaml)
|
|
44
45
|
duplicate_keys = find_duplicate_keys(Psych.parse_stream(yaml))
|
|
45
|
-
|
|
46
|
+
Aspera.assert(duplicate_keys.empty?){"Duplicate keys: #{duplicate_keys.join('; ')}"}
|
|
46
47
|
YAML.safe_load(yaml, permitted_classes: [Time, Date, Symbol])
|
|
47
48
|
end
|
|
48
49
|
|
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.27.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Laurent Martin
|
|
@@ -11,8 +11,8 @@ cert_chain:
|
|
|
11
11
|
-----BEGIN CERTIFICATE-----
|
|
12
12
|
MIIEzDCCAzSgAwIBAgIBATANBgkqhkiG9w0BAQsFADBeMR4wHAYDVQQDDBVsYXVy
|
|
13
13
|
ZW50Lm1hcnRpbi5hc3BlcmExEjAQBgoJkiaJk/IsZAEZFgJmcjETMBEGCgmSJomT
|
|
14
|
-
|
|
15
|
-
|
|
14
|
+
8ixkARkWA2libTETMBEGCgmSJomT8ixkARkWA2NvbTAeFw0yNjA3MTcxMjE0MzNa
|
|
15
|
+
Fw0yODA3MTYxMjE0MzNaMF4xHjAcBgNVBAMMFWxhdXJlbnQubWFydGluLmFzcGVy
|
|
16
16
|
YTESMBAGCgmSJomT8ixkARkWAmZyMRMwEQYKCZImiZPyLGQBGRYDaWJtMRMwEQYK
|
|
17
17
|
CZImiZPyLGQBGRYDY29tMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEA
|
|
18
18
|
1E7e2PvDM1xOXrAQKYzkFG2uZcPC+uAdcq2zqUdfLv2iwAXhGQ/P5f/6uDt/cL5b
|
|
@@ -26,15 +26,15 @@ cert_chain:
|
|
|
26
26
|
AgMBAAGjgZQwgZEwCQYDVR0TBAIwADALBgNVHQ8EBAMCBLAwHQYDVR0OBBYEFPZD
|
|
27
27
|
HBRnWTjzjeZq3Sx/yv7hhY9rMCsGA1UdEQQkMCKBIGxhdXJlbnQubWFydGluLmFz
|
|
28
28
|
cGVyYUBmci5pYm0uY29tMCsGA1UdEgQkMCKBIGxhdXJlbnQubWFydGluLmFzcGVy
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
29
|
+
YUBmci5pYm0uY29tMA0GCSqGSIb3DQEBCwUAA4IBgQDIMFaig1C/3xA+ccAZD89x
|
|
30
|
+
CF16MUxdTWkmDh1uWrC87tJzdSDwRUnvXvqnGCGU7L0slEfYfP2Aa2n/+3C70Eks
|
|
31
|
+
rE/SbOWEw1jvAGCZkzQehbg33rEGWymAzFzcBdwoF7AQTyux6ylhcfd0XCO+LQHW
|
|
32
|
+
CimlmOrKfR72Hahk7rt0fc72XY1M9q4IAc7PE/ldaiHKKzX5RbelvM8nMS8oV6tT
|
|
33
|
+
dIOyDDZFhBRhOmeAh6Rix57FA65pw7rxxxlMqtNYmM60s8Yzdb6YNW2p+Kk9IWgz
|
|
34
|
+
PCv9trmuKaozXi9HAQ7285yPMjeccIX28FWZzALu/OZt/98+E+l15rb2qq6AhYvn
|
|
35
|
+
FOfe1hzTtPWN7gAcyb+9pVICat2KG0WNzmM9wvLMc1IuPgaMGfeMg2moeELGAwqS
|
|
36
|
+
Mar5Df73cC83QnpW3RalwgGSb5ch8Cz8L9j/DaLIy/RoZ0lpNqGOvm8DUDQ/XoqM
|
|
37
|
+
IWpYzVavdZxwcrakRXil3x0kelFqCzC57twcNj0b0QI=
|
|
38
38
|
-----END CERTIFICATE-----
|
|
39
39
|
date: 1980-01-02 00:00:00.000000000 Z
|
|
40
40
|
dependencies:
|
|
@@ -319,6 +319,8 @@ files:
|
|
|
319
319
|
- README.md
|
|
320
320
|
- bin/ascli
|
|
321
321
|
- bin/asession
|
|
322
|
+
- docs/README.md
|
|
323
|
+
- docs/test-mcp-with-ai.md
|
|
322
324
|
- lib/aspera/agent/base.rb
|
|
323
325
|
- lib/aspera/agent/connect.rb
|
|
324
326
|
- lib/aspera/agent/desktop.rb
|
|
@@ -334,18 +336,29 @@ files:
|
|
|
334
336
|
- lib/aspera/api/faspex.rb
|
|
335
337
|
- lib/aspera/api/httpgw.rb
|
|
336
338
|
- lib/aspera/api/node.rb
|
|
339
|
+
- lib/aspera/api/queries/bss_subscription_account.graphql
|
|
340
|
+
- lib/aspera/api/queries/bss_subscription_usage.graphql
|
|
337
341
|
- lib/aspera/ascmd.rb
|
|
338
342
|
- lib/aspera/ascp/installation.rb
|
|
339
343
|
- lib/aspera/ascp/management.rb
|
|
340
344
|
- lib/aspera/assert.rb
|
|
345
|
+
- lib/aspera/cli/ascp_actions.rb
|
|
346
|
+
- lib/aspera/cli/async_transfer_store.rb
|
|
347
|
+
- lib/aspera/cli/bootstrapper.rb
|
|
348
|
+
- lib/aspera/cli/command_registry.rb
|
|
349
|
+
- lib/aspera/cli/command_spec.rb
|
|
350
|
+
- lib/aspera/cli/context.rb
|
|
341
351
|
- lib/aspera/cli/error.rb
|
|
342
352
|
- lib/aspera/cli/extended_value.rb
|
|
343
353
|
- lib/aspera/cli/formatter.rb
|
|
354
|
+
- lib/aspera/cli/gem_checker.rb
|
|
344
355
|
- lib/aspera/cli/hints.rb
|
|
356
|
+
- lib/aspera/cli/http.rb
|
|
345
357
|
- lib/aspera/cli/info.rb
|
|
346
|
-
- lib/aspera/cli/
|
|
347
|
-
- lib/aspera/cli/
|
|
358
|
+
- lib/aspera/cli/mailer.rb
|
|
359
|
+
- lib/aspera/cli/mcp_tool.rb
|
|
348
360
|
- lib/aspera/cli/options.schema.yaml
|
|
361
|
+
- lib/aspera/cli/parser.rb
|
|
349
362
|
- lib/aspera/cli/plugins/alee.rb
|
|
350
363
|
- lib/aspera/cli/plugins/aoc.rb
|
|
351
364
|
- lib/aspera/cli/plugins/ats.rb
|
|
@@ -359,16 +372,25 @@ files:
|
|
|
359
372
|
- lib/aspera/cli/plugins/faspex5.rb
|
|
360
373
|
- lib/aspera/cli/plugins/faspio.rb
|
|
361
374
|
- lib/aspera/cli/plugins/httpgw.rb
|
|
375
|
+
- lib/aspera/cli/plugins/mcp.rb
|
|
362
376
|
- lib/aspera/cli/plugins/node.rb
|
|
363
377
|
- lib/aspera/cli/plugins/oauth.rb
|
|
364
378
|
- lib/aspera/cli/plugins/orchestrator.rb
|
|
365
379
|
- lib/aspera/cli/plugins/preview.rb
|
|
366
380
|
- lib/aspera/cli/plugins/server.rb
|
|
367
381
|
- lib/aspera/cli/plugins/shares.rb
|
|
382
|
+
- lib/aspera/cli/preset_actions.rb
|
|
383
|
+
- lib/aspera/cli/preset_manager.rb
|
|
384
|
+
- lib/aspera/cli/result.rb
|
|
385
|
+
- lib/aspera/cli/runner.rb
|
|
386
|
+
- lib/aspera/cli/secret_finder.rb
|
|
368
387
|
- lib/aspera/cli/special_values.rb
|
|
369
388
|
- lib/aspera/cli/sync_actions.rb
|
|
389
|
+
- lib/aspera/cli/terminal_formatter.rb
|
|
390
|
+
- lib/aspera/cli/transfer_actions.rb
|
|
370
391
|
- lib/aspera/cli/transfer_agent.rb
|
|
371
392
|
- lib/aspera/cli/transfer_progress.rb
|
|
393
|
+
- lib/aspera/cli/vault_manager.rb
|
|
372
394
|
- lib/aspera/cli/version.rb
|
|
373
395
|
- lib/aspera/cli/wizard.rb
|
|
374
396
|
- lib/aspera/colors.rb
|
|
@@ -384,24 +406,29 @@ files:
|
|
|
384
406
|
- lib/aspera/data_repository.rb
|
|
385
407
|
- lib/aspera/dot_container.rb
|
|
386
408
|
- lib/aspera/environment.rb
|
|
409
|
+
- lib/aspera/exec_spec.rb
|
|
387
410
|
- lib/aspera/faspex_gw.rb
|
|
388
411
|
- lib/aspera/faspex_postproc.rb
|
|
389
412
|
- lib/aspera/formatter_interface.rb
|
|
413
|
+
- lib/aspera/graphql.rb
|
|
390
414
|
- lib/aspera/hash_ext.rb
|
|
391
415
|
- lib/aspera/id_generator.rb
|
|
392
|
-
- lib/aspera/json_rpc.rb
|
|
416
|
+
- lib/aspera/json_rpc/client.rb
|
|
417
|
+
- lib/aspera/json_rpc/version.rb
|
|
393
418
|
- lib/aspera/keychain/base.rb
|
|
394
419
|
- lib/aspera/keychain/encrypted_hash.rb
|
|
395
420
|
- lib/aspera/keychain/factory.rb
|
|
396
421
|
- lib/aspera/keychain/hashicorp_vault.rb
|
|
397
422
|
- lib/aspera/keychain/macos_security.rb
|
|
398
423
|
- lib/aspera/line_logger.rb
|
|
424
|
+
- lib/aspera/link_header.rb
|
|
399
425
|
- lib/aspera/log.rb
|
|
400
426
|
- lib/aspera/markdown.rb
|
|
401
427
|
- lib/aspera/nagios.rb
|
|
402
428
|
- lib/aspera/node_simulator.rb
|
|
403
429
|
- lib/aspera/oauth.rb
|
|
404
430
|
- lib/aspera/oauth/base.rb
|
|
431
|
+
- lib/aspera/oauth/boot.rb
|
|
405
432
|
- lib/aspera/oauth/factory.rb
|
|
406
433
|
- lib/aspera/oauth/generic.rb
|
|
407
434
|
- lib/aspera/oauth/jwt.rb
|
|
@@ -429,6 +456,7 @@ files:
|
|
|
429
456
|
- lib/aspera/rest_list.rb
|
|
430
457
|
- lib/aspera/schema/IBM Aspera Faspex API-5.0-enhanced.yaml
|
|
431
458
|
- lib/aspera/schema/IBM Aspera on Cloud API-0.2.6-enhanced.yaml
|
|
459
|
+
- lib/aspera/schema/async_tables.yaml
|
|
432
460
|
- lib/aspera/schema/documentation.rb
|
|
433
461
|
- lib/aspera/schema/reader.rb
|
|
434
462
|
- lib/aspera/schema/registry.rb
|
|
@@ -444,6 +472,7 @@ files:
|
|
|
444
472
|
- lib/aspera/transfer/error.rb
|
|
445
473
|
- lib/aspera/transfer/faux_file.rb
|
|
446
474
|
- lib/aspera/transfer/parameters.rb
|
|
475
|
+
- lib/aspera/transfer/result.rb
|
|
447
476
|
- lib/aspera/transfer/resumer.rb
|
|
448
477
|
- lib/aspera/transfer/spec.rb
|
|
449
478
|
- lib/aspera/transfer/spec.schema.yaml
|
|
@@ -479,7 +508,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
479
508
|
version: '0'
|
|
480
509
|
requirements:
|
|
481
510
|
- Read the manual for any requirement
|
|
482
|
-
rubygems_version: 4.0.
|
|
511
|
+
rubygems_version: 4.0.16
|
|
483
512
|
specification_version: 4
|
|
484
513
|
summary: 'Execute actions using command line on IBM Aspera Server products: Aspera
|
|
485
514
|
on Cloud, Faspex, Shares, Node, Console, Orchestrator, High Speed Transfer Server'
|
metadata.gz.sig
CHANGED
|
Binary file
|