aspera-cli 4.14.0 → 4.15.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 (90) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data/CHANGELOG.md +54 -3
  4. data/CONTRIBUTING.md +7 -7
  5. data/README.md +1457 -880
  6. data/bin/ascli +18 -9
  7. data/bin/asession +12 -14
  8. data/examples/proxy.pac +1 -1
  9. data/lib/aspera/aoc.rb +198 -127
  10. data/lib/aspera/ascmd.rb +24 -14
  11. data/lib/aspera/cli/basic_auth_plugin.rb +9 -6
  12. data/lib/aspera/cli/error.rb +17 -0
  13. data/lib/aspera/cli/extended_value.rb +47 -12
  14. data/lib/aspera/cli/formatter.rb +260 -171
  15. data/lib/aspera/cli/hints.rb +80 -0
  16. data/lib/aspera/cli/main.rb +101 -147
  17. data/lib/aspera/cli/manager.rb +160 -124
  18. data/lib/aspera/cli/plugin.rb +70 -59
  19. data/lib/aspera/cli/plugins/alee.rb +0 -1
  20. data/lib/aspera/cli/plugins/aoc.rb +239 -273
  21. data/lib/aspera/cli/plugins/ats.rb +8 -5
  22. data/lib/aspera/cli/plugins/bss.rb +2 -2
  23. data/lib/aspera/cli/plugins/config.rb +516 -375
  24. data/lib/aspera/cli/plugins/console.rb +40 -0
  25. data/lib/aspera/cli/plugins/cos.rb +4 -5
  26. data/lib/aspera/cli/plugins/faspex.rb +99 -84
  27. data/lib/aspera/cli/plugins/faspex5.rb +179 -148
  28. data/lib/aspera/cli/plugins/node.rb +219 -153
  29. data/lib/aspera/cli/plugins/orchestrator.rb +52 -17
  30. data/lib/aspera/cli/plugins/preview.rb +46 -32
  31. data/lib/aspera/cli/plugins/server.rb +57 -17
  32. data/lib/aspera/cli/plugins/shares.rb +34 -12
  33. data/lib/aspera/cli/sync_actions.rb +68 -0
  34. data/lib/aspera/cli/transfer_agent.rb +45 -55
  35. data/lib/aspera/cli/transfer_progress.rb +74 -0
  36. data/lib/aspera/cli/version.rb +1 -1
  37. data/lib/aspera/colors.rb +3 -1
  38. data/lib/aspera/command_line_builder.rb +14 -11
  39. data/lib/aspera/cos_node.rb +3 -2
  40. data/lib/aspera/environment.rb +17 -6
  41. data/lib/aspera/fasp/agent_aspera.rb +126 -0
  42. data/lib/aspera/fasp/agent_base.rb +31 -77
  43. data/lib/aspera/fasp/agent_connect.rb +21 -22
  44. data/lib/aspera/fasp/agent_direct.rb +88 -102
  45. data/lib/aspera/fasp/agent_httpgw.rb +196 -192
  46. data/lib/aspera/fasp/agent_node.rb +41 -34
  47. data/lib/aspera/fasp/agent_trsdk.rb +75 -34
  48. data/lib/aspera/fasp/error_info.rb +2 -2
  49. data/lib/aspera/fasp/faux_file.rb +52 -0
  50. data/lib/aspera/fasp/installation.rb +43 -184
  51. data/lib/aspera/fasp/management.rb +244 -0
  52. data/lib/aspera/fasp/parameters.rb +59 -26
  53. data/lib/aspera/fasp/parameters.yaml +75 -8
  54. data/lib/aspera/fasp/products.rb +162 -0
  55. data/lib/aspera/fasp/transfer_spec.rb +1 -1
  56. data/lib/aspera/fasp/uri.rb +4 -4
  57. data/lib/aspera/faspex_gw.rb +2 -2
  58. data/lib/aspera/faspex_postproc.rb +2 -2
  59. data/lib/aspera/hash_ext.rb +2 -2
  60. data/lib/aspera/json_rpc.rb +49 -0
  61. data/lib/aspera/line_logger.rb +23 -0
  62. data/lib/aspera/log.rb +57 -16
  63. data/lib/aspera/node.rb +97 -14
  64. data/lib/aspera/oauth.rb +36 -18
  65. data/lib/aspera/open_application.rb +4 -4
  66. data/lib/aspera/persistency_folder.rb +2 -2
  67. data/lib/aspera/preview/file_types.rb +4 -2
  68. data/lib/aspera/preview/generator.rb +22 -35
  69. data/lib/aspera/preview/options.rb +2 -0
  70. data/lib/aspera/preview/terminal.rb +24 -13
  71. data/lib/aspera/preview/utils.rb +19 -26
  72. data/lib/aspera/rest.rb +103 -72
  73. data/lib/aspera/rest_call_error.rb +1 -1
  74. data/lib/aspera/rest_error_analyzer.rb +15 -14
  75. data/lib/aspera/rest_errors_aspera.rb +37 -34
  76. data/lib/aspera/secret_hider.rb +14 -16
  77. data/lib/aspera/ssh.rb +4 -1
  78. data/lib/aspera/sync.rb +128 -122
  79. data/lib/aspera/temp_file_manager.rb +10 -3
  80. data/lib/aspera/web_auth.rb +10 -7
  81. data/lib/aspera/web_server_simple.rb +9 -4
  82. data.tar.gz.sig +0 -0
  83. metadata +33 -15
  84. metadata.gz.sig +0 -0
  85. data/lib/aspera/cli/listener/line_dump.rb +0 -19
  86. data/lib/aspera/cli/listener/logger.rb +0 -22
  87. data/lib/aspera/cli/listener/progress.rb +0 -50
  88. data/lib/aspera/cli/listener/progress_multi.rb +0 -84
  89. data/lib/aspera/cli/plugins/sync.rb +0 -44
  90. data/lib/aspera/fasp/listener.rb +0 -13
@@ -1,84 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'aspera/fasp/listener'
4
- require 'aspera/fasp/agent_base'
5
- require 'aspera/environment'
6
- require 'ruby-progressbar'
7
-
8
- module Aspera
9
- module Cli
10
- module Listener
11
- # a listener to FASP event that displays a progress bar
12
- class ProgressMulti < Aspera::Fasp::Listener
13
- def initialize
14
- super
15
- @progress_bar = nil
16
- @sessions = {}
17
- end
18
-
19
- def reset
20
- @progress_bar = nil
21
- @sessions = {}
22
- end
23
-
24
- def update_total
25
- @progress_bar.total = @sessions.values.inject(0){|m, s|m + s[:job_size].to_i}
26
- rescue StandardError
27
- nil
28
- end
29
-
30
- def update_progress
31
- @progress_bar.progress = @sessions.values.inject(0){|m, s|m + s[:current].to_i}
32
- rescue StandardError
33
- nil
34
- end
35
-
36
- def event_enhanced(data)
37
- if @progress_bar.nil?
38
- @progress_bar = ProgressBar.create(
39
- format: '%t %a %B %p%% %r Mbps %e',
40
- rate_scale: lambda{|rate|rate / Environment::BYTES_PER_MEBIBIT},
41
- title: '',
42
- total: nil)
43
- end
44
- if !data.key?(Fasp::AgentBase::LISTENER_SESSION_ID_S)
45
- Log.log.error{"Internal error: no #{Fasp::AgentBase::LISTENER_SESSION_ID_S} in event: #{data}"}
46
- return
47
- end
48
- new_title = @sessions.length < 2 ? '' : "multi=#{@sessions.length}"
49
- @progress_bar.title = new_title unless @progress_bar.title.eql?(new_title)
50
- session = @sessions[data[Fasp::AgentBase::LISTENER_SESSION_ID_S]] ||= {
51
- cumulative: 0,
52
- job_size: 0,
53
- current: 0
54
- }
55
- case data['type']
56
- when 'INIT' # connection to ascp (get id)
57
- when 'SESSION' # session information
58
- when 'NOTIFICATION' # sent from remote
59
- if data.key?('pre_transfer_bytes')
60
- session[:job_size] = data['pre_transfer_bytes']
61
- update_total
62
- end
63
- when 'STATS' # during transfer
64
- if @progress_bar.total.nil?
65
- @progress_bar.increment
66
- else
67
- session[:current] = data.key?('bytescont') ? session[:cumulative] + data['bytescont'].to_i : data['transfer_bytes'].to_i
68
- update_progress
69
- end
70
- when 'STOP'
71
- # stop event when one file is completed
72
- session[:cumulative] = session[:cumulative] + data['size'].to_i
73
- when 'DONE' # end of session
74
- @sessions.delete(data[Fasp::AgentBase::LISTENER_SESSION_ID_S])
75
- update_progress
76
- update_total
77
- else
78
- Log.log.debug{"ignore: #{data['type']}"}
79
- end
80
- end
81
- end
82
- end
83
- end
84
- end
@@ -1,44 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'English'
4
- require 'aspera/cli/plugin'
5
- require 'aspera/sync'
6
- require 'aspera/log'
7
- require 'open3'
8
-
9
- module Aspera
10
- module Cli
11
- module Plugins
12
- # Execute Aspera Sync
13
- class Sync < Aspera::Cli::Plugin
14
- def initialize(env, sync_spec: nil)
15
- super(env)
16
- options.declare(:sync_info, 'Information for sync instance and sessions', types: Hash)
17
- options.declare(:sync_session, 'Name of session to use for admin commands. default: first in parameters')
18
- options.parse_options!
19
- return if env[:man_only]
20
- @params = options.get_option(:sync_info, mandatory: true)
21
- @sync_spec = sync_spec
22
- end
23
-
24
- ACTIONS = %i[start admin].freeze
25
-
26
- def execute_action
27
- command = options.get_next_command(ACTIONS)
28
- case command
29
- when :start
30
- Aspera::Sync.new(@params, @sync_spec).start
31
- return Main.result_success
32
- when :admin
33
- sync_admin = Aspera::SyncAdmin.new(@params, options.get_option(:sync_session))
34
- command2 = options.get_next_command([:status])
35
- case command2
36
- when :status
37
- return {type: :single_object, data: sync_admin.status}
38
- end # command2
39
- end # command
40
- end # execute_action
41
- end # Sync
42
- end # Plugins
43
- end # Cli
44
- end # Aspera
@@ -1,13 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Aspera
4
- module Fasp
5
- # implement this class to get transfer events
6
- class Listener # rubocop:disable Lint/EmptyClass
7
- # define one of the following methods:
8
- # event_text(text_data)
9
- # event_struct(legacy_names)
10
- # event_enhanced(snake_names)
11
- end
12
- end
13
- end