aspera-cli 4.25.6 → 4.26.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 (64) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data/CHANGELOG.md +89 -48
  4. data/CONTRIBUTING.md +1 -1
  5. data/lib/aspera/api/aoc.rb +120 -79
  6. data/lib/aspera/api/node.rb +103 -51
  7. data/lib/aspera/ascp/installation.rb +99 -32
  8. data/lib/aspera/assert.rb +17 -13
  9. data/lib/aspera/cli/extended_value.rb +7 -2
  10. data/lib/aspera/cli/formatter.rb +107 -95
  11. data/lib/aspera/cli/main.rb +69 -10
  12. data/lib/aspera/cli/manager.rb +158 -78
  13. data/lib/aspera/cli/options.schema.yaml +82 -0
  14. data/lib/aspera/cli/plugins/aoc.rb +247 -144
  15. data/lib/aspera/cli/plugins/ats.rb +3 -3
  16. data/lib/aspera/cli/plugins/base.rb +60 -76
  17. data/lib/aspera/cli/plugins/config.rb +14 -12
  18. data/lib/aspera/cli/plugins/console.rb +3 -3
  19. data/lib/aspera/cli/plugins/faspex.rb +6 -6
  20. data/lib/aspera/cli/plugins/faspex5.rb +24 -23
  21. data/lib/aspera/cli/plugins/node.rb +67 -71
  22. data/lib/aspera/cli/plugins/oauth.rb +5 -12
  23. data/lib/aspera/cli/plugins/orchestrator.rb +13 -13
  24. data/lib/aspera/cli/plugins/preview.rb +116 -80
  25. data/lib/aspera/cli/plugins/server.rb +2 -10
  26. data/lib/aspera/cli/plugins/shares.rb +7 -7
  27. data/lib/aspera/cli/sync_actions.rb +1 -1
  28. data/lib/aspera/cli/transfer_agent.rb +17 -15
  29. data/lib/aspera/cli/version.rb +1 -1
  30. data/lib/aspera/command_line_builder.rb +22 -18
  31. data/lib/aspera/dot_container.rb +7 -3
  32. data/lib/aspera/environment.rb +6 -5
  33. data/lib/aspera/formatter_interface.rb +14 -0
  34. data/lib/aspera/hash_ext.rb +6 -0
  35. data/lib/aspera/log.rb +5 -4
  36. data/lib/aspera/markdown.rb +4 -1
  37. data/lib/aspera/oauth/factory.rb +1 -1
  38. data/lib/aspera/preview/file_types.rb +1 -1
  39. data/lib/aspera/preview/generator.rb +146 -91
  40. data/lib/aspera/preview/options.rb +4 -1
  41. data/lib/aspera/preview/terminal.rb +50 -20
  42. data/lib/aspera/preview/utils.rb +76 -34
  43. data/lib/aspera/products/transferd.rb +1 -1
  44. data/lib/aspera/proxy_auto_config.rb +3 -0
  45. data/lib/aspera/rest.rb +2 -1
  46. data/lib/aspera/rest_list.rb +23 -16
  47. data/lib/aspera/schema/IBM Aspera Faspex API-5.0-enhanced.yaml +62801 -0
  48. data/lib/aspera/schema/IBM Aspera on Cloud API-0.2.6-enhanced.yaml +8898 -0
  49. data/lib/aspera/schema/documentation.rb +107 -0
  50. data/lib/aspera/schema/reader.rb +75 -0
  51. data/lib/aspera/schema/registry.rb +63 -0
  52. data/lib/aspera/secret_hider.rb +3 -1
  53. data/lib/aspera/sync/conf.schema.yaml +0 -26
  54. data/lib/aspera/sync/operations.rb +9 -5
  55. data/lib/aspera/transfer/faux_file.rb +1 -1
  56. data/lib/aspera/transfer/resumer.rb +1 -1
  57. data/lib/aspera/transfer/spec.rb +3 -3
  58. data/lib/aspera/transfer/spec.schema.yaml +1 -1
  59. data/lib/aspera/uri_reader.rb +17 -2
  60. data/lib/aspera/yaml.rb +4 -2
  61. data.tar.gz.sig +0 -0
  62. metadata +13 -7
  63. metadata.gz.sig +0 -0
  64. data/lib/aspera/transfer/spec_doc.rb +0 -76
@@ -1,76 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'aspera/agent/factory'
4
- require 'aspera/markdown'
5
-
6
- module Aspera
7
- module Transfer
8
- # Generate documentation from Schema, for Transfer Spec, or async Conf spec
9
- class SpecDoc
10
- class << self
11
- # @param formatter [Cli::Formatter] Formatter to use, methods: markdown_text, tick, check_row
12
- # @param include_option [Boolean] `true` : include CLI options
13
- # @param agent_columns [Boolean] `true` : include agents columns
14
- # @param schema [Hash] The JSON spec
15
- # @return [Array] a table suitable to display in manual
16
- def man_table(formatter, include_option: false, agent_columns: true, schema: Spec::SCHEMA)
17
- cols = %i[name type description]
18
- cols.insert(-2, *Agent::Factory::ALL.values.map{ |i| i[:short]}.sort) if agent_columns
19
- rows = []
20
- schema['properties'].each do |name, info|
21
- rows.concat(man_table(formatter, include_option: include_option, agent_columns: agent_columns, schema: info).last.map{ |h| h.merge(name: "#{name}.#{h[:name]}")}) if info['type'].eql?('object') && info['properties']
22
- rows.concat(man_table(formatter, include_option: include_option, agent_columns: agent_columns, schema: info['items']).last.map{ |h| h.merge(name: "#{name}[].#{h[:name]}")}) if info['type'].eql?('array') && info['items'] && info['items']['properties']
23
- # Manual table
24
- columns = {
25
- name: name,
26
- type: info['type'],
27
- description: []
28
- }
29
- # Render Markdown formatting and split lines
30
- columns[:description] =
31
- info['description']
32
- .gsub(Markdown::FORMATS){formatter.markdown_text(Regexp.last_match)}
33
- .split("\n") if info.key?('description')
34
- columns[:description].unshift("DEPRECATED: #{info['x-deprecation']}") if info.key?('x-deprecation')
35
- # Add flags for supported agents in doc
36
- agents = []
37
- Agent::Factory::ALL.each_key do |sym|
38
- agents.push(sym) if info['x-agents'].nil? || info['x-agents'].include?(sym.to_s)
39
- end
40
- Aspera.assert(agents.include?(:direct)){"#{name}: x-cli-option requires agent direct (or nil)"} if info['x-cli-option']
41
- if agent_columns
42
- Agent::Factory::ALL.each do |sym, names|
43
- columns[names[:short]] = formatter.tick(agents.include?(sym))
44
- end
45
- else
46
- columns[:description].push("(#{agents.map{ |i| Agent::Factory::ALL[i][:short].to_s.upcase}.sort.join(', ')})") unless agents.length.eql?(Agent::Factory::ALL.length)
47
- end
48
- # Only keep lines that are usable in supported agents
49
- next false if agents.empty?
50
- columns[:description].push("Allowed values: #{info['enum'].map{ |v| formatter.markdown_text("`#{v}`")}.join(', ')}") if info.key?('enum')
51
- if include_option
52
- envvar_prefix = ''
53
- cli_option =
54
- if info.key?('x-cli-envvar')
55
- envvar_prefix = 'env:'
56
- info['x-cli-envvar']
57
- elsif info['x-cli-switch']
58
- info['x-cli-option']
59
- elsif info['x-cli-option']
60
- arg_type = info.key?('enum') ? '{enum}' : "{#{[info['type']].flatten.join('|')}}"
61
- # conversion_tag = info['x-cli-convert']
62
- conversion_tag = info.key?('x-cli-convert') ? 'conversion' : nil
63
- sep = info['x-cli-option'].start_with?('--') ? '=' : ' '
64
- "#{info['x-cli-option']}#{sep}#{"(#{conversion_tag})" if conversion_tag}#{arg_type}"
65
- end
66
- short = info.key?('x-cli-short') ? "(#{info['x-cli-short']})" : nil
67
- columns[:description].push("(#{'special:' if info['x-cli-special']}#{envvar_prefix}#{formatter.markdown_text("`#{cli_option}`")})#{short}") if cli_option
68
- end
69
- rows.push(formatter.check_row(columns))
70
- end
71
- [cols, rows.sort_by{ |i| i[:name]}]
72
- end
73
- end
74
- end
75
- end
76
- end