aspera-cli 4.27.0 → 4.27.1

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 (140) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data/CHANGELOG.md +29 -0
  4. data/CONTRIBUTING.md +1 -7
  5. data/TODO.md +50 -0
  6. data/docs/README.md +708 -488
  7. data/lib/aspera/agent/base.rb +10 -2
  8. data/lib/aspera/agent/connect.rb +7 -7
  9. data/lib/aspera/agent/desktop.rb +3 -3
  10. data/lib/aspera/agent/direct.rb +48 -19
  11. data/lib/aspera/agent/factory.rb +3 -3
  12. data/lib/aspera/agent/httpgw.rb +55 -14
  13. data/lib/aspera/agent/node.rb +2 -2
  14. data/lib/aspera/agent/transferd.rb +12 -12
  15. data/lib/aspera/api/aoc.rb +28 -28
  16. data/lib/aspera/api/cos_node.rb +10 -9
  17. data/lib/aspera/api/faspex.rb +2 -2
  18. data/lib/aspera/api/httpgw.rb +20 -20
  19. data/lib/aspera/api/node.rb +31 -53
  20. data/lib/aspera/ascmd.rb +13 -13
  21. data/lib/aspera/ascp/installation.rb +43 -36
  22. data/lib/aspera/ascp/management.rb +6 -6
  23. data/lib/aspera/assert.rb +12 -13
  24. data/lib/aspera/cli/ascp_actions.rb +7 -7
  25. data/lib/aspera/cli/async_transfer_store.rb +49 -5
  26. data/lib/aspera/cli/bootstrapper.rb +9 -9
  27. data/lib/aspera/cli/command_registry.rb +1 -1
  28. data/lib/aspera/cli/command_spec.rb +6 -3
  29. data/lib/aspera/cli/context.rb +3 -3
  30. data/lib/aspera/cli/extended_value.rb +26 -26
  31. data/lib/aspera/cli/formatter.rb +76 -54
  32. data/lib/aspera/cli/gem_checker.rb +1 -1
  33. data/lib/aspera/cli/hints.rb +2 -2
  34. data/lib/aspera/cli/http.rb +22 -29
  35. data/lib/aspera/cli/mailer.rb +7 -7
  36. data/lib/aspera/cli/mcp_tool.rb +31 -4
  37. data/lib/aspera/cli/option_declarator.rb +77 -0
  38. data/lib/aspera/cli/options.schema.yaml +273 -3
  39. data/lib/aspera/cli/parser.rb +539 -280
  40. data/lib/aspera/cli/plugins/alee.rb +1 -1
  41. data/lib/aspera/cli/plugins/aoc.rb +297 -313
  42. data/lib/aspera/cli/plugins/ats.rb +25 -21
  43. data/lib/aspera/cli/plugins/base.rb +357 -186
  44. data/lib/aspera/cli/plugins/basic_auth.rb +0 -12
  45. data/lib/aspera/cli/plugins/config.rb +76 -73
  46. data/lib/aspera/cli/plugins/console.rb +8 -8
  47. data/lib/aspera/cli/plugins/cos.rb +4 -3
  48. data/lib/aspera/cli/plugins/factory.rb +2 -2
  49. data/lib/aspera/cli/plugins/faspex5.rb +259 -248
  50. data/lib/aspera/cli/plugins/faspio.rb +7 -2
  51. data/lib/aspera/cli/plugins/httpgw.rb +1 -1
  52. data/lib/aspera/cli/plugins/mcp.rb +11 -11
  53. data/lib/aspera/cli/plugins/node.rb +227 -283
  54. data/lib/aspera/cli/plugins/orchestrator.rb +23 -23
  55. data/lib/aspera/cli/plugins/preview.rb +61 -64
  56. data/lib/aspera/cli/plugins/server.rb +36 -31
  57. data/lib/aspera/cli/plugins/shares.rb +174 -135
  58. data/lib/aspera/cli/preset_actions.rb +39 -19
  59. data/lib/aspera/cli/preset_manager.rb +74 -32
  60. data/lib/aspera/cli/result.rb +18 -16
  61. data/lib/aspera/cli/runner.rb +75 -39
  62. data/lib/aspera/cli/secret_finder.rb +1 -1
  63. data/lib/aspera/cli/sync_actions.rb +36 -35
  64. data/lib/aspera/cli/terminal_formatter.rb +2 -2
  65. data/lib/aspera/cli/transfer_actions.rb +17 -10
  66. data/lib/aspera/cli/transfer_agent.rb +44 -44
  67. data/lib/aspera/cli/transfer_progress.rb +7 -7
  68. data/lib/aspera/cli/vault_manager.rb +34 -12
  69. data/lib/aspera/cli/version.rb +1 -1
  70. data/lib/aspera/cli/wizard.rb +17 -20
  71. data/lib/aspera/colors.rb +3 -3
  72. data/lib/aspera/command_line_builder.rb +16 -16
  73. data/lib/aspera/command_line_converter.rb +1 -1
  74. data/lib/aspera/coverage.rb +1 -2
  75. data/lib/aspera/data_repository.rb +1 -1
  76. data/lib/aspera/dot_container.rb +8 -8
  77. data/lib/aspera/environment.rb +12 -12
  78. data/lib/aspera/faspex_gw.rb +4 -4
  79. data/lib/aspera/faspex_postproc.rb +14 -9
  80. data/lib/aspera/graphql.rb +4 -2
  81. data/lib/aspera/hash_ext.rb +2 -2
  82. data/lib/aspera/json_rpc/client.rb +1 -1
  83. data/lib/aspera/keychain/base.rb +10 -3
  84. data/lib/aspera/keychain/encrypted_hash.rb +92 -17
  85. data/lib/aspera/keychain/factory.rb +17 -5
  86. data/lib/aspera/keychain/hashicorp_vault.rb +1 -1
  87. data/lib/aspera/keychain/macos_security.rb +23 -25
  88. data/lib/aspera/keychain/one_password_api.rb +86 -0
  89. data/lib/aspera/keychain/one_password_base.rb +34 -0
  90. data/lib/aspera/keychain/one_password_cli.rb +98 -0
  91. data/lib/aspera/link_header.rb +2 -2
  92. data/lib/aspera/log.rb +13 -13
  93. data/lib/aspera/markdown.rb +5 -5
  94. data/lib/aspera/nagios.rb +8 -8
  95. data/lib/aspera/node_simulator.rb +33 -27
  96. data/lib/aspera/oauth/base.rb +4 -5
  97. data/lib/aspera/oauth/boot.rb +3 -3
  98. data/lib/aspera/oauth/factory.rb +5 -5
  99. data/lib/aspera/oauth/jwt.rb +5 -7
  100. data/lib/aspera/oauth/web.rb +4 -4
  101. data/lib/aspera/persistency_action_once.rb +4 -4
  102. data/lib/aspera/persistency_folder.rb +8 -8
  103. data/lib/aspera/preview/file_types.rb +4 -4
  104. data/lib/aspera/preview/generator.rb +49 -46
  105. data/lib/aspera/preview/options.rb +3 -2
  106. data/lib/aspera/preview/terminal.rb +5 -5
  107. data/lib/aspera/preview/utils.rb +65 -18
  108. data/lib/aspera/products/connect.rb +2 -2
  109. data/lib/aspera/products/desktop.rb +1 -1
  110. data/lib/aspera/products/other.rb +2 -2
  111. data/lib/aspera/products/transferd.rb +3 -3
  112. data/lib/aspera/proxy_auto_config.rb +10 -10
  113. data/lib/aspera/rest.rb +149 -115
  114. data/lib/aspera/rest_error_analyzer.rb +3 -3
  115. data/lib/aspera/rest_list.rb +10 -9
  116. data/lib/aspera/schema/IBM Aspera Node API-4.4.6.yaml +6232 -0
  117. data/lib/aspera/schema/IBM Aspera faspio Gateway API-1.0.0.yaml +249 -0
  118. data/lib/aspera/schema/IBM_Aspera_Shares.yaml +4653 -0
  119. data/lib/aspera/schema/documentation.rb +17 -11
  120. data/lib/aspera/schema/reader.rb +78 -4
  121. data/lib/aspera/schema/registry.rb +26 -7
  122. data/lib/aspera/secret_hider.rb +5 -5
  123. data/lib/aspera/ssh.rb +64 -31
  124. data/lib/aspera/ssl.rb +3 -3
  125. data/lib/aspera/sync/database.rb +2 -2
  126. data/lib/aspera/sync/operations.rb +13 -13
  127. data/lib/aspera/temp_file_manager.rb +24 -4
  128. data/lib/aspera/transfer/faux_file.rb +2 -2
  129. data/lib/aspera/transfer/parameters.rb +15 -15
  130. data/lib/aspera/transfer/resumer.rb +9 -9
  131. data/lib/aspera/transfer/spec.rb +1 -1
  132. data/lib/aspera/uri_reader.rb +52 -15
  133. data/lib/aspera/web_auth.rb +6 -5
  134. data/lib/aspera/web_server_simple.rb +9 -9
  135. data/lib/aspera/yaml.rb +4 -4
  136. data.tar.gz.sig +0 -0
  137. metadata +10 -4
  138. metadata.gz.sig +0 -0
  139. data/lib/aspera/cli/plugins/faspex.rb +0 -576
  140. data/lib/aspera/transfer/uri.rb +0 -56
@@ -38,11 +38,16 @@ module Aspera
38
38
  end
39
39
 
40
40
  command :health, description: 'Check health of faspio Gateway'
41
- entity_command :bridges, api: :build_api, entity: 'bridges'
41
+
42
+ commands_under :bridges do
43
+ crud_commands entity: 'bridges',
44
+ api: :build_api,
45
+ body_component: Schema::Registry::FASPIO
46
+ end
42
47
 
43
48
  option :auth, description: 'OAuth type of authentication', allowed: %i[jwt basic]
44
49
  option :client_id, description: 'OAuth client identifier'
45
- option :private_key, description: 'OAuth JWT RSA private key PEM value (prefix file path with @file:)'
50
+ option :private_key, description: 'OAuth JWT RSA private key PEM **value**'
46
51
  option :passphrase, description: 'OAuth JWT RSA private key passphrase'
47
52
 
48
53
  def initialize(**_)
@@ -48,7 +48,7 @@ module Aspera
48
48
  end)
49
49
 
50
50
  command :info, description: 'Show HTTP Gateway information',
51
- action: ->{Result::SingleObject.new(Api::Httpgw.new(url: options.get_option(:url, mandatory: true)).info)}
51
+ action: -> { Result::SingleObject.new(Api::Httpgw.new(url: options.get_option(:url, mandatory: true)).info) }
52
52
 
53
53
  option :url, description: 'URL of application, e.g. https://app.example.com/aspera/app'
54
54
 
@@ -118,19 +118,19 @@ module Aspera
118
118
  private_constant :SERVER_KEYS, :CONFIG_KEYS, :STDIO_KEYS, :HTTP_KEYS, :TOOL_KEYS
119
119
 
120
120
  command :server, description: 'Start the MCP (Model Context Protocol) server',
121
- arguments: [{name: :mcp_options, type: [Hash], mandatory: false}]
121
+ arguments: [{name: :mcp_options, type: [Hash], mandatory: false, schema: 'opts:components.schemas.McpServerOptions'}]
122
122
 
123
123
  def action_server(mcp_options: nil, **)
124
124
  require 'aspera/cli/mcp_tool'
125
125
  mcp_options = (mcp_options || {}).transform_keys(&:to_sym)
126
126
  unknown = mcp_options.keys - SERVER_KEYS - CONFIG_KEYS - STDIO_KEYS - HTTP_KEYS - TOOL_KEYS - %i[transport port bind]
127
- Aspera.assert(unknown.empty?, type: Cli::BadArgument){"Unknown MCP option(s): #{unknown.join(', ')}"}
127
+ Aspera.assert(unknown.empty?, type: Cli::BadArgument) { "Unknown MCP option(s): #{unknown.join(', ')}" }
128
128
  Cli::McpTool.max_text_bytes = mcp_options.delete(:max_text_bytes)
129
129
  Cli::McpTool.extra_args = mcp_options.delete(:extra_args)
130
130
  transport = mcp_options.delete(:transport) || 'stdio'
131
131
  raise Cli::BadArgument, "Unknown transport: #{transport}. Use 'stdio' or 'http'" \
132
132
  unless %w[stdio http].include?(transport.to_s)
133
- Log.log.info{"Starting MCP server (transport=#{transport})..."}
133
+ Log.log.info { "Starting MCP server (transport=#{transport})..." }
134
134
  start_mcp_server(transport: transport.to_sym, mcp_options: mcp_options)
135
135
  Result::Nothing.new
136
136
  end
@@ -199,7 +199,7 @@ module Aspera
199
199
  env = rack_env_from_webrick(req)
200
200
  status, headers, rack_body = @app.call(env)
201
201
  res.status = status
202
- headers.each{ |k, v| res[k] = v}
202
+ headers.each { |k, v| res[k] = v }
203
203
  if rack_body.respond_to?(:call)
204
204
  # Rack streaming body (SSE): wrap the WEBrick socket in a stream object
205
205
  # that exposes write/flush/close, then hand off a Proc to WEBrick so it
@@ -208,14 +208,14 @@ module Aspera
208
208
  res.chunked = true
209
209
  res.body = proc do |socket|
210
210
  stream = Object.new
211
- stream.define_singleton_method(:write){ |data| socket.write(data)}
212
- stream.define_singleton_method(:flush){socket.flush rescue nil}
213
- stream.define_singleton_method(:close){socket.close rescue nil}
211
+ stream.define_singleton_method(:write) { |data| socket.write(data) }
212
+ stream.define_singleton_method(:flush) { socket.flush rescue nil }
213
+ stream.define_singleton_method(:close) { socket.close rescue nil }
214
214
  rack_proc.call(stream)
215
215
  end
216
216
  else
217
217
  buf = +''
218
- rack_body.each{ |chunk| buf << chunk}
218
+ rack_body.each { |chunk| buf << chunk }
219
219
  rack_body.close if rack_body.respond_to?(:close)
220
220
  res.body = buf
221
221
  end
@@ -268,9 +268,9 @@ module Aspera
268
268
  description: server.description
269
269
  }
270
270
  webrick.mount('/', rack_servlet, app, server_info)
271
- Log.log.info{"MCP HTTP server listening on http://#{bind}:#{port}/"}
272
- trap('INT'){webrick.shutdown}
273
- trap('TERM'){webrick.shutdown}
271
+ Log.log.info { "MCP HTTP server listening on http://#{bind}:#{port}/" }
272
+ trap('INT') { webrick.shutdown }
273
+ trap('TERM') { webrick.shutdown }
274
274
  webrick.start
275
275
  end
276
276
  end