aspera-cli 4.18.1 → 4.19.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (45) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data/CHANGELOG.md +13 -0
  4. data/CONTRIBUTING.md +5 -12
  5. data/README.md +60 -29
  6. data/examples/build_exec +85 -0
  7. data/lib/aspera/agent/base.rb +2 -0
  8. data/lib/aspera/agent/direct.rb +108 -104
  9. data/lib/aspera/api/aoc.rb +2 -2
  10. data/lib/aspera/api/httpgw.rb +91 -56
  11. data/lib/aspera/ascp/installation.rb +47 -32
  12. data/lib/aspera/ascp/management.rb +4 -1
  13. data/lib/aspera/ascp/products.rb +1 -7
  14. data/lib/aspera/cli/formatter.rb +24 -18
  15. data/lib/aspera/cli/manager.rb +10 -10
  16. data/lib/aspera/cli/plugin.rb +2 -2
  17. data/lib/aspera/cli/plugin_factory.rb +10 -1
  18. data/lib/aspera/cli/plugins/config.rb +15 -10
  19. data/lib/aspera/cli/plugins/node.rb +4 -3
  20. data/lib/aspera/cli/plugins/server.rb +1 -1
  21. data/lib/aspera/cli/plugins/shares.rb +11 -7
  22. data/lib/aspera/cli/sync_actions.rb +72 -31
  23. data/lib/aspera/cli/transfer_agent.rb +1 -0
  24. data/lib/aspera/cli/transfer_progress.rb +1 -1
  25. data/lib/aspera/cli/version.rb +1 -1
  26. data/lib/aspera/environment.rb +43 -10
  27. data/lib/aspera/faspex_gw.rb +1 -1
  28. data/lib/aspera/keychain/encrypted_hash.rb +2 -0
  29. data/lib/aspera/log.rb +1 -0
  30. data/lib/aspera/node_simulator.rb +1 -1
  31. data/lib/aspera/oauth/jwt.rb +1 -1
  32. data/lib/aspera/oauth/url_json.rb +2 -0
  33. data/lib/aspera/oauth/web.rb +5 -4
  34. data/lib/aspera/secret_hider.rb +3 -2
  35. data/lib/aspera/ssh.rb +1 -1
  36. data/lib/aspera/transfer/faux_file.rb +7 -5
  37. data/lib/aspera/transfer/parameters.rb +27 -19
  38. data/lib/aspera/transfer/spec.rb +8 -10
  39. data/lib/aspera/transfer/sync.rb +52 -47
  40. data/lib/aspera/web_auth.rb +0 -1
  41. data/lib/aspera/web_server_simple.rb +24 -13
  42. data.tar.gz.sig +0 -0
  43. metadata +3 -3
  44. metadata.gz.sig +0 -0
  45. data/examples/rubyc +0 -24
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 98185fd9f823fc0d85ebf7183d5c88cf6e0aac7cafd8325802bfa0724c52ddf4
4
- data.tar.gz: 848811c07aa60060cae1320cd0512e72a73bb78fee9e1837245ef856af3883de
3
+ metadata.gz: 89df3ebc2bf7a146a16e59154a73efcfc2e11f7767aba28725f9443de04772b7
4
+ data.tar.gz: 33469a2bc4991b106ab3002927e823f280c016fc070a2bdcbb3edb286506041d
5
5
  SHA512:
6
- metadata.gz: ede08e6e6c6ce3ef33d0c402730ee1854b5d0364da3d47ef736f0e7680a9f8cc1098316fe5945c15aab98ed931c26dd625ea7fb9673e70068dfd2755bb7a053a
7
- data.tar.gz: 1bf901163167844fbada435d0cbac759075b51e9f2da22f6f2b97e99be53c202d69e83ec38f0ee4cade3f937a29c502e22e75ac4452b5e0bb426b0fafa7d883c
6
+ metadata.gz: d57c69a340b866cfe5c3003c94ecb3ebc8c61aba7011ee4b8683da60d9615dd060fb94ac153e16eb98bd11f7dfa1deb117b1ca2ecd5bfe5d46e5a390ec290a01
7
+ data.tar.gz: fa364474177bc6d2f648474b1eed12b45733e84a5d4896d3075225ed1212aed27f64725ba38a400a3f9c5da2e7e2acf46d6a41164e5d92c1e2ce3a94498c5401
checksums.yaml.gz.sig CHANGED
Binary file
data/CHANGELOG.md CHANGED
@@ -1,6 +1,19 @@
1
1
  # Changes (Release notes)
2
2
 
3
+ * 4.19.0
4
+ * New Features:
5
+ * `server`: add support for `async` (Aspera Sync) from Transfer SDK
6
+ * **global**: #156 support sending folders with httpgw
7
+ * **global**: new value for option `format`: `multi`
8
+ * Issues Fixed:
9
+ * `aoc`: #157 fix problem with `files browse` on a link
10
+ * `sync`: better documentation and handling of options.
11
+ * Breaking Changes:
12
+ * **global**: Default value for direct agent option `transfer_info.multi_incr_udp` is `true` on Windows, and now `false` on other platforms.
13
+ * **global**: Token based transfers now use the RSA key only. Direct agent option `transfer_info.client_ssh_key` allows changing this behavior.
14
+
3
15
  * 4.18.1
16
+
4
17
  * New Features:
5
18
  * none
6
19
  * Issues Fixed:
data/CONTRIBUTING.md CHANGED
@@ -228,7 +228,7 @@ Then procedure is as follows:
228
228
 
229
229
  ## Docker image build
230
230
 
231
- The Dockerfile template allows customizing the optional copy of gem file , versus install from rubygems,org as well as customizing the retrieval of the SDK.
231
+ The `Dockerfile.tmpl.erb` template allows customization of the optional copying of the `aspera-cli.gem` file, as opposed to installing from rubygems.org. It also supports customizing the retrieval of the SDK.
232
232
 
233
233
  ### Default image build
234
234
 
@@ -278,19 +278,11 @@ make docker_push_beta
278
278
 
279
279
  ## Single executable build
280
280
 
281
- It is possible to build `ascli` as a single native executable using `rubyc` (gem `ruby-packer`).
281
+ Initially, `rubyc` (gem [`ruby-packer`](https://github.com/pmq20/ruby-packer) and [here](https://github.com/you54f/ruby-packer)) was used to build a single executable.
282
282
 
283
- ```bash
284
- make single
285
- ```
286
-
287
- This is based on tool `rubyc` (gem `ruby-packer`): either place the executable in folder `tmp`, or the architecture-specific version will be automatically downloaded.
283
+ https://www.tebako.org/
288
284
 
289
- > **Note:** Perl `Findbin` is needed, install on Linux with:
290
-
291
- ```bash
292
- sudo dnf install -y perl perl-FindBin perl-IPC-Cmd
293
- ```
285
+ A modern version of this is now used: [`tebako`](https://github.com/tamatebako/tebako) for which a container is provided.
294
286
 
295
287
  ## Long Term Implementation and delivery improvements
296
288
 
@@ -299,3 +291,4 @@ sudo dnf install -y perl perl-FindBin perl-IPC-Cmd
299
291
  - <https://github.com/oauth-xx/oauth2>
300
292
  - use gem Thor <http://whatisthor.com/> (or other standard Ruby CLI manager)
301
293
  - Package a single-file executable for various architectures with <https://github.com/pmq20/ruby-packer> (`rubyc`)
294
+ - look at <https://github.com/phusion/traveling-ruby>
data/README.md CHANGED
@@ -10,7 +10,7 @@
10
10
 
11
11
  ## Introduction
12
12
 
13
- Version : 4.18.1
13
+ Version : 4.19.0
14
14
 
15
15
  Laurent/2016-2024
16
16
 
@@ -92,7 +92,7 @@ Once the gem is installed, `ascli` shall be accessible:
92
92
 
93
93
  ```console
94
94
  $ ascli --version
95
- 4.18.1
95
+ 4.19.0
96
96
  ```
97
97
 
98
98
  ### First use
@@ -706,7 +706,7 @@ ascli -v
706
706
  ```
707
707
 
708
708
  ```text
709
- 4.18.1
709
+ 4.19.0
710
710
  ```
711
711
 
712
712
  In order to keep persistency of configuration on the host, you should specify your user's configuration folder as a volume for the container.
@@ -1497,6 +1497,7 @@ If transposition of single object is not desired, use option: `transpose_single`
1497
1497
  The style of output can be set using the `format` option, supporting:
1498
1498
 
1499
1499
  - `table` : Text table (default)
1500
+ - `multi` : List of elements are displayed as a list of tables
1500
1501
  - `text` : Value as String
1501
1502
  - `ruby` : Ruby code
1502
1503
  - `json` : JSON code
@@ -1924,7 +1925,8 @@ ascp use /usr/bin/ascp
1924
1925
  check_update
1925
1926
  coffee
1926
1927
  coffee --ui=text
1927
- coffee --ui=text --query=@json:'{"text":"true"}'
1928
+ coffee --ui=text --image=@json:'{"text":true,"double":false}'
1929
+ coffee --ui=text --image=@json:'{"text":true}'
1928
1930
  detect https://faspex4.example.com/path
1929
1931
  detect https://faspex5.example.com/path
1930
1932
  detect https://node.example.com/path
@@ -2745,19 +2747,21 @@ Refer to section [FASP](#fasp-configuration).
2745
2747
 
2746
2748
  The `transfer_info` option accepts the following optional parameters to control multi-session, Web Socket Session, Resume policy and add any argument to `ascp`:
2747
2749
 
2748
- | Name | Type | Description |
2749
- |------------------------|-------|-------------|
2750
- | `wss` | Bool | Web Socket Session<br/>Enable use of web socket session in case it is available<br/>Default: true |
2751
- | `ascp_args` | Array | Array of strings with native `ascp` arguments.<br/>Default: [] |
2752
- | `spawn_timeout_sec` | Float | Multi session<br/>Verification time that `ascp` is running<br/>Default: 3 |
2753
- | `spawn_delay_sec` | Float | Multi session<br/>Delay between startup of sessions<br/>Default: 2 |
2754
- | `multi_incr_udp` | Bool | Multi Session<br/>Increment UDP port on multi-session<br/>If true, each session will have a different UDP port starting at `fasp_port` (or default 33001)<br/>Else, each session will use `fasp_port` (or `ascp` default)<br/>Default: true |
2755
- | `trusted_certs` | Array | List of repositories for trusted certificates. |
2756
- | `resume` | Hash | Resume parameters. See below |
2757
- | `resume.iter_max` | int | Max number of retry on error<br/>Default: 7 |
2758
- | `resume.sleep_initial` | int | First Sleep before retry<br/>Default: 2 |
2759
- | `resume.sleep_factor` | int | Multiplier of sleep period between attempts<br/>Default: 2 |
2760
- | `resume.sleep_max` | int | Default: 60 |
2750
+ | Name | Type | Description |
2751
+ |------------------------|---------|-------------|
2752
+ | `wss` | Bool | Web Socket Session<br/>Enable use of web socket session in case it is available<br/>Default: true |
2753
+ | `quiet` | Bool | If `true`, then `ascp` progress bar is not shown.<br/>Default: `false` |
2754
+ | `trusted_certs` | Array | List of repositories for trusted certificates. |
2755
+ | `client_ssh_key` | String | SSH Keys to use for token-based transfers. One of: `dsa_rsa`, `rsa`, `per_client`. Default: `rsa` |
2756
+ | `ascp_args` | Array | Array of strings with native `ascp` arguments.<br/>Default: `[]` |
2757
+ | `spawn_timeout_sec` | Float | Multi session<br/>Verification time that `ascp` is running<br/>Default: `3` |
2758
+ | `spawn_delay_sec` | Float | Multi session<br/>Delay between startup of sessions<br/>Default: `2` |
2759
+ | `multi_incr_udp` | Bool | Multi Session<br/>Increment UDP port on multi-session<br/>If `true`, each session will have a different UDP port starting at `fasp_port` (or default 33001)<br/>Else, each session will use `fasp_port` (or `ascp` default)<br/>Default: `true` on Windows, else `false` |
2760
+ | `resume` | Hash | Resume parameters. See below |
2761
+ | `resume.iter_max` | Integer | Max number of retry on error<br/>Default: `7` |
2762
+ | `resume.sleep_initial` | Integer | First Sleep before retry<br/>Default: `2` |
2763
+ | `resume.sleep_factor` | Integer | Multiplier of sleep period between attempts<br/>Default: `2` |
2764
+ | `resume.sleep_max` | Integer | Default: `60` |
2761
2765
 
2762
2766
  In case of transfer interruption, the agent will **resume** a transfer up to `iter_max` time.
2763
2767
  Sleep between iterations is given by the following formula where `iter_index` is the current iteration index, starting at 0:
@@ -2767,7 +2771,7 @@ max( sleep_max , sleep_initial * sleep_factor ^ iter_index )
2767
2771
  ```
2768
2772
 
2769
2773
  By default, Ruby's root CA store is used to validate any HTTPS endpoint used by `ascp` (e.g. WSS).
2770
- In order to use a custom certificate store, use the `trusted_certs` option.
2774
+ In order to use a custom certificate store, use the `trusted_certs` option of direct agent's option `transfer_info`.
2771
2775
  To use `ascp`'s default, use option: `--transfer-info=@json:'{"trusted_certs":null}'`.
2772
2776
 
2773
2777
  Some transfer errors are considered **retry-able** (e.g. timeout) and some other not (e.g. wrong password).
@@ -3561,7 +3565,7 @@ ascli server upload "faux:///mydir?file=testfile&count=1m&size=0&inc=2&seq=seque
3561
3565
  ```text
3562
3566
  ascli -h
3563
3567
  NAME
3564
- ascli -- a command line tool for Aspera Applications (v4.18.1)
3568
+ ascli -- a command line tool for Aspera Applications (v4.19.0)
3565
3569
 
3566
3570
  SYNOPSIS
3567
3571
  ascli COMMANDS [OPTIONS] [ARGS]
@@ -3593,7 +3597,7 @@ OPTIONS: global
3593
3597
  --interactive=ENUM Use interactive input of missing params: [no], yes
3594
3598
  --ask-options=ENUM Ask even optional options: [no], yes
3595
3599
  --struct-parser=ENUM Default parser when expected value is a struct: json, ruby
3596
- --format=ENUM Output format: text, nagios, ruby, json, jsonpp, yaml, [table], csv, image
3600
+ --format=ENUM Output format: text, nagios, ruby, json, jsonpp, yaml, [table], multi, csv, image
3597
3601
  --output=VALUE Destination for results (String)
3598
3602
  --display=ENUM Output only some information: [info], data, error
3599
3603
  --fields=VALUE Comma separated list of: fields, or ALL, or DEF (String, Array, Regexp, Proc)
@@ -3617,7 +3621,7 @@ OPTIONS: global
3617
3621
  --pid-file=VALUE Write process identifier to file, delete on exit (String)
3618
3622
 
3619
3623
  COMMAND: config
3620
- SUBCOMMANDS: ascp check_update coffee detect documentation echo email_test file flush_tokens folder gem genkey image initdemo open plugins preset proxy_check pubkey remote_certificate smtp_settings throw vault wizard
3624
+ SUBCOMMANDS: ascp check_update coffee detect documentation echo email_test file flush_tokens folder gem genkey image initdemo open platform plugins preset proxy_check pubkey remote_certificate smtp_settings throw vault wizard
3621
3625
  OPTIONS:
3622
3626
  --home=VALUE Home folder for tool (String)
3623
3627
  --config-file=VALUE Path to YAML file with preset configuration
@@ -5061,8 +5065,11 @@ files show /
5061
5065
  files show testdst/test_file.bin
5062
5066
  files sync admin status --sync-info=@json:'{"name":"my_aoc_sync2","reset":true,"direction":"pull","local":{"path":"/data/local_sync"},"remote":{"path":"/testdst"}}'
5063
5067
  files sync admin status --sync-info=@json:'{"sessions":[{"name":"my_aoc_sync1","direction":"pull","local_dir":"/data/local_sync","remote_dir":"/testdst","reset":true}]}'
5068
+ files sync start --sync-info=@json:'{"name":"my_aoc_sync1","reset":true,"direction":"pull","local":{"path":"/data/local_sync"},"remote":{"path":"/testdst"}}'
5064
5069
  files sync start --sync-info=@json:'{"name":"my_aoc_sync2","reset":true,"direction":"pull","local":{"path":"/data/local_sync"},"remote":{"path":"/testdst"}}'
5065
5070
  files sync start --sync-info=@json:'{"sessions":[{"name":"my_aoc_sync1","direction":"pull","local_dir":"/data/local_sync","remote_dir":"/testdst","reset":true}]}'
5071
+ files sync start pull /testdst /data/local_sync --sync-info=@json:'{"reset":true,"quiet":false}'
5072
+ files sync start pull /testdst /data/local_sync --sync-info=@json:'{"sessions":[{"reset":true}]}'
5066
5073
  files thumbnail my_test_folder/video_file.mpg
5067
5074
  files thumbnail my_test_folder/video_file.mpg --query=@json:'{"text":true,"double":true}'
5068
5075
  files transfer push /testsrc --to-folder=/testdst test_file.bin
@@ -5830,8 +5837,8 @@ ssync summary %name:my_node_sync
5830
5837
  stream list
5831
5838
  sync admin status --sync-info=@json:'{"name":"my_node_sync2","reset":true,"direction":"pull","local":{"path":"/data/local_sync"},"remote":{"path":"/aspera-test-dir-tiny"}}'
5832
5839
  sync admin status --sync-info=@json:'{"sessions":[{"name":"my_node_sync1","direction":"pull","local_dir":"/data/local_sync","remote_dir":"/aspera-test-dir-tiny","reset":true}]}'
5840
+ sync start --sync-info=@json:'{"name":"my_node_sync1","reset":true,"quiet":false,"direction":"pull","local":{"path":"/data/local_sync"},"remote":{"path":"/aspera-test-dir-tiny"}}'
5833
5841
  sync start --sync-info=@json:'{"name":"my_node_sync2","reset":true,"direction":"pull","local":{"path":"/data/local_sync"},"remote":{"path":"/aspera-test-dir-tiny"}}'
5834
- sync start --sync-info=@json:'{"sessions":[{"name":"my_node_sync1","direction":"pull","local_dir":"/data/local_sync","remote_dir":"/aspera-test-dir-tiny","reset":true}]}'
5835
5842
  transfer list --query=@json:'{"active_only":true}'
5836
5843
  transfer sessions
5837
5844
  transport
@@ -7124,28 +7131,52 @@ An interface for the `async` utility is provided in the following plugins:
7124
7131
  - `aoc files sync` (uses node)
7125
7132
  - `shares files sync` (uses node)
7126
7133
 
7127
- The main advantage over the `async` command line when using `server` is the possibility to use a configuration file, using standard options of `ascli`.
7134
+ One advantage over the `async` command line is the possibility to use a configuration file, using standard options of `ascli`.
7135
+ Moreover `ascli` supports sync with application requiring token-based authorization.
7128
7136
 
7129
- In this case, some of the `sync` parameters are filled by the related plugin using transfer spec parameters (e.g. including token).
7137
+ Some of the `sync` parameters are filled by the related plugin using transfer spec parameters (e.g. including token).
7130
7138
 
7131
- > **Note:** All `sync` commands require an `async` enabled license and availability of the `async` executable (and `asyncadmin`).
7139
+ > **Note:** All `sync` commands require an `async` enabled license and availability of the `async` executable (and `asyncadmin`). The Transfer SDK 1.3 includes this.
7132
7140
 
7133
- Two JSON syntax are supported for option `sync_info`.
7141
+ `sync` supports 0 or 3 arguments:
7134
7142
 
7135
- ### `async` JSON: API format
7143
+ - direction
7144
+ - local folder
7145
+ - remote folder
7146
+
7147
+ Additional options can be provided with option `sync_info`, for which two syntax are possible, as follows.
7148
+
7149
+ ### `async` API and conf format
7136
7150
 
7137
7151
  It is the same payload as specified on the option `--conf` of `async` or in node API `/asyncs`.
7138
7152
  This is the preferred syntax and allows a single session definition.
7139
- But there is no progress output nor error messages.
7153
+
7154
+ > **Note:** No progress, nor error messages is provided on terminal.
7140
7155
 
7141
7156
  Documentation on Async node API can be found on [IBM Developer Portal](https://developer.ibm.com/apis/catalog?search=%22aspera%20sync%20api%22).
7142
7157
 
7143
- ### `async` JSON: Options mapping
7158
+ If 3 arguments are provided they are mapped to:
7159
+
7160
+ - `direction`
7161
+ - `local.path`
7162
+ - `remote.path`
7163
+
7164
+ ### `async` options mapping
7144
7165
 
7145
7166
  `ascli` defines a JSON equivalent to regular `async`options.
7146
7167
  It is based on a JSON representation of `async` command line options.
7147
7168
  It allows definition of multiple sync sessions in a single command, although usually only one sync session is defined.
7148
7169
 
7170
+ This is the mode selection if there is either keys `sessions` or `instance` in option `sync_info`.
7171
+
7172
+ > **Note:** Progress and error messages are provided on terminal like regular command line invocation of `async`.
7173
+
7174
+ If 3 arguments are provided, they are applied to the first (and only) session and mapped to:
7175
+
7176
+ - `direction`
7177
+ - `local_dir`
7178
+ - `remote_dir`
7179
+
7149
7180
  ## Hot folder
7150
7181
 
7151
7182
  ### Requirements
@@ -0,0 +1,85 @@
1
+ #!/bin/bash
2
+
3
+ set -e
4
+
5
+ if test $# -ne 2; then
6
+ echo "Usage: $0 <CLI_TARGET_EXECUTABLE> <CLI_ENTRY_SCRIPT>" 1>&2
7
+ exit 1
8
+ fi
9
+
10
+ CLI_TARGET_EXECUTABLE=$1
11
+ CLI_ENTRY_SCRIPT=$(realpath $2)
12
+ CLI_EXEC_NAME=$(basename $CLI_TARGET_EXECUTABLE)
13
+ CLI_ROOT=$(dirname $(dirname $CLI_ENTRY_SCRIPT))
14
+
15
+ echo "Project folder: $CLI_ROOT"
16
+ echo "Executable: $CLI_TARGET_EXECUTABLE"
17
+ echo "Exec Name: $CLI_EXEC_NAME"
18
+ echo "Entry: $CLI_ENTRY_SCRIPT"
19
+
20
+ # tebako press --root=$(TB_WORK_DIR) --entry-point=ascli --output=$(TB_WORK_DIR)/$(CLI_TARGET_EXECUTABLE) --Ruby=3.2.4
21
+
22
+ if true;then
23
+ tebako_command=tebako
24
+ tebako_args="--root=$CLI_ROOT --entry-point=ascli --output=$CLI_TARGET_EXECUTABLE --Ruby=3.3.3"
25
+ case $(uname -s) in
26
+ Darwin)
27
+ brew update
28
+ brew install gnu-sed bash pkg-config bison flex binutils libffi gdbm zlib \
29
+ ncurses double-conversion boost jemalloc glog libevent libsodium lz4 xz \
30
+ libyaml openssl@3
31
+ # brew install m4
32
+ # boost fmt
33
+ #export PATH=$(dirname $(brew ls m4|grep '/m4$'|head -n 1)):$PATH
34
+ #export PATH=$(dirname $(brew ls binutils|grep '/ar$'|head -n 1)):$PATH
35
+ #tebako_bin=$CLI_ROOT/tmp/tbkbin
36
+ tebako_root=$CLI_ROOT/../tebako-tmp
37
+ #export PATH=$tebako_bin:$PATH
38
+ mkdir -p $tebako_root
39
+ #mkdir -p $tebako_bin
40
+ # need ar from apple
41
+ #rm -f $tebako_bin/ar
42
+ #ln -s /usr/bin/ar $tebako_bin
43
+ export PATH=$(echo $PATH|tr : \\n|grep -v /binutils/|tr \\n :)
44
+ #tebako setup --Ruby=3.3.4 --prefix=$tebako_root
45
+ tebako press --Ruby=3.3.4 --prefix=$tebako_root --root=$CLI_ROOT/examples/tebako --entry-point=ascli --output=$CLI_TARGET_EXECUTABLE
46
+ #tebako press --Ruby=3.3.4 --prefix=$tebako_root --root=$CLI_ROOT --entry-point=$CLI_ENTRY_SCRIPT --output=$CLI_TARGET_EXECUTABLE
47
+ exit 0
48
+ ;;
49
+ Linux)
50
+ work_dir=/mnt/w
51
+ tebako press --root=$work_dir --entry-point=ascli --output=$work_dir/ascli.exe --Ruby=3.3.3
52
+ tebako_prefix="podman run -it --rm -v $PWD:$work_dir ghcr.io/tamatebako/tebako-ubuntu-20.04:0.8.6"
53
+ tebako_opts=--patchelf
54
+ ;;
55
+ *)
56
+ echo "This OS is not supported." >&2
57
+ exit 1
58
+ ;;
59
+ esac
60
+ command $tebako_command $tebako_args
61
+ else
62
+ # https://github.com/you54f/ruby-packer
63
+ # https://github.com/YOU54F/ruby-packer/releases
64
+ set -e
65
+ FOLDER="$(dirname $0)/../tmp"
66
+ RUBYC="$FOLDER/rubyc"
67
+ if test ! -e "$RUBYC"; then
68
+ mkdir -p "$FOLDER"
69
+ case $(uname -sm|tr ' ' -) in
70
+ Darwin-arm64)
71
+ curl -L https://github.com/YOU54F/ruby-packer/releases/download/rel-20230812/rubyc-Darwin-arm64.tar.gz | tar -xz -C "$FOLDER"
72
+ mv "$FOLDER/rubyc-Darwin-arm64" "$RUBYC"
73
+ ;;
74
+ Linux-x86_64)
75
+ curl -L https://github.com/YOU54F/ruby-packer/releases/download/rel-20230812/rubyc-Linux-x86_64.tar.gz | tar -xz -C "$FOLDER"
76
+ mv "$FOLDER/rubyc-Linux-x86_64" "$RUBYC"
77
+ ;;
78
+ *)
79
+ echo "This architecture is not supported." >&2
80
+ exit 1
81
+ ;;
82
+ esac
83
+ fi
84
+ exec "$RUBYC" -o "$CLI_TARGET_EXECUTABLE" "$CLI_ENTRY_SCRIPT"
85
+ fi
@@ -38,6 +38,8 @@ module Aspera
38
38
  end.map{|file|file[0..(-1 - RUBY_EXT.length)].to_sym}
39
39
  end
40
40
  end
41
+
42
+ # Wait for all sessions to terminate and return the status of each session
41
43
  def wait_for_completion
42
44
  # list of: :success or "error message string"
43
45
  statuses = wait_for_transfers_completion