aspera-cli 4.14.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 (104) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data/BUGS.md +29 -3
  4. data/CHANGELOG.md +300 -185
  5. data/CONTRIBUTING.md +74 -23
  6. data/README.md +2346 -1619
  7. data/bin/ascli +16 -25
  8. data/bin/asession +15 -15
  9. data/examples/dascli +2 -2
  10. data/examples/proxy.pac +1 -1
  11. data/lib/aspera/aoc.rb +216 -150
  12. data/lib/aspera/ascmd.rb +25 -18
  13. data/lib/aspera/assert.rb +45 -0
  14. data/lib/aspera/cli/basic_auth_plugin.rb +9 -6
  15. data/lib/aspera/cli/error.rb +17 -0
  16. data/lib/aspera/cli/extended_value.rb +51 -16
  17. data/lib/aspera/cli/formatter.rb +276 -174
  18. data/lib/aspera/cli/hints.rb +81 -0
  19. data/lib/aspera/cli/main.rb +114 -147
  20. data/lib/aspera/cli/manager.rb +181 -136
  21. data/lib/aspera/cli/plugin.rb +82 -64
  22. data/lib/aspera/cli/plugins/alee.rb +0 -1
  23. data/lib/aspera/cli/plugins/aoc.rb +327 -331
  24. data/lib/aspera/cli/plugins/ats.rb +12 -8
  25. data/lib/aspera/cli/plugins/bss.rb +2 -2
  26. data/lib/aspera/cli/plugins/config.rb +575 -439
  27. data/lib/aspera/cli/plugins/console.rb +40 -0
  28. data/lib/aspera/cli/plugins/cos.rb +4 -5
  29. data/lib/aspera/cli/plugins/faspex.rb +111 -92
  30. data/lib/aspera/cli/plugins/faspex5.rb +245 -182
  31. data/lib/aspera/cli/plugins/node.rb +239 -160
  32. data/lib/aspera/cli/plugins/orchestrator.rb +56 -19
  33. data/lib/aspera/cli/plugins/preview.rb +54 -38
  34. data/lib/aspera/cli/plugins/server.rb +63 -20
  35. data/lib/aspera/cli/plugins/shares.rb +64 -38
  36. data/lib/aspera/cli/sync_actions.rb +68 -0
  37. data/lib/aspera/cli/transfer_agent.rb +64 -67
  38. data/lib/aspera/cli/transfer_progress.rb +73 -0
  39. data/lib/aspera/cli/version.rb +1 -1
  40. data/lib/aspera/colors.rb +3 -1
  41. data/lib/aspera/command_line_builder.rb +27 -22
  42. data/lib/aspera/cos_node.rb +6 -4
  43. data/lib/aspera/coverage.rb +22 -0
  44. data/lib/aspera/data_repository.rb +33 -2
  45. data/lib/aspera/environment.rb +21 -8
  46. data/lib/aspera/fasp/agent_alpha.rb +116 -0
  47. data/lib/aspera/fasp/agent_base.rb +40 -76
  48. data/lib/aspera/fasp/agent_connect.rb +21 -22
  49. data/lib/aspera/fasp/agent_direct.rb +169 -179
  50. data/lib/aspera/fasp/agent_httpgw.rb +200 -195
  51. data/lib/aspera/fasp/agent_node.rb +43 -35
  52. data/lib/aspera/fasp/agent_trsdk.rb +124 -41
  53. data/lib/aspera/fasp/error_info.rb +2 -2
  54. data/lib/aspera/fasp/faux_file.rb +52 -0
  55. data/lib/aspera/fasp/installation.rb +89 -191
  56. data/lib/aspera/fasp/management.rb +249 -0
  57. data/lib/aspera/fasp/parameters.rb +86 -47
  58. data/lib/aspera/fasp/parameters.yaml +75 -8
  59. data/lib/aspera/fasp/products.rb +162 -0
  60. data/lib/aspera/fasp/resume_policy.rb +7 -5
  61. data/lib/aspera/fasp/sync.rb +273 -0
  62. data/lib/aspera/fasp/transfer_spec.rb +10 -8
  63. data/lib/aspera/fasp/uri.rb +6 -6
  64. data/lib/aspera/faspex_gw.rb +11 -8
  65. data/lib/aspera/faspex_postproc.rb +8 -7
  66. data/lib/aspera/hash_ext.rb +2 -2
  67. data/lib/aspera/id_generator.rb +3 -1
  68. data/lib/aspera/json_rpc.rb +51 -0
  69. data/lib/aspera/keychain/encrypted_hash.rb +46 -11
  70. data/lib/aspera/keychain/macos_security.rb +15 -13
  71. data/lib/aspera/line_logger.rb +23 -0
  72. data/lib/aspera/log.rb +61 -19
  73. data/lib/aspera/nagios.rb +7 -2
  74. data/lib/aspera/node.rb +105 -21
  75. data/lib/aspera/node_simulator.rb +214 -0
  76. data/lib/aspera/oauth.rb +57 -36
  77. data/lib/aspera/open_application.rb +4 -4
  78. data/lib/aspera/persistency_action_once.rb +13 -14
  79. data/lib/aspera/persistency_folder.rb +5 -4
  80. data/lib/aspera/preview/file_types.rb +56 -268
  81. data/lib/aspera/preview/generator.rb +28 -39
  82. data/lib/aspera/preview/options.rb +2 -0
  83. data/lib/aspera/preview/terminal.rb +36 -16
  84. data/lib/aspera/preview/utils.rb +23 -29
  85. data/lib/aspera/proxy_auto_config.rb +6 -3
  86. data/lib/aspera/rest.rb +127 -80
  87. data/lib/aspera/rest_call_error.rb +1 -1
  88. data/lib/aspera/rest_error_analyzer.rb +16 -14
  89. data/lib/aspera/rest_errors_aspera.rb +39 -34
  90. data/lib/aspera/secret_hider.rb +18 -17
  91. data/lib/aspera/ssh.rb +10 -5
  92. data/lib/aspera/temp_file_manager.rb +11 -4
  93. data/lib/aspera/web_auth.rb +10 -7
  94. data/lib/aspera/web_server_simple.rb +11 -5
  95. data.tar.gz.sig +0 -0
  96. metadata +108 -39
  97. metadata.gz.sig +0 -0
  98. data/lib/aspera/cli/listener/line_dump.rb +0 -19
  99. data/lib/aspera/cli/listener/logger.rb +0 -22
  100. data/lib/aspera/cli/listener/progress.rb +0 -50
  101. data/lib/aspera/cli/listener/progress_multi.rb +0 -84
  102. data/lib/aspera/cli/plugins/sync.rb +0 -44
  103. data/lib/aspera/fasp/listener.rb +0 -13
  104. data/lib/aspera/sync.rb +0 -213
data/bin/ascli CHANGED
@@ -1,29 +1,20 @@
1
- #!/usr/bin/env ruby -EUTF-8:UTF-8
1
+ #!/usr/bin/env ruby
2
2
  # frozen_string_literal: true
3
3
 
4
- require 'rubygems'
5
- require 'securerandom'
6
- # compute gem root based on this script location
7
- GEM_ROOT = File.realpath(File.join(File.dirname(File.realpath(__FILE__)), '..'))
8
- # coverage for tests
9
- if ENV.key?('ENABLE_COVERAGE')
10
- require 'simplecov'
11
- SimpleCov.root(GEM_ROOT)
12
- SimpleCov.enable_for_subprocesses if SimpleCov.respond_to?(:enable_for_subprocesses)
13
- # keep cache data for 1 day (must be longer that time to run the whole test suite)
14
- SimpleCov.merge_timeout(86400)
15
- SimpleCov.command_name(SecureRandom.uuid)
16
- SimpleCov.at_exit do
17
- original_file_descriptor = $stdout
18
- $stdout.reopen(File.join(GEM_ROOT, 'simplecov.log'))
19
- SimpleCov.result.format!
20
- $stdout.reopen(original_file_descriptor)
4
+ Encoding.default_internal = Encoding::UTF_8
5
+ Encoding.default_external = Encoding::UTF_8
6
+
7
+ begin
8
+ gem_lib_folder = File.join(File.dirname(File.dirname(File.realpath(__FILE__))), 'lib')
9
+ Kernel.load(File.join(gem_lib_folder, 'aspera/coverage.rb'))
10
+ begin
11
+ require 'aspera/cli/main'
12
+ rescue LoadError
13
+ # if in development, add path toward gem
14
+ $LOAD_PATH.unshift(gem_lib_folder)
15
+ require 'aspera/cli/main'
21
16
  end
22
- SimpleCov.start
17
+ require 'aspera/environment'
18
+ Aspera::Environment.fix_home
19
+ Aspera::Cli::Main.new(ARGV).process_command_line
23
20
  end
24
- # if in development, add path to gem
25
- $LOAD_PATH.unshift(File.join(GEM_ROOT, 'lib'))
26
- require 'aspera/cli/main'
27
- require 'aspera/environment'
28
- Aspera::Environment.fix_home
29
- Aspera::Cli::Main.new(ARGV).process_command_line
data/bin/asession CHANGED
@@ -2,16 +2,16 @@
2
2
  # frozen_string_literal: true
3
3
 
4
4
  # Laurent Martin/2017
5
- $LOAD_PATH.unshift(File.dirname(__FILE__) + '/../lib')
5
+ $LOAD_PATH.unshift("#{File.dirname(__FILE__)}/../lib")
6
6
  require 'aspera/fasp/agent_direct'
7
- require 'aspera/cli/listener/line_dump'
8
7
  require 'aspera/cli/extended_value'
9
8
  require 'aspera/log'
10
9
  require 'json'
11
- # extended transfer spec parameter to change log level
12
- TS_LOGLEVEL = 'EX_loglevel'
10
+ # extended transfer spec parameter (only used in asession)
11
+ # Change log level
12
+ TS_LOG_LEVEL = 'EX_loglevel'
13
13
  # by default go to /tmp/username.filelist
14
- TS_TMP_FILELIST_FOLDER = 'EX_file_list_folder'
14
+ TS_TMP_FILE_LIST_FOLDER = 'EX_file_list_folder'
15
15
 
16
16
  SAMPLE_DEMO = '"remote_host":"demo.asperasoft.com","remote_user":"asperaweb","ssh_port":33001,"remote_password":"demoaspera"'
17
17
  SAMPLE_DEMO2 = '"direction":"receive","destination_root":"./test.dir"'
@@ -34,7 +34,7 @@ def assert_usage(assertion, error_message)
34
34
  $stderr.puts(' {"type":"START","source":"/aspera-test-dir-tiny/200KB.2"}')
35
35
  $stderr.puts(' {"type":"START","source":"xx","destination":"yy"}')
36
36
  $stderr.puts(' {"type":"DONE"}')
37
- $stderr.puts(%Q(Note: debug information can be placed on STDERR, using the "#{TS_LOGLEVEL}" parameter in transfer spec (debug=0)))
37
+ $stderr.puts(%Q(Note: debug information can be placed on STDERR, using the "#{TS_LOG_LEVEL}" parameter in transfer spec (debug=0)))
38
38
  $stderr.puts('EXAMPLES')
39
39
  $stderr.puts(%Q( asession @json:'{#{SAMPLE_DEMO},#{SAMPLE_DEMO2},"paths":[{"source":"/aspera-test-dir-tiny/200KB.1"}]}'))
40
40
  $stderr.puts(%q( echo '{"remote_host":...}'|asession @json:@stdin))
@@ -60,27 +60,27 @@ end
60
60
  # ensure right type
61
61
  assert_usage(transfer_spec.is_a?(Hash), "the value must be a hash table#{parameter_source_err_msg}")
62
62
  # additional debug capability
63
- if transfer_spec.key?(TS_LOGLEVEL)
64
- Aspera::Log.instance.level = transfer_spec[TS_LOGLEVEL]
65
- transfer_spec.delete(TS_LOGLEVEL)
63
+ if transfer_spec.key?(TS_LOG_LEVEL)
64
+ Aspera::Log.instance.level = transfer_spec[TS_LOG_LEVEL]
65
+ transfer_spec.delete(TS_LOG_LEVEL)
66
66
  end
67
67
  # possibly override temp folder
68
- if transfer_spec.key?(TS_TMP_FILELIST_FOLDER)
69
- Aspera::Fasp::Parameters.file_list_folder = transfer_spec[TS_TMP_FILELIST_FOLDER]
70
- transfer_spec.delete(TS_TMP_FILELIST_FOLDER)
68
+ if transfer_spec.key?(TS_TMP_FILE_LIST_FOLDER)
69
+ Aspera::Fasp::Parameters.file_list_folder = transfer_spec[TS_TMP_FILE_LIST_FOLDER]
70
+ transfer_spec.delete(TS_TMP_FILE_LIST_FOLDER)
71
71
  end
72
72
  # get local agent (ascp), disable ascp output on stdout to not mix with JSON events
73
73
  client = Aspera::Fasp::AgentDirect.new({quiet: true})
74
- # display JSON instead of legacy Lines
75
- client.add_listener(Aspera::Cli::Listener::LineDump.new)
76
74
  # start transfer (asynchronous)
77
75
  job_id = client.start_transfer(transfer_spec)
78
76
  # async commands
79
77
  Thread.new do
78
+ # we assume here a single session
79
+ session_id = client.sessions_by_job(job_id).first
80
80
  begin # rubocop:disable Style/RedundantBegin
81
81
  loop do
82
82
  data = JSON.parse($stdin.gets)
83
- client.send_command(job_id, 0, data)
83
+ client.send_command(session_id, data)
84
84
  end
85
85
  rescue
86
86
  Process.exit(1)
data/examples/dascli CHANGED
@@ -7,7 +7,7 @@
7
7
  : "${imgtag=$image:$version}"
8
8
  # set env var `docker` to podman, to use podman
9
9
  : "${docker:=docker}"
10
- # set env var docker_args to add options to docker run (transform var into array) # spellcheck disable=SC2086
10
+ # set env var `docker_args` to add options to docker run (then, transform this var into array) # spellcheck disable=SC2086
11
11
  read -a add_dock_args <<< $docker_args
12
12
  # set env var ASCLI_HOME to set the config folder on host
13
13
  : "${ASCLI_HOME:=$HOME/.aspera/ascli}"
@@ -24,7 +24,7 @@ exec $docker run \
24
24
  --interactive \
25
25
  --user root \
26
26
  --env ASCLI_HOME="$ascli_home_container" \
27
- --volume "$ASCLI_HOME:$ascli_home_container" \
27
+ --volume "$ASCLI_HOME:$ascli_home_container:z" \
28
28
  "${add_dock_args[@]}" \
29
29
  "$imgtag" \
30
30
  "$@"
data/examples/proxy.pac CHANGED
@@ -1,4 +1,4 @@
1
- /* demo proxy pac for ascli */
1
+ /* demo proxy pac for `ascli` */
2
2
  function FindProxyForURL(url, host) {
3
3
  /* Normalize the URL for pattern matching */
4
4
  url = url.toLowerCase();