Skip to content

Commit a11b3a5

Browse files
doc
Signed-off-by: Laurent Martin <laurent.martin.l@gmail.com>
1 parent cf63226 commit a11b3a5

3 files changed

Lines changed: 101 additions & 103 deletions

File tree

docs/README.erb.md

Lines changed: 50 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -31,14 +31,14 @@ Think of me as Aspera’s command-line sidekick: quick, reliable, and a little n
3131

3232
<%=gemspec.authors.join(', ')%>/2016-<%=Time.new.year%>
3333

34-
The <%=gemspec.name%> Ruby gem offers a powerful command-line interface (CLI, <%=tool%>) for IBM Aspera software, facilitating seamless interaction with Aspera APIs and enabling high-performance file transfers.
35-
It also serves as an excellent resource for developers seeking to explore and understand the Aspera API ecosystem.
34+
The <%=gemspec.name%> Ruby gem offers a powerful command-line interface (CLI, <%=tool%>) for IBM Aspera software, enabling seamless interaction with Aspera APIs and high-performance file transfers.
35+
It also serves as a useful resource for developers who want to explore and understand the Aspera API ecosystem.
3636

37-
Ruby Gem: [<%=gemspec.metadata['rubygems_uri']%>](<%=gemspec.metadata['rubygems_uri']%>)
37+
Ruby gem: [<%=gemspec.metadata['rubygems_uri']%>](<%=gemspec.metadata['rubygems_uri']%>)
3838

3939
Ruby Doc: [<%=gemspec.metadata['documentation_uri']%>](<%=gemspec.metadata['documentation_uri']%>)
4040

41-
Minimum required Ruby <%=ruby_version%>.
41+
Minimum required Ruby version is <%=ruby_version%>.
4242

4343
[Aspera APIs on IBM developer](https://developer.ibm.com/apis/catalog/?search=aspera)
4444

@@ -48,8 +48,8 @@ Minimum required Ruby <%=ruby_version%>.
4848
> If you are scripting or automating transfers from the command line, <%=tool%> is the right choice.
4949
> If you are developing an application, prefer the APIs or SDKs instead.
5050
51-
The <%=tool%> tool is designed for command-line interaction with IBM Aspera products, enabling users to execute remote commands and perform file transfers efficiently.
52-
It supports both interactive terminal operations (e.g., maintenance tasks on VT100-compatible terminals) and scripting use cases (e.g., batch jobs via shell scripts or cron).
51+
<%=tool%> is designed for command-line interaction with IBM Aspera products, enabling users to execute remote commands and perform high-performance file transfers.
52+
It supports both interactive terminal operations (e.g., maintenance tasks on VT100-compatible terminals) and scripting use cases (e.g., batch jobs via shell scripts or `cron`).
5353

5454
Internally, <%=tool%> integrates several components:
5555

@@ -58,19 +58,20 @@ Internally, <%=tool%> integrates several components:
5858
- REST API calls, including OAuth (like `curl`)
5959
- Aspera’s `ascp` for high-speed file transfers
6060

61-
For programmatic integration in languages such as C/C++, Go, Python, NodeJS, and others, it is recommended to use the [Aspera APIs](https://ibm.biz/aspera_api) directly.
61+
For programmatic integration with languages such as C/C++, Go, Python, NodeJS, and others, it is recommended to use the [Aspera APIs](https://ibm.biz/aspera_api) directly.
6262
These include:
6363

6464
- REST APIs for products like Aspera on Cloud (AoC), Faspex, and Node
6565
- The Transfer Daemon with gRPC interfaces and language-specific stubs (C/C++, Python, .NET/C#, Java, Go, Ruby, Rust, etc.)
6666

67-
Using these APIs is generally more suitable for long-term development and maintenance.
67+
These APIs are generally more suitable for long-term development and maintenance.
6868
Example implementations can be found at: <https://github.com/laurent-martin/aspera-api-examples>.
6969

7070
For scripting and ad-hoc command-line tasks, <%=tool%> is ideal.
7171
It is developer-friendly and well-suited for quickly testing and learning Aspera APIs (see [Logging, Debugging](#logging-debugging)).
7272

73-
Clarifying the CLI landscape:
73+
**CLI landscape overview**
74+
7475
`ascp` is the low-level command-line utility that implements the FASP protocol and is used for actual data transfers.
7576
Every Aspera transfer involves an `ascp` process on both the client and server sides.
7677
While `ascp` can be used directly, it is limited to basic send/receive operations and lacks features like configuration management, automatic resume, and remote file listing.
@@ -84,18 +85,18 @@ Using [Windows PowerShell or cmd](#shell-parsing-for-windows) is also possible.
8485
> [!NOTE]
8586
> All command line examples in sections titled **<%=sample_commands_title(:_plugin_name_)%>** are verified during version validation.
8687
87-
Command line arguments beginning with `my_` in examples, e.g. `my_param_value`, are user-provided values, and not fixed value commands.
88+
Command line arguments beginning with `my_` in examples, e.g. `my_param_value`, are user-provided values, not fixed value commands.
8889

8990
<%=tool%> is an API **Client** toward the remote Aspera application **Server** (Faspex, HSTS, etc.)
9091

9192
Some commands will start an Aspera transfer (e.g. `upload`).
92-
The transfer is not directly implemented in <%=tool%>; rather, <%=tool%> uses one of the external Aspera Transfer Clients called **[Transfer Agents](#transfer-clients-agents)**.
93+
The transfer is not implemented directly in <%=tool%>; rather, <%=tool%> uses one of the external Aspera Transfer Clients called **[Transfer Agents](#transfer-clients-agents)**.
9394

9495
> [!NOTE]
9596
> A **[Transfer Agent](#transfer-clients-agents)** is a client for the remote Transfer Server (HSTS/HSTE).
9697
> It can be local, or remote.
9798
> For example a remote Aspera Transfer Server may be used as a transfer agent (using Node API).
98-
> i.e. using option `--transfer=node`
99+
> i.e. using the option `--transfer=node`
99100
100101
## Quick Start
101102

@@ -105,7 +106,7 @@ This section walks you through your first interaction with <%=tool%> on Linux.
105106

106107
- Get the <%=tool%> binary for Linux (.tgz) in the [release section of the GitHub repository](https://github.com/IBM/aspera-cli/releases).
107108

108-
- Decompress to get the executable:
109+
- Decompress the archive to get the executable:
109110

110111
```shell
111112
mkdir -p $HOME/bin
@@ -115,7 +116,7 @@ export PATH=$PATH:$HOME/bin
115116
```
116117

117118
> [!NOTE]
118-
> For other OSes, complete the [Installation](#installation) section (Ruby, Gem, FASP) to get <%=tool%> set up on your system.
119+
> For other operating systems, complete the [Installation](#installation) section (Ruby, Gem, FASP) to get <%=tool%> set up on your system.
119120
120121
- Once installed, confirm <%=tool%> is accessible by checking its version:
121122

@@ -135,7 +136,7 @@ export PATH=$PATH:$HOME/bin
135136

136137
### Option A - Test with the Aspera Demo Server
137138

138-
- Run the following two commands to initialize the demo environment:
139+
- Run the following command to initialize the demo environment:
139140

140141
```shell
141142
<%=cmd%> config initdemo
@@ -217,29 +218,29 @@ If you'd prefer to test against Aspera on Cloud, skip ahead to the [AoC Wizard](
217218

218219
## Installation
219220

220-
There are several possibilities to install <%=tool%>:
221+
There are several ways to install <%=tool%>:
221222

222223
- Using a Ruby environment directly on the host operating system (Linux, macOS, Windows).
223224

224-
This is the most generic method.
225-
It consists in installing:
225+
This is the most general method.
226+
It consists of installing:
226227
- The [Ruby language](#ruby),
227228
- Then [<%=gemspec.name%>](#ruby-gem-aspera-cli) Ruby gem,<!-- markdownlint-disable-line -->
228229
- [Aspera Transfer Daemon (`ascp`)](#fasp-protocol-ascp).
229230
- As a [single file executable](#single-file-executable)
230231

231-
This is easy, but only a limited number of platforms is supported.
232+
This method is simple, but only a limited number of platforms are supported.
232233
- As a [container](#container) (`docker`, `podman`, `singularity`).
233234

234-
The following sections provide information on the various installation methods.
235+
The following sections describe the various installation methods.
235236

236237
An internet connection is required for the installation.
237-
If you don't have internet for the installation, refer to section [Installation without internet access](#installation-in-air-gapped-environment).
238+
If you do not have internet access, refer to section [Installation without internet access](#installation-in-air-gapped-environment).
238239

239240
### Single file executable
240241

241242
> [!WARNING]
242-
> Only on a limited number of platforms.
243+
> Available only on a limited number of platforms.
243244
244245
<%=tool%> is available as a single **platform-dependent executable** in the [Releases](https://github.com/IBM/aspera-cli/releases).
245246

@@ -261,7 +262,7 @@ chmod a+x <%=cmd%>
261262
> [!WARNING]
262263
> On Linux, the executable requires a minimum GLIBC version, specified in the executable name on download site.
263264
264-
On Linux, check your system's GLIBC version on this site: [repology.org](https://repology.org/project/glibc/versions), or check your GLIBC version with `ldd`:
265+
On Linux, you can check your system's GLIBC version on this site: [repology.org](https://repology.org/project/glibc/versions), or check your GLIBC version with `ldd`:
265266

266267
```shell
267268
ldd --version | head -n1
@@ -290,9 +291,9 @@ The required GLIBC version for `ascp` can be found in the [Release Notes of HSTS
290291

291292
A Ruby interpreter is required to run <%=tool%>.
292293

293-
Required Ruby <%=ruby_version%>.
294+
Required Ruby version is <%=ruby_version%>.
294295

295-
**Ruby can be installed using any method**: `rpm`, `yum`, `dnf`, `rvm`, `rbenv`, `brew`, Windows installer, ...
296+
**Ruby can be installed using any of the following methods**: `rpm`, `yum`, `dnf`, `rvm`, `rbenv`, `brew`, Windows installer, ...
296297

297298
**In priority**, refer to the official Ruby documentation:
298299

@@ -310,11 +311,11 @@ Manual installation:
310311

311312
- Navigate to [https://rubyinstaller.org/](https://rubyinstaller.org/) &rarr; **Downloads**.
312313
- Download the latest Ruby installer **"with devkit"**. (`Msys2` is needed to install some native extensions, such as `grpc`)
313-
- Execute the installer which installs by default in: `C:\RubyVV-x64` (`VV` is the version number)
314+
- Execute the installer, which installs by default in: `C:\RubyVV-x64` (`VV` is the version number)
314315
- At the end of the installation procedure, the `Msys2` installer is automatically executed, select option 3 (`Msys2` and `mingw`)
315316
- Then install the `aspera-cli` gem and Aspera Transfer Daemon (see next sections)
316317

317-
Automated installation, with internet access:
318+
Automated installation (with internet access):
318319

319320
The Ruby installer supports silent installation, to see the options, execute it with `/help`, or refer to the [Ruby Installer FAQ](https://github.com/oneclick/rubyinstaller2/wiki/FAQ)
320321

@@ -352,15 +353,15 @@ brew install ruby
352353
353354
This installs a recent Ruby suitable for <%=tool%>.
354355

355-
To add PATH to Ruby on Apple Silicon, add the following lines to your shell configuration file (i.e. `~/.zshrc` if you are using `zsh`, or `~/.bash_profile` for `bash`):
356+
To add Ruby to your `PATH` on Apple Silicon, add the following lines to your shell configuration file (i.e. `~/.zshrc` if you are using `zsh`, or `~/.bash_profile` for `bash`):
356357

357358
```shell
358359
PATH="$(brew --prefix ruby)/bin:$($(brew --prefix ruby)/bin/gem env gemdir)/bin:$PATH"
359360
```
360361

361362
> [!NOTE]
362363
> This is what is displayed at the end of the installation of the ruby tap,
363-
> same as message from: `brew info ruby`
364+
> same as the message from: `brew info ruby`
364365
365366
#### Linux: Package
366367

@@ -535,7 +536,7 @@ make install
535536

536537
<%=tool%> can also run with the [JRuby](https://www.jruby.org/) interpreter.
537538
All that is needed is a JVM (Java Virtual Machine) on your system (`java`).
538-
The JRuby package comes pre-complied and does not require compilation of native extensions.
539+
The JRuby package comes pre-compiled and does not require compilation of native extensions.
539540
Use a version of JRuby compatible with Ruby version supported by <%=tool%>.
540541
Refer to [the Wikipedia page](https://en.wikipedia.org/wiki/JRuby) to match JRuby and Ruby versions.
541542
Choose the latest version from:
@@ -579,7 +580,7 @@ Install like this:
579580
<%=gem_opt_cmd%>
580581
```
581582

582-
### Ruby Gem: `<%=gemspec.name%>`
583+
### Ruby gem: `<%=gemspec.name%>`
583584

584585
Once you have Ruby and rights to install gems, install the `<%=gemspec.name%>` gem and its dependencies:
585586

@@ -605,7 +606,7 @@ To check if a new version is available (independently of `version_check_days`):
605606
#### Gem installation with signature verification
606607

607608
The gem is signed with a private key, and the public certificate is available in the GitHub repository (`certs/aspera-cli-public-cert.pem`).
608-
When installing the gem, the signature can be optionally verified.
609+
When installing the gem, the signature may optionally be verified.
609610

610611
For [secure installation](https://guides.rubygems.org/security/#using-gems), one can install the gem with the public key:
611612

@@ -615,7 +616,7 @@ Import the verification certificate:
615616
gem cert --add <(curl -Ls https://raw.githubusercontent.com/IBM/aspera-cli/main/certs/aspera-cli-public-cert.pem)
616617
```
617618

618-
The user installs the gem with `HighSecurity` or `MediumSecurity`: this will succeed only of the gem is trusted:
619+
The user installs the gem with `HighSecurity` or `MediumSecurity`: this will succeed only if the gem is trusted:
619620

620621
```shell
621622
gem install -P MediumSecurity <%=gemspec.name%>
@@ -699,7 +700,7 @@ To download it, pipe to `config download`:
699700
<%=cmd%> config transferd list --select=@json:'{"platform":"osx-arm64","version":"1.1.3"}' --fields=url | <%=cmd%> config download @stdin:
700701
```
701702

702-
If installation from a local file preferred (air-gapped installation) instead of fetching from internet: one can specify the location of the SDK file with option `sdk_url`:
703+
If installation from a local file is preferred (air-gapped installation) instead of fetching from internet: one can specify the location of the SDK file with option `sdk_url`:
703704

704705
```shell
705706
<%=cmd%> config ascp install --sdk-url=file:///macos-arm64-1.1.3-c6c7a2a.zip
@@ -824,7 +825,7 @@ gem install --force --local *.gem
824825
```
825826

826827
> [!NOTE]
827-
> A beta version of a packaged installed is available.
828+
> A beta version of a packaged installer is available.
828829
829830
### Container
830831

@@ -980,7 +981,7 @@ echo 'Local file to transfer' > $xferdir/samplefile.txt
980981
> The local file (`samplefile.txt`) is specified relative to storage view from container (`/xferfiles`) mapped to the host folder `$HOME/xferdir`
981982
982983
> [!WARNING]
983-
> Do not use too many volumes, as the legacy `aufs` limits the number.
984+
> Do not use too many volumes, as the legacy `aufs` driver limits their number.
984985
> (anyway, prefer to use `overlay2`)
985986
986987
#### Container: Offline installation
@@ -1129,7 +1130,7 @@ For example, on Linux to force the use the system's certificate store:
11291130
`ascp` also needs to validate certificates when using **WSS** for transfer TCP part (instead of **SSH**).
11301131

11311132
By default,`ascp` uses a hard coded root location `OPENSSLDIR`.
1132-
Original `ascp`'s hard coded locations can be found using:
1133+
Original `ascp`'s hard-coded locations can be found using:
11331134

11341135
```shell
11351136
<%=cmd%> config ascp info --fields=openssldir
@@ -1280,7 +1281,7 @@ It's up to the program to split arguments:
12801281
- [Windows: How Command Line Parameters Are Parsed](https://daviddeley.com/autohotkey/parameters/parameters.htm#RUBY)
12811282
- [Understand Quoting and Escaping of Windows Command Line Arguments](https://web.archive.org/web/20190316094059/http://www.windowsinspired.com/understanding-the-command-line-string-and-arguments-received-by-a-windows-program/)
12821283

1283-
<%tool%> is a Ruby program, so Ruby parses the command line (received with `GetCommandLineW`) into arguments and provides them to the Ruby code (`$0` and `ARGV`).
1284+
<%=tool%> is a Ruby program, so Ruby parses the command line (received with `GetCommandLineW`) into arguments and provides them to the Ruby code (`$0` and `ARGV`).
12841285
Ruby vaguely follows the Microsoft C/C++ parameter parsing rules.
12851286
(See `w32_cmdvector` in Ruby source [`win32.c`](https://github.com/ruby/ruby/blob/master/win32/win32.c#L1766)) : <!--cspell:disable-line-->
12861287

@@ -4162,9 +4163,7 @@ File transfer operations are monitored, and a progress bar is displayed on the t
41624163
41634164
The same progress bar is used for any type of transfer, using `ascp`, server to server, using HTTPS, etc.
41644165
4165-
### Daemon and Scheduler
4166-
4167-
#### Automated Execution
4166+
### Scheduler
41684167
41694168
<%=tool%> does not include a built-in scheduler.
41704169
Automated execution should therefore rely on operating system facilities.
@@ -4187,7 +4186,7 @@ This script may:
41874186
41884187
- centralize command options
41894188
4190-
**Example: (Linux)**
4189+
**Example** (Linux)
41914190
41924191
```shell
41934192
#!/bin/bash
@@ -4198,7 +4197,7 @@ exec timeout 30m <%=cmd%> "${@}"
41984197
41994198
Save as:
42004199
4201-
```
4200+
```shell
42024201
/home/xfer/bin/<%=cmd%>_tool
42034202
```
42044203
@@ -5890,9 +5889,9 @@ Admin shared folders, created by administrators in a workspace, follow the synta
58905889
58915890
> [!TIP]
58925891
> The node is identified by identifier.
5893-
> To use an name instead, one can use the percent selector, like `%name:"my node"`.
5894-
> The path is identifier by a path, one can specify a file id, with `%id:123`.
5895-
> If the id is left blank: `%id:`, then it means `*`, i.e. all.
5892+
> To use a name instead, one can use the percent selector, like `%name:"my node"`.
5893+
> The path is identifier by a path, one can specify a file ID, with `%id:123`.
5894+
> If the ID is left blank: `%id:`, then it means `*`, i.e. all.
58965895
58975896
##### Example: List permissions on a user shared folder
58985897
@@ -6056,10 +6055,10 @@ To list members:
60566055
╰─────────────┴──────────────────────────────────┴──────────────┴──────────────────────╯
60576056
```
60586057
6059-
If you have the node id of the shared folder, than it is equivalent to:
6058+
If you have the node ID of the shared folder, then it is equivalent to:
60606059
60616060
```shell
6062-
<%=cmd%> aoc admin node do 8669 perm /project1 list --query=@json:'{"tag":"aspera.files.workspace.id=<workspace_id>"}'
6061+
<%=cmd%> aoc admin node do 8669 permission /project1 list --query=@json:'{"tag":"aspera.files.workspace.id=<workspace_id>"}'
60636062
```
60646063
60656064
##### Example: List all workspace admin shared folder on a node
@@ -6074,12 +6073,12 @@ First get the workspace identifier:
60746073
<workspace_id>
60756074
```
60766075
6077-
Then, identify the node id on which to list, see previous section.
6076+
Then, identify the node ID on which to list, see previous section.
60786077
60796078
Finally, list all shared folders, as permissions:
60806079
60816080
```shell
6082-
<%=cmd%> aoc admin node do <node_id> perm %id: list --query=@json:'{"access_type":"user","access_id":"ASPERA_ACCESS_KEY_ADMIN_WS_<workspace_id>"}'
6081+
<%=cmd%> aoc admin node do <node_id> permission %id: list --query=@json:'{"access_type":"user","access_id":"ASPERA_ACCESS_KEY_ADMIN_WS_<workspace_id>"}'
60836082
```
60846083
60856084
> [!NOTE]
@@ -8296,7 +8295,7 @@ The documentation is available in the terminal with:
82968295
```
82978296
82988297
> [!NOTE]
8299-
> <%tool%> accepts the following fields within the `sync_info` Hash.
8298+
> <%=tool%> accepts the following fields within the `sync_info` Hash.
83008299
> The option listed in the **Description** correspond to the equivalent parameters used by the low‑level `async` command.
83018300
83028301
<%=sync_conf_table%>

0 commit comments

Comments
 (0)