aspera-cli 4.18.0 → 4.19.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data/CHANGELOG.md +23 -0
- data/CONTRIBUTING.md +5 -12
- data/README.md +152 -84
- data/examples/build_exec +85 -0
- data/examples/build_package.sh +28 -0
- data/lib/aspera/agent/alpha.rb +4 -4
- data/lib/aspera/agent/base.rb +2 -0
- data/lib/aspera/agent/connect.rb +3 -4
- data/lib/aspera/agent/direct.rb +108 -104
- data/lib/aspera/agent/httpgw.rb +1 -1
- data/lib/aspera/api/aoc.rb +2 -2
- data/lib/aspera/api/httpgw.rb +95 -57
- data/lib/aspera/api/node.rb +110 -77
- data/lib/aspera/ascp/installation.rb +47 -32
- data/lib/aspera/ascp/management.rb +4 -1
- data/lib/aspera/ascp/products.rb +2 -8
- data/lib/aspera/cli/extended_value.rb +27 -14
- data/lib/aspera/cli/formatter.rb +35 -28
- data/lib/aspera/cli/main.rb +11 -11
- data/lib/aspera/cli/manager.rb +109 -94
- data/lib/aspera/cli/plugin.rb +4 -7
- data/lib/aspera/cli/plugin_factory.rb +10 -1
- data/lib/aspera/cli/plugins/aoc.rb +15 -14
- data/lib/aspera/cli/plugins/config.rb +35 -29
- data/lib/aspera/cli/plugins/faspex.rb +5 -4
- data/lib/aspera/cli/plugins/faspex5.rb +16 -13
- data/lib/aspera/cli/plugins/node.rb +50 -41
- data/lib/aspera/cli/plugins/orchestrator.rb +3 -2
- data/lib/aspera/cli/plugins/preview.rb +1 -1
- data/lib/aspera/cli/plugins/server.rb +2 -2
- data/lib/aspera/cli/plugins/shares.rb +11 -7
- data/lib/aspera/cli/special_values.rb +13 -0
- data/lib/aspera/cli/sync_actions.rb +73 -32
- data/lib/aspera/cli/transfer_agent.rb +3 -2
- data/lib/aspera/cli/transfer_progress.rb +1 -1
- data/lib/aspera/cli/version.rb +1 -1
- data/lib/aspera/environment.rb +100 -7
- data/lib/aspera/faspex_gw.rb +1 -1
- data/lib/aspera/keychain/encrypted_hash.rb +2 -0
- data/lib/aspera/log.rb +1 -0
- data/lib/aspera/node_simulator.rb +1 -1
- data/lib/aspera/oauth/jwt.rb +1 -1
- data/lib/aspera/oauth/url_json.rb +2 -0
- data/lib/aspera/oauth/web.rb +7 -6
- data/lib/aspera/rest.rb +46 -15
- data/lib/aspera/secret_hider.rb +3 -2
- data/lib/aspera/ssh.rb +1 -1
- data/lib/aspera/transfer/faux_file.rb +7 -5
- data/lib/aspera/transfer/parameters.rb +27 -19
- data/lib/aspera/transfer/spec.rb +8 -10
- data/lib/aspera/transfer/sync.rb +52 -47
- data/lib/aspera/web_auth.rb +0 -1
- data/lib/aspera/web_server_simple.rb +24 -13
- data.tar.gz.sig +0 -0
- metadata +5 -4
- metadata.gz.sig +0 -0
- data/examples/rubyc +0 -24
- data/lib/aspera/open_application.rb +0 -69
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 89df3ebc2bf7a146a16e59154a73efcfc2e11f7767aba28725f9443de04772b7
|
4
|
+
data.tar.gz: 33469a2bc4991b106ab3002927e823f280c016fc070a2bdcbb3edb286506041d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d57c69a340b866cfe5c3003c94ecb3ebc8c61aba7011ee4b8683da60d9615dd060fb94ac153e16eb98bd11f7dfa1deb117b1ca2ecd5bfe5d46e5a390ec290a01
|
7
|
+
data.tar.gz: fa364474177bc6d2f648474b1eed12b45733e84a5d4896d3075225ed1212aed27f64725ba38a400a3f9c5da2e7e2acf46d6a41164e5d92c1e2ce3a94498c5401
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,28 @@
|
|
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
|
+
|
15
|
+
* 4.18.1
|
16
|
+
|
17
|
+
* New Features:
|
18
|
+
* none
|
19
|
+
* Issues Fixed:
|
20
|
+
* **global**: #146 (@junkimu) Fix problem on Windows WRT terminal detection
|
21
|
+
* **global**: node gen4 (aoc) browsing through link now follows the link correctly
|
22
|
+
* `shares`: #147 Fix problem for `shares files mkdir`
|
23
|
+
* Breaking Changes:
|
24
|
+
* **global**: Removed option `id`, deprecated since 4.14.0
|
25
|
+
|
3
26
|
* 4.18.0
|
4
27
|
|
5
28
|
* New Features:
|
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
|
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
|
-
|
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
|
-
|
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
|
-
|
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.
|
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.
|
95
|
+
4.19.0
|
96
96
|
```
|
97
97
|
|
98
98
|
### First use
|
@@ -300,52 +300,6 @@ Download the Ruby installer executable from <https://rubyinstaller.org/downloads
|
|
300
300
|
rubyinstaller-devkit-3.2.2-1-x64.exe /silent /currentuser /noicons /dir=C:\aspera-cli
|
301
301
|
```
|
302
302
|
|
303
|
-
Installation without network:
|
304
|
-
|
305
|
-
It is essentially the same procedure, but instead of retrieving files from internet, copy the files from a machine with internet access, and then install from those archives:
|
306
|
-
|
307
|
-
- Download the `exe` Ruby installer from <https://rubyinstaller.org/downloads/>
|
308
|
-
|
309
|
-
```bash
|
310
|
-
v=$(curl -s https://rubyinstaller.org/downloads/|sed -nEe 's|.*(https://.*/releases/download/.*exe).*|\1|p'|head -n 1)
|
311
|
-
curl -o ${v##*/} $v
|
312
|
-
```
|
313
|
-
|
314
|
-
- Create an archive with necessary gems: <https://help.rubygems.org/kb/rubygems/installing-gems-with-no-network>
|
315
|
-
|
316
|
-
```bat
|
317
|
-
gem install aspera-cli -N -i my_gems
|
318
|
-
```
|
319
|
-
|
320
|
-
Zip the files `*.gem` from folder `repo/my_gems`
|
321
|
-
|
322
|
-
- Download the SDK from: <https://ibm.biz/aspera_sdk>
|
323
|
-
|
324
|
-
Create a Zip with all those files, and transfer to the target system.
|
325
|
-
|
326
|
-
Then, on the target system:
|
327
|
-
|
328
|
-
- Unzip the archive
|
329
|
-
- Execute the installer:
|
330
|
-
|
331
|
-
```bat
|
332
|
-
rubyinstaller-devkit-3.2.2-1-x64.exe /silent /currentuser /noicons /dir=C:\aspera-cli
|
333
|
-
```
|
334
|
-
|
335
|
-
- Install the gems:
|
336
|
-
|
337
|
-
```bat
|
338
|
-
gem install --force --local *.gem
|
339
|
-
```
|
340
|
-
|
341
|
-
- Install the SDK
|
342
|
-
|
343
|
-
```bash
|
344
|
-
ascli config ascp install --sdk-url=file:///sdk.zip
|
345
|
-
```
|
346
|
-
|
347
|
-
> **Note:** An example of installation script is provided: [docs/install.bat](docs/install.bat)
|
348
|
-
|
349
303
|
#### macOS: `brew`
|
350
304
|
|
351
305
|
**macOS** come with Ruby.
|
@@ -410,6 +364,26 @@ One can remove all installed gems, for example to start fresh:
|
|
410
364
|
gem uninstall -axI $(ls $(gem env gemdir)/gems/|sed -e 's/-[^-]*$//'|sort -u)
|
411
365
|
```
|
412
366
|
|
367
|
+
#### Linux as simple user
|
368
|
+
|
369
|
+
If you don't have root access, you can install Ruby in your home directory using `rbenv` see [rbenv-installer](https://github.com/rbenv/rbenv-installer#rbenv-installer):
|
370
|
+
|
371
|
+
```bash
|
372
|
+
curl -fsSL https://github.com/rbenv/rbenv-installer/raw/HEAD/bin/rbenv-installer | bash
|
373
|
+
```
|
374
|
+
|
375
|
+
Then open a new terminal, or "source" the shell initialization script:
|
376
|
+
|
377
|
+
```bash
|
378
|
+
source ~/.bashrc
|
379
|
+
```
|
380
|
+
|
381
|
+
Then install Ruby:
|
382
|
+
|
383
|
+
```bash
|
384
|
+
rbenv install 3.2.2
|
385
|
+
```
|
386
|
+
|
413
387
|
#### Other Unixes (AIX)
|
414
388
|
|
415
389
|
Ruby is sometimes made available as an installable package through third party providers.
|
@@ -544,7 +518,7 @@ ascli config ascp install
|
|
544
518
|
If a local SDK installation is preferred instead of fetching from internet: one can specify the location of the SDK file:
|
545
519
|
|
546
520
|
```bash
|
547
|
-
curl -Lso sdk.zip https://ibm.biz/
|
521
|
+
curl -Lso sdk.zip https://ibm.biz/aspera_transfer_sdk
|
548
522
|
```
|
549
523
|
|
550
524
|
```bash
|
@@ -574,6 +548,18 @@ Refer to section: [Transfer Agents](#transfer-clients-agents)
|
|
574
548
|
|
575
549
|
> **Note:** No pre-packaged version is provided yet.
|
576
550
|
|
551
|
+
#### Gem files and dependencies
|
552
|
+
|
553
|
+
The sample script: [examples/build_package.sh](examples/build_package.sh) can be used to download all necessary gems and dependencies in a tar gz.
|
554
|
+
|
555
|
+
```console
|
556
|
+
$ ./build_package.sh aspera-cli 4.18.0
|
557
|
+
|
558
|
+
Archive: aspera-cli-4.18.0-gems.tgz
|
559
|
+
```
|
560
|
+
|
561
|
+
#### Unix-like
|
562
|
+
|
577
563
|
A method to build one is provided here:
|
578
564
|
|
579
565
|
The procedure:
|
@@ -595,7 +581,7 @@ ascli --show-config --fields=sdk_url
|
|
595
581
|
- Download the SDK archive from that URL
|
596
582
|
|
597
583
|
```bash
|
598
|
-
curl -Lso sdk.zip https://ibm.biz/
|
584
|
+
curl -Lso sdk.zip https://ibm.biz/aspera_transfer_sdk
|
599
585
|
```
|
600
586
|
|
601
587
|
- Transfer those 2 files to the target system
|
@@ -618,12 +604,48 @@ ascli config ascp install --sdk-url=file:///sdk.zip
|
|
618
604
|
source ~/.rvm/scripts/rvm
|
619
605
|
```
|
620
606
|
|
621
|
-
|
607
|
+
#### Windows
|
608
|
+
|
609
|
+
Installation without network:
|
610
|
+
|
611
|
+
It is essentially the same procedure as installation for Windows with internet, but instead of retrieving files from internet, copy the files from a machine with internet access, and then install from those archives:
|
612
|
+
|
613
|
+
- Download the `exe` Ruby installer from <https://rubyinstaller.org/downloads/>
|
614
|
+
|
615
|
+
```bash
|
616
|
+
v=$(curl -s https://rubyinstaller.org/downloads/|sed -nEe 's|.*(https://.*/releases/download/.*exe).*|\1|p'|head -n 1)
|
617
|
+
curl -o ${v##*/} $v
|
618
|
+
```
|
619
|
+
|
620
|
+
- Create an archive with necessary gems like in previous section
|
621
|
+
|
622
|
+
- Download the SDK from: <https://ibm.biz/aspera_transfer_sdk>
|
623
|
+
|
624
|
+
- Create a Zip with all those files, and transfer to the target system.
|
625
|
+
|
626
|
+
Then, on the target system:
|
627
|
+
|
628
|
+
- Unzip the archive
|
629
|
+
- Execute the installer:
|
630
|
+
|
631
|
+
```bat
|
632
|
+
rubyinstaller-devkit-3.2.2-1-x64.exe /silent /currentuser /noicons /dir=C:\aspera-cli
|
633
|
+
```
|
634
|
+
|
635
|
+
- Install the gems: Extract the gem archive, and then:
|
636
|
+
|
637
|
+
```bat
|
638
|
+
gem install --force --local *.gem
|
639
|
+
```
|
640
|
+
|
641
|
+
- Install the SDK
|
622
642
|
|
623
643
|
```bash
|
624
|
-
|
644
|
+
ascli config ascp install --sdk-url=file:///sdk.zip
|
625
645
|
```
|
626
646
|
|
647
|
+
> **Note:** An example of installation script is provided: [docs/install.bat](docs/install.bat)
|
648
|
+
|
627
649
|
### Container
|
628
650
|
|
629
651
|
The container image is: [`docker.io/martinlaurent/ascli`](https://hub.docker.com/r/docker.io/martinlaurent/ascli).
|
@@ -684,7 +706,7 @@ ascli -v
|
|
684
706
|
```
|
685
707
|
|
686
708
|
```text
|
687
|
-
4.
|
709
|
+
4.19.0
|
688
710
|
```
|
689
711
|
|
690
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.
|
@@ -1475,6 +1497,7 @@ If transposition of single object is not desired, use option: `transpose_single`
|
|
1475
1497
|
The style of output can be set using the `format` option, supporting:
|
1476
1498
|
|
1477
1499
|
- `table` : Text table (default)
|
1500
|
+
- `multi` : List of elements are displayed as a list of tables
|
1478
1501
|
- `text` : Value as String
|
1479
1502
|
- `ruby` : Ruby code
|
1480
1503
|
- `json` : JSON code
|
@@ -1902,7 +1925,8 @@ ascp use /usr/bin/ascp
|
|
1902
1925
|
check_update
|
1903
1926
|
coffee
|
1904
1927
|
coffee --ui=text
|
1905
|
-
coffee --ui=text --
|
1928
|
+
coffee --ui=text --image=@json:'{"text":true,"double":false}'
|
1929
|
+
coffee --ui=text --image=@json:'{"text":true}'
|
1906
1930
|
detect https://faspex4.example.com/path
|
1907
1931
|
detect https://faspex5.example.com/path
|
1908
1932
|
detect https://node.example.com/path
|
@@ -1937,8 +1961,8 @@ genkey my_key 4096
|
|
1937
1961
|
image https://eudemo.asperademo.com/wallpaper.jpg
|
1938
1962
|
initdemo
|
1939
1963
|
open
|
1940
|
-
|
1941
|
-
|
1964
|
+
plugins create my_command
|
1965
|
+
plugins list
|
1942
1966
|
preset delete conf_name
|
1943
1967
|
preset initialize conf_name @json:'{"p1":"v1","p2":"v2"}'
|
1944
1968
|
preset list
|
@@ -2723,19 +2747,21 @@ Refer to section [FASP](#fasp-configuration).
|
|
2723
2747
|
|
2724
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`:
|
2725
2749
|
|
2726
|
-
| Name | Type
|
2727
|
-
|
2728
|
-
| `wss` | Bool
|
2729
|
-
| `
|
2730
|
-
| `
|
2731
|
-
| `
|
2732
|
-
| `
|
2733
|
-
| `
|
2734
|
-
| `
|
2735
|
-
| `
|
2736
|
-
| `resume
|
2737
|
-
| `resume.
|
2738
|
-
| `resume.
|
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` |
|
2739
2765
|
|
2740
2766
|
In case of transfer interruption, the agent will **resume** a transfer up to `iter_max` time.
|
2741
2767
|
Sleep between iterations is given by the following formula where `iter_index` is the current iteration index, starting at 0:
|
@@ -2745,7 +2771,7 @@ max( sleep_max , sleep_initial * sleep_factor ^ iter_index )
|
|
2745
2771
|
```
|
2746
2772
|
|
2747
2773
|
By default, Ruby's root CA store is used to validate any HTTPS endpoint used by `ascp` (e.g. WSS).
|
2748
|
-
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`.
|
2749
2775
|
To use `ascp`'s default, use option: `--transfer-info=@json:'{"trusted_certs":null}'`.
|
2750
2776
|
|
2751
2777
|
Some transfer errors are considered **retry-able** (e.g. timeout) and some other not (e.g. wrong password).
|
@@ -3032,7 +3058,7 @@ Columns:
|
|
3032
3058
|
| fasp_port | int | Y | Y | Y | Y | Y | Specifies fasp (UDP) port.<br/>(-O {int}) |
|
3033
3059
|
| fasp_url | string | | | | | | Only used in Faspex.<br/>(<ignored>) |
|
3034
3060
|
| file_checksum | string | Y | Y | | | | Enable checksum reporting for transferred files by specifying the hash to use.<br/>Allowed values: sha-512, sha-384, sha-256, sha1, md5, none<br/>(<ignored>) |
|
3035
|
-
| http_fallback | bool<br/>string | Y | Y | Y | Y | Y | When true(1), attempts to perform an HTTP transfer if a FASP transfer cannot be performed.<br/>(-y (conversion){bool}
|
3061
|
+
| http_fallback | bool<br/>string | Y | Y | Y | Y | Y | When true(1), attempts to perform an HTTP transfer if a FASP transfer cannot be performed.<br/>(-y (conversion){bool}\|{string}) |
|
3036
3062
|
| http_fallback_port | int | Y | | | | | Specifies http port when no cipher is used<br/>(-t {int}) |
|
3037
3063
|
| https_fallback_port | int | Y | Y | Y | Y | Y | Specifies https port when cipher is used<br/>(-t {int}) |
|
3038
3064
|
| keepalive | bool | Y | | | | | The session is running in persistent session mode.<br/>(--keepalive) |
|
@@ -3539,7 +3565,7 @@ ascli server upload "faux:///mydir?file=testfile&count=1m&size=0&inc=2&seq=seque
|
|
3539
3565
|
```text
|
3540
3566
|
ascli -h
|
3541
3567
|
NAME
|
3542
|
-
ascli -- a command line tool for Aspera Applications (v4.
|
3568
|
+
ascli -- a command line tool for Aspera Applications (v4.19.0)
|
3543
3569
|
|
3544
3570
|
SYNOPSIS
|
3545
3571
|
ascli COMMANDS [OPTIONS] [ARGS]
|
@@ -3570,7 +3596,8 @@ ARGS
|
|
3570
3596
|
OPTIONS: global
|
3571
3597
|
--interactive=ENUM Use interactive input of missing params: [no], yes
|
3572
3598
|
--ask-options=ENUM Ask even optional options: [no], yes
|
3573
|
-
--
|
3599
|
+
--struct-parser=ENUM Default parser when expected value is a struct: json, ruby
|
3600
|
+
--format=ENUM Output format: text, nagios, ruby, json, jsonpp, yaml, [table], multi, csv, image
|
3574
3601
|
--output=VALUE Destination for results (String)
|
3575
3602
|
--display=ENUM Output only some information: [info], data, error
|
3576
3603
|
--fields=VALUE Comma separated list of: fields, or ALL, or DEF (String, Array, Regexp, Proc)
|
@@ -3594,7 +3621,7 @@ OPTIONS: global
|
|
3594
3621
|
--pid-file=VALUE Write process identifier to file, delete on exit (String)
|
3595
3622
|
|
3596
3623
|
COMMAND: config
|
3597
|
-
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
|
3598
3625
|
OPTIONS:
|
3599
3626
|
--home=VALUE Home folder for tool (String)
|
3600
3627
|
--config-file=VALUE Path to YAML file with preset configuration
|
@@ -3604,7 +3631,6 @@ OPTIONS:
|
|
3604
3631
|
--query=VALUE Additional filter for for some commands (list/delete) (Hash)
|
3605
3632
|
--value=VALUE Value for create, update, list filter (Hash) (deprecated: (4.14) Use positional value for create/modify or option: query for list/delete)
|
3606
3633
|
--property=VALUE Name of property to set (modify operation)
|
3607
|
-
--id=VALUE Resource identifier (deprecated: (4.14) Use positional identifier after verb (modify,delete,show))
|
3608
3634
|
--bulk=ENUM Bulk operation (only some): [no], yes
|
3609
3635
|
--bfail=ENUM Bulk operation error handling: no, [yes]
|
3610
3636
|
-N, --no-default Do not load default configuration for plugin
|
@@ -5019,6 +5045,9 @@ files browse /
|
|
5019
5045
|
files browse / --url=my_private_link
|
5020
5046
|
files browse / --url=my_public_link_folder_no_pass
|
5021
5047
|
files browse / --url=my_public_link_folder_pass --password=my_public_link_password
|
5048
|
+
files browse my_remote_file
|
5049
|
+
files browse my_remote_folder
|
5050
|
+
files browse my_remote_folder/
|
5022
5051
|
files delete /testsrc
|
5023
5052
|
files download --transfer=alpha testdst/test_file.bin
|
5024
5053
|
files download --transfer=connect testdst/test_file.bin
|
@@ -5036,8 +5065,11 @@ files show /
|
|
5036
5065
|
files show testdst/test_file.bin
|
5037
5066
|
files sync admin status --sync-info=@json:'{"name":"my_aoc_sync2","reset":true,"direction":"pull","local":{"path":"/data/local_sync"},"remote":{"path":"/testdst"}}'
|
5038
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"}}'
|
5039
5069
|
files sync start --sync-info=@json:'{"name":"my_aoc_sync2","reset":true,"direction":"pull","local":{"path":"/data/local_sync"},"remote":{"path":"/testdst"}}'
|
5040
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}]}'
|
5041
5073
|
files thumbnail my_test_folder/video_file.mpg
|
5042
5074
|
files thumbnail my_test_folder/video_file.mpg --query=@json:'{"text":true,"double":true}'
|
5043
5075
|
files transfer push /testsrc --to-folder=/testdst test_file.bin
|
@@ -5389,7 +5421,7 @@ Example:
|
|
5389
5421
|
- `ascli node browse /` : list files with **gen3/node user** API
|
5390
5422
|
- `ascli node access_key do self browse /` : list files with **gen4/access key** API
|
5391
5423
|
|
5392
|
-
|
5424
|
+
#### Browse
|
5393
5425
|
|
5394
5426
|
Native API parameters can be placed in option `query`.
|
5395
5427
|
|
@@ -5805,8 +5837,8 @@ ssync summary %name:my_node_sync
|
|
5805
5837
|
stream list
|
5806
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"}}'
|
5807
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"}}'
|
5808
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"}}'
|
5809
|
-
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}]}'
|
5810
5842
|
transfer list --query=@json:'{"active_only":true}'
|
5811
5843
|
transfer sessions
|
5812
5844
|
transport
|
@@ -6337,6 +6369,14 @@ Then, the postprocessing script executed will be `script1.sh`.
|
|
6337
6369
|
|
6338
6370
|
Environment variables at set to the values provided by the web hook which are the same as Faspex 4 postprocessing.
|
6339
6371
|
|
6372
|
+
### Faspex 5: Missing commands
|
6373
|
+
|
6374
|
+
If a command is missing, then it is still possible to execute command by calling directly the API on the command line using `curl`:
|
6375
|
+
|
6376
|
+
```bash
|
6377
|
+
curl -H "Authorization: $(ascli ascli bearer)" https://faspex5.example.com/aspera/faspex/api/v5/api_endpoint_here
|
6378
|
+
```
|
6379
|
+
|
6340
6380
|
## Plugin: `faspex`: IBM Aspera Faspex v4
|
6341
6381
|
|
6342
6382
|
> **Note:** For full details on Faspex API, refer to: [Reference on Developer Site](https://developer.ibm.com/apis/catalog/?search=faspex)
|
@@ -6573,9 +6613,11 @@ admin user ldap add the_name
|
|
6573
6613
|
admin user local list
|
6574
6614
|
admin user saml import @json:'{"id":"the_id","name_id":"the_name"}'
|
6575
6615
|
files browse /
|
6616
|
+
files delete my_share1/new_folder
|
6576
6617
|
files delete my_share1/test_file.bin
|
6577
6618
|
files download --to-folder=. my_share1/test_file.bin
|
6578
6619
|
files download --to-folder=. my_share1/test_file.bin --transfer=httpgw --transfer-info=@json:'{"url":"https://tst.example.com/path@"}'
|
6620
|
+
files mkdir my_share1/new_folder
|
6579
6621
|
files upload --to-folder=https://shares.share1 'faux:///testfile?1m' --transfer=httpgw --transfer-info=@json:'{"url":"my_example.com/path@","synchronous":true,"api_version":"v1","upload_chunk_size":100000}'
|
6580
6622
|
files upload --to-folder=my_share1 test_file.bin
|
6581
6623
|
files upload --to-folder=my_share1 test_file.bin --transfer=httpgw --transfer-info=@json:'{"url":"https://tst.example.com/path@"}'
|
@@ -6749,6 +6791,8 @@ health
|
|
6749
6791
|
> **Note:** Add `ascli faspio` in front of the commands:
|
6750
6792
|
|
6751
6793
|
```bash
|
6794
|
+
bridges create @json:'{"name":"test1","local":{"protocol":"tcp","tls_enabled":false,"port":"3000","bind_address":"127.0.0.1"},"forward":{"protocol":"fasp","tls_enabled":false,"port":"3994","bind_address":"127.0.0.1","host":["10.0.0.1"]}}'
|
6795
|
+
bridges delete --bulk=yes @json:@stdin:
|
6752
6796
|
bridges list
|
6753
6797
|
health
|
6754
6798
|
```
|
@@ -7087,28 +7131,52 @@ An interface for the `async` utility is provided in the following plugins:
|
|
7087
7131
|
- `aoc files sync` (uses node)
|
7088
7132
|
- `shares files sync` (uses node)
|
7089
7133
|
|
7090
|
-
|
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.
|
7091
7136
|
|
7092
|
-
|
7137
|
+
Some of the `sync` parameters are filled by the related plugin using transfer spec parameters (e.g. including token).
|
7093
7138
|
|
7094
|
-
> **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.
|
7095
7140
|
|
7096
|
-
|
7141
|
+
`sync` supports 0 or 3 arguments:
|
7097
7142
|
|
7098
|
-
|
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
|
7099
7150
|
|
7100
7151
|
It is the same payload as specified on the option `--conf` of `async` or in node API `/asyncs`.
|
7101
7152
|
This is the preferred syntax and allows a single session definition.
|
7102
|
-
|
7153
|
+
|
7154
|
+
> **Note:** No progress, nor error messages is provided on terminal.
|
7103
7155
|
|
7104
7156
|
Documentation on Async node API can be found on [IBM Developer Portal](https://developer.ibm.com/apis/catalog?search=%22aspera%20sync%20api%22).
|
7105
7157
|
|
7106
|
-
|
7158
|
+
If 3 arguments are provided they are mapped to:
|
7159
|
+
|
7160
|
+
- `direction`
|
7161
|
+
- `local.path`
|
7162
|
+
- `remote.path`
|
7163
|
+
|
7164
|
+
### `async` options mapping
|
7107
7165
|
|
7108
7166
|
`ascli` defines a JSON equivalent to regular `async`options.
|
7109
7167
|
It is based on a JSON representation of `async` command line options.
|
7110
7168
|
It allows definition of multiple sync sessions in a single command, although usually only one sync session is defined.
|
7111
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
|
+
|
7112
7180
|
## Hot folder
|
7113
7181
|
|
7114
7182
|
### Requirements
|
data/examples/build_exec
ADDED
@@ -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
|
@@ -0,0 +1,28 @@
|
|
1
|
+
#!/bin/bash
|
2
|
+
# Usage: ./build_package.sh <gem_name> <gem_version>
|
3
|
+
# Example: ./build_package.sh aspera-cli 4.18.0
|
4
|
+
set -e
|
5
|
+
if [ "$#" -ne 2 ]; then
|
6
|
+
echo "Usage: $0 <gem_name> <gem_version>"
|
7
|
+
exit 1
|
8
|
+
fi
|
9
|
+
gem_name=$1
|
10
|
+
gem_version=$2
|
11
|
+
# on macOS, GNU tar is gtar
|
12
|
+
GNU_TAR=tar
|
13
|
+
if [ "$(uname)" == "Darwin" ]; then
|
14
|
+
GNU_TAR=gtar
|
15
|
+
fi
|
16
|
+
# temp folder to install gems
|
17
|
+
tmp_dir_install=.tmp_install
|
18
|
+
# clean, if there were left overs
|
19
|
+
rm -fr $tmp_dir_install
|
20
|
+
# retrieve list of necessary gems
|
21
|
+
echo "Getting gems $gem_name $gem_version"
|
22
|
+
# install gems in a temporary folder
|
23
|
+
gem install $gem_name:$gem_version --no-document --install-dir $tmp_dir_install
|
24
|
+
archive=$gem_name-$gem_version-gems.tgz
|
25
|
+
# .gem files are located in cache folder
|
26
|
+
$GNU_TAR -zcf $archive --directory=$tmp_dir_install/cache/. .
|
27
|
+
rm -fr $tmp_dir_install
|
28
|
+
echo "Archive: $archive"
|