aspera-cli 4.25.3 → 4.25.5
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.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data/CHANGELOG.md +40 -6
- data/CONTRIBUTING.md +122 -111
- data/README.md +9 -7
- data/lib/aspera/agent/direct.rb +10 -8
- data/lib/aspera/agent/factory.rb +3 -3
- data/lib/aspera/agent/node.rb +1 -1
- data/lib/aspera/api/alee.rb +1 -0
- data/lib/aspera/api/aoc.rb +15 -14
- data/lib/aspera/api/ats.rb +1 -1
- data/lib/aspera/api/cos_node.rb +5 -0
- data/lib/aspera/api/faspex.rb +27 -20
- data/lib/aspera/api/httpgw.rb +19 -3
- data/lib/aspera/api/node.rb +122 -29
- data/lib/aspera/ascp/installation.rb +9 -10
- data/lib/aspera/cli/error.rb +8 -0
- data/lib/aspera/cli/formatter.rb +27 -11
- data/lib/aspera/cli/info.rb +2 -1
- data/lib/aspera/cli/main.rb +30 -12
- data/lib/aspera/cli/manager.rb +43 -31
- data/lib/aspera/cli/plugins/aoc.rb +7 -5
- data/lib/aspera/cli/plugins/base.rb +1 -88
- data/lib/aspera/cli/plugins/config.rb +2 -1
- data/lib/aspera/cli/plugins/faspex.rb +6 -6
- data/lib/aspera/cli/plugins/faspex5.rb +64 -64
- data/lib/aspera/cli/plugins/node.rb +33 -78
- data/lib/aspera/cli/plugins/shares.rb +4 -2
- data/lib/aspera/cli/special_values.rb +1 -0
- data/lib/aspera/cli/transfer_agent.rb +3 -0
- data/lib/aspera/cli/version.rb +1 -1
- data/lib/aspera/cli/wizard.rb +2 -1
- data/lib/aspera/dot_container.rb +10 -10
- data/lib/aspera/log.rb +1 -1
- data/lib/aspera/markdown.rb +1 -1
- data/lib/aspera/persistency_folder.rb +1 -1
- data/lib/aspera/rest.rb +39 -54
- data/lib/aspera/rest_list.rb +121 -0
- data/lib/aspera/sync/operations.rb +1 -1
- data/lib/aspera/transfer/parameters.rb +8 -8
- data/lib/aspera/transfer/spec.rb +1 -0
- data/lib/aspera/yaml.rb +1 -1
- data.tar.gz.sig +0 -0
- metadata +4 -3
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: a886cb3a02f285c84728b216f1cd906b8440db041a8240ed09ed1969d81ec6c3
|
|
4
|
+
data.tar.gz: a05a7d9fc94a5d748c52d659426a18cf567a9e303231c86d1ec2312abc3465ae
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 87988d7b4252134e772c7c5420e59471cfb89355627cb3bf49fe6f5cf19382644856dfee3494adb3db2a879fc42b77f5754f8fee995eae8ca45229fc68ccd769
|
|
7
|
+
data.tar.gz: ace70306ca85a12b17d12dcf146f280d313dcbef491576c265a5a20f70199d1c03ef3834cc62de30b20949f2cfdea39821b09b232c8bd826709f5622c7f631c3
|
checksums.yaml.gz.sig
CHANGED
|
Binary file
|
data/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,40 @@
|
|
|
2
2
|
|
|
3
3
|
<!-- markdownlint-configure-file { "no-duplicate-heading": { "siblings_only": true } } -->
|
|
4
4
|
|
|
5
|
+
## 4.25.5
|
|
6
|
+
|
|
7
|
+
Released: 2026-03-25
|
|
8
|
+
|
|
9
|
+
### New Features
|
|
10
|
+
|
|
11
|
+
* `faspex5`: When sending a package, recipients specified in fields `private_recipients`, `notified_on_upload`, `notified_on_download` and `notified_on_receipt` are now also expanded like field `recipients`.
|
|
12
|
+
|
|
13
|
+
### Issues Fixed
|
|
14
|
+
|
|
15
|
+
* `config`: Fixed `preset update` with dot-path options.
|
|
16
|
+
* `sync`: #251 in `admin` command: Fixed database path on Windows: Use `~private-asp` instead of `.private-asp`.
|
|
17
|
+
* `httpgw`: #252 HTTPGW transfer showed success even in case of error code `403`. Now raises error with message.
|
|
18
|
+
|
|
19
|
+
### Breaking Changes
|
|
20
|
+
|
|
21
|
+
## 4.25.4
|
|
22
|
+
|
|
23
|
+
Released: 2026-03-04
|
|
24
|
+
|
|
25
|
+
### New Features
|
|
26
|
+
|
|
27
|
+
* **general**: If `@:` is used, then marker `END` optionally marks the end of collected arguments.
|
|
28
|
+
* `format`: `display` defaults to `info` only if `format` is set to `table`, else defaults to `data`.
|
|
29
|
+
* `node`: Parameter `accept_v4` of option `node_api` (boolean, defaults to `true`) allows using gen4 browsing with `Accept-Version: 4.0` for best performance when there are thousands of files.
|
|
30
|
+
|
|
31
|
+
### Issues Fixed
|
|
32
|
+
|
|
33
|
+
* `faspex5`: Listing content, or receiving a package requires API parameter: `recipient_user_id` or `recipient_workgroup_id`, else error `Not authorized` is returned.
|
|
34
|
+
|
|
35
|
+
### Breaking Changes
|
|
36
|
+
|
|
37
|
+
* `node`: Options `node_cache` and `default_ports` are replaced with option: `node_api` (`Hash`) with boolean parameters (keys): `cache` and `standard_ports` with default value `true`.
|
|
38
|
+
|
|
5
39
|
## 4.25.3
|
|
6
40
|
|
|
7
41
|
Released: 2026-02-18
|
|
@@ -283,7 +317,7 @@ Released: 2025-01-21
|
|
|
283
317
|
|
|
284
318
|
* Internal: Basic REST calls now return data directly. (no more `data` key). For advanced calls, use `call`.
|
|
285
319
|
* Internal: Transfer SDK download is now a 2-step procedure: First get the YAML file from GitHub with URLs for the various platforms and versions, and then download the archive from the official IBM repository.
|
|
286
|
-
**global**: Option `format=multi` is replaced with option `multi_table=yes`.
|
|
320
|
+
* **global**: Option `format=multi` is replaced with option `multi_table=yes`.
|
|
287
321
|
* `faspex5`: Removed deprecated option `value` replaced with positional parameter.
|
|
288
322
|
|
|
289
323
|
## 4.19.0
|
|
@@ -1047,7 +1081,7 @@ Released: 2021-02-03
|
|
|
1047
1081
|
|
|
1048
1082
|
### New Features
|
|
1049
1083
|
|
|
1050
|
-
* The option `value` of command `find
|
|
1084
|
+
* The option `value` of command `find` to filter on name is mandatory.
|
|
1051
1085
|
* `find` now also reports all types (file, folder, link).
|
|
1052
1086
|
* `find` now is able to report all fields (type, size, etc...).
|
|
1053
1087
|
|
|
@@ -1077,7 +1111,7 @@ Released: 2021-02-03
|
|
|
1077
1111
|
### New Features
|
|
1078
1112
|
|
|
1079
1113
|
* Improved wizard (prepare for AoC global client id).
|
|
1080
|
-
* Preview generator: Added option :
|
|
1114
|
+
* Preview generator: Added option : `skip_format` with values `png`, `mp4`.
|
|
1081
1115
|
* Removed outdated pictures from this doc.
|
|
1082
1116
|
|
|
1083
1117
|
## 0.9.19
|
|
@@ -1145,7 +1179,7 @@ Released: 2021-02-03
|
|
|
1145
1179
|
|
|
1146
1180
|
### New Features
|
|
1147
1181
|
|
|
1148
|
-
* `faspex`: Use option `once_only` set to `yes` to enable cargo like function. id=NEW deprecated.
|
|
1182
|
+
* `faspex`: Use option `once_only` set to `yes` to enable cargo like function. `id=NEW` deprecated.
|
|
1149
1183
|
* `aoc`: Share to share transfer with command `transfer`.
|
|
1150
1184
|
|
|
1151
1185
|
## 0.9.7
|
|
@@ -1154,8 +1188,8 @@ Released: 2021-02-03
|
|
|
1154
1188
|
|
|
1155
1189
|
* Homogeneous transfer spec for `node` and [`direct`](README.md#agt_direct) transfer agents.
|
|
1156
1190
|
* Preview persistency goes to unique file by default.
|
|
1157
|
-
* Catch mxf extension in preview as video.
|
|
1158
|
-
* Faspex: Possibility to download all packages by specifying id=ALL
|
|
1191
|
+
* Catch `mxf` extension in preview as video.
|
|
1192
|
+
* Faspex: Possibility to download all packages by specifying `id=ALL`.
|
|
1159
1193
|
* Faspex: To come: Cargo-like function to download only new packages with id=NEW.
|
|
1160
1194
|
|
|
1161
1195
|
## 0.9.6
|
data/CONTRIBUTING.md
CHANGED
|
@@ -2,24 +2,25 @@
|
|
|
2
2
|
|
|
3
3
|
## Reporting Issues and Vulnerabilities
|
|
4
4
|
|
|
5
|
-
If you encounter a
|
|
5
|
+
If you encounter a bug or a security vulnerability, please report it via [GitHub Issues](https://github.com/IBM/aspera-cli/issues).
|
|
6
6
|
|
|
7
|
-
Before submitting a new
|
|
7
|
+
Before submitting a new report:
|
|
8
8
|
|
|
9
|
-
- Search existing issues to
|
|
9
|
+
- **Search existing issues** to determine if the problem has already been documented or resolved.
|
|
10
10
|
|
|
11
|
-
To help us
|
|
11
|
+
To help us diagnose and resolve the issue efficiently, please include the following in your report:
|
|
12
12
|
|
|
13
|
-
- The
|
|
13
|
+
- The `ascli` version you are using:
|
|
14
14
|
|
|
15
|
-
```
|
|
16
|
-
ascli
|
|
15
|
+
```shell
|
|
16
|
+
ascli -v
|
|
17
17
|
```
|
|
18
18
|
|
|
19
|
-
-
|
|
20
|
-
- Your Ruby version information:
|
|
19
|
+
- **Update confirmation**: Verify that you are running the latest version.
|
|
21
20
|
|
|
22
|
-
|
|
21
|
+
- **Your Ruby environment details**:
|
|
22
|
+
|
|
23
|
+
```shell
|
|
23
24
|
ruby -v
|
|
24
25
|
```
|
|
25
26
|
|
|
@@ -29,103 +30,101 @@ We welcome contributions to improve the `aspera-cli` project!
|
|
|
29
30
|
|
|
30
31
|
### Getting Started
|
|
31
32
|
|
|
32
|
-
Clone the repository
|
|
33
|
+
Clone the repository to initialize the development environment:
|
|
33
34
|
|
|
34
|
-
```
|
|
35
|
+
```shell
|
|
35
36
|
git clone https://github.com/IBM/aspera-cli.git
|
|
36
37
|
cd aspera-cli
|
|
37
38
|
bundle install
|
|
38
39
|
bundle exec rake -T
|
|
39
40
|
```
|
|
40
41
|
|
|
41
|
-
For testing instructions, refer to [Running Tests](#running-tests).
|
|
42
|
+
For detailed testing instructions, please refer to [Running Tests](#running-tests).
|
|
42
43
|
|
|
43
44
|
### How to Contribute
|
|
44
45
|
|
|
45
|
-
To submit a contribution:
|
|
46
|
+
To submit a contribution, follow these steps:
|
|
46
47
|
|
|
47
48
|
1. **Fork** the repository on GitHub.
|
|
48
49
|
|
|
49
|
-
1. **Create a feature branch** for your changes.
|
|
50
|
+
1. **Create a feature branch** specifically for your changes.
|
|
50
51
|
|
|
51
52
|
1. **Implement** your feature or bug fix.
|
|
52
53
|
|
|
53
54
|
1. **Write tests** to ensure your changes are robust and prevent regressions.
|
|
54
55
|
|
|
55
|
-
1. Run `rubocop` to ensure your code
|
|
56
|
+
1. **Run** `rubocop` to ensure your code adheres to the Ruby style guide.
|
|
56
57
|
|
|
57
|
-
1. Update `CHANGELOG.md` with a summary of your changes.
|
|
58
|
+
1. **Update** `CHANGELOG.md` with a concise summary of your changes.
|
|
58
59
|
|
|
59
|
-
1. Submit a
|
|
60
|
+
1. **Submit a pull request** with a detailed description of your work.
|
|
60
61
|
|
|
61
62
|
> [!TIP]
|
|
62
|
-
>
|
|
63
|
+
> Keep pull requests focused; include only changes relevant to the specific feature or fix.
|
|
63
64
|
|
|
64
65
|
## Architecture
|
|
65
66
|
|
|
66
|
-
The
|
|
67
|
+
The `aspera-cli` architecture is designed to be modular and extensible.
|
|
67
68
|
|
|
68
69
|

|
|
69
70
|
|
|
70
71
|
### Structure Highlights
|
|
71
72
|
|
|
72
|
-
- Entry Point
|
|
73
|
+
- **Entry Point**:
|
|
73
74
|
|
|
74
|
-
`lib/aspera/cli/main.rb
|
|
75
|
+
`lib/aspera/cli/main.rb` contains the core CLI startup logic.
|
|
75
76
|
|
|
76
|
-
- Plugins
|
|
77
|
+
- **Plugins**:
|
|
77
78
|
|
|
78
|
-
Located in `lib/aspera/cli/plugins
|
|
79
|
+
Located in `lib/aspera/cli/plugins`, these extend CLI functionality and encapsulate specific features.
|
|
79
80
|
|
|
80
|
-
- Transfer Agents
|
|
81
|
+
- **Transfer Agents**:
|
|
81
82
|
|
|
82
|
-
|
|
83
|
+
Located in `lib/aspera/agent`, these components manage data transfer operations.
|
|
83
84
|
|
|
84
|
-
|
|
85
|
+
Detailed class diagrams are available in <docs/uml.png>
|
|
85
86
|
|
|
86
87
|
## Ruby Environment
|
|
87
88
|
|
|
88
|
-
`aspera-cli` is
|
|
89
|
-
You can
|
|
89
|
+
`aspera-cli` is built with Ruby.
|
|
90
|
+
You can manage your Ruby installation using your preferred tool (e.g., `rbenv`, `rvm`, or a system package manager).
|
|
90
91
|
|
|
91
92
|
To start with a clean state and remove all installed gems:
|
|
92
93
|
|
|
93
|
-
```
|
|
94
|
+
```shell
|
|
94
95
|
bundle exec rake tools:clean_gems
|
|
95
96
|
```
|
|
96
97
|
|
|
97
98
|
> [!TIP]
|
|
98
|
-
> This is
|
|
99
|
+
> This is particularly useful when testing across different Ruby versions or preparing for a new release.
|
|
99
100
|
|
|
100
101
|
## Toolchain
|
|
101
102
|
|
|
102
|
-
The build system
|
|
103
|
+
The build system is powered by Ruby's `rake`.
|
|
103
104
|
|
|
104
|
-
### Environment
|
|
105
|
+
### Environment Configuration
|
|
105
106
|
|
|
106
|
-
|
|
107
|
+
The following environment variables and macros control specific build behaviors:
|
|
107
108
|
|
|
108
|
-
| Environment variable | Description
|
|
109
|
-
|
|
110
|
-
| `ASPERA_CLI_TEST_CONF_URL` | URL for configuration file
|
|
111
|
-
| `
|
|
112
|
-
| `LOG_LEVEL` |
|
|
113
|
-
| `
|
|
114
|
-
| `
|
|
115
|
-
| `
|
|
116
|
-
| `SIGNING_KEY_PEM` | PEM of signing key. |
|
|
109
|
+
| Environment variable | Contents | Description |
|
|
110
|
+
|-----------------------------|------------| -------------------------------------------------------------|
|
|
111
|
+
| `ASPERA_CLI_TEST_CONF_URL` | URL | URL for the configuration file containing secrets for tests. |
|
|
112
|
+
| `LOG_SECRETS` | `yes`/`no` | Toggles the logging of secrets in `rake` tasks. |
|
|
113
|
+
| `LOG_LEVEL` | `debug`, ... | Sets the logging verbosity for `rake` tasks. |
|
|
114
|
+
| `ENABLE_COVERAGE` | set/unset | Enables test coverage analysis when defined. |
|
|
115
|
+
| `SIGNING_KEY` | File path | Path to the signing key used for building the gem file. |
|
|
116
|
+
| `SIGNING_KEY_PEM` | PEM Value | The PEM content of the signing key. |
|
|
117
117
|
|
|
118
|
-
These can be set
|
|
118
|
+
These values can be set as standard environment variables or passed directly to the `rake` command.
|
|
119
119
|
|
|
120
|
-
Setting `SIGNING_KEY_PEM`
|
|
120
|
+
Setting `SIGNING_KEY_PEM` automatically generates a file at `$HOME/.gem/signing_key.pem` and sets the `SIGNING_KEY` variable accordingly.
|
|
121
121
|
|
|
122
122
|
> [!NOTE]
|
|
123
|
-
>
|
|
124
|
-
> Others are intended for use on the command line.
|
|
123
|
+
> `ASPERA_CLI_TEST_CONF_URL` is typically defined in your shell profile for development, while others are usually for ad-hoc command-line use.
|
|
125
124
|
|
|
126
|
-
To
|
|
125
|
+
To run the CLI directly from your source directory, add the following to your shell profile (adjust the path as necessary):
|
|
127
126
|
|
|
128
|
-
```
|
|
127
|
+
```shell
|
|
129
128
|
dev_ascli=$HOME/github/aspera-cli
|
|
130
129
|
export PATH=$dev_ascli/bin:$PATH
|
|
131
130
|
export RUBYLIB=$dev_ascli/lib:$RUBYLIB
|
|
@@ -135,83 +134,87 @@ export RUBYLIB=$dev_ascli/lib:$RUBYLIB
|
|
|
135
134
|
|
|
136
135
|
Documentation is generated with `pandoc` and `LaTeX`.
|
|
137
136
|
|
|
138
|
-
The
|
|
137
|
+
The project utilizes the **IBM Plex font**.
|
|
138
|
+
Installation instructions can be found at [IBM Plex](https://www.ibm.com/plex/).
|
|
139
139
|
|
|
140
|
-
On macOS,
|
|
140
|
+
On macOS, install `lualatex` and required packages via Homebrew:
|
|
141
141
|
|
|
142
|
-
```
|
|
142
|
+
```shell
|
|
143
143
|
brew install texlive
|
|
144
144
|
```
|
|
145
145
|
|
|
146
|
-
If
|
|
146
|
+
If using an alternative installation method, ensure the following packages are present:
|
|
147
147
|
|
|
148
|
-
```
|
|
148
|
+
```shell
|
|
149
149
|
tlmgr update --self
|
|
150
150
|
tlmgr install fvextra selnolig lualatex-math
|
|
151
151
|
```
|
|
152
152
|
|
|
153
|
-
|
|
153
|
+
- Validate URLs during generation with:
|
|
154
154
|
|
|
155
|
-
|
|
155
|
+
```shell
|
|
156
|
+
rake doc:check_links
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
- Debug the generation process: `ASPERA_CLI_DOC_DEBUG=debug`.
|
|
156
160
|
|
|
157
|
-
|
|
161
|
+
- Build the documentation:
|
|
158
162
|
|
|
159
|
-
```
|
|
163
|
+
```shell
|
|
160
164
|
rake doc:build
|
|
161
165
|
```
|
|
162
166
|
|
|
163
167
|
## Test Environment
|
|
164
168
|
|
|
165
|
-
|
|
169
|
+
Detailed testing information can be found in <tests/README.md>.
|
|
166
170
|
|
|
167
171
|
## Build
|
|
168
172
|
|
|
169
|
-
|
|
173
|
+
To build an unsigned gem:
|
|
170
174
|
|
|
171
|
-
```
|
|
175
|
+
```shell
|
|
172
176
|
bundle install
|
|
173
177
|
bundle exec rake unsigned
|
|
174
178
|
```
|
|
175
179
|
|
|
176
|
-
|
|
180
|
+
To exclude optional gems from the installation:
|
|
177
181
|
|
|
178
|
-
```
|
|
182
|
+
```shell
|
|
179
183
|
bundle config set without optional
|
|
180
184
|
```
|
|
181
185
|
|
|
182
186
|
### Signed gem
|
|
183
187
|
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
The gem is signed with the public certificate found in `certs` and the private key specified by `SIGNING_KEY` (kept secret by the maintainer).
|
|
188
|
+
Generating a signed gem requires a **private key**, specified via the `SIGNING_KEY` environment variable.
|
|
189
|
+
The gem is signed using the public certificate in `certs` and the **private key**.
|
|
187
190
|
|
|
188
|
-
```
|
|
191
|
+
```shell
|
|
189
192
|
bundle exec rake SIGNING_KEY=/path/to/vault/gem-private_key.pem
|
|
190
193
|
```
|
|
191
194
|
|
|
192
|
-
|
|
195
|
+
For more details, see <certs/README.md>.
|
|
193
196
|
|
|
194
|
-
### gRPC stubs for
|
|
197
|
+
### gRPC stubs for Transfer SDK
|
|
195
198
|
|
|
196
|
-
|
|
199
|
+
To update the stubs:
|
|
197
200
|
|
|
198
|
-
```
|
|
201
|
+
```shell
|
|
199
202
|
bundle exec rake tools:grpc
|
|
200
203
|
```
|
|
201
204
|
|
|
202
|
-
|
|
205
|
+
This task downloads the latest `.proto` files and compiles them into the Ruby source files included in the repository.
|
|
203
206
|
|
|
204
207
|
## Container image build
|
|
205
208
|
|
|
206
|
-
|
|
209
|
+
Refer to the [Container build guide](./container/README.md).
|
|
207
210
|
|
|
208
211
|
## Single executable build
|
|
209
212
|
|
|
210
|
-
|
|
213
|
+
Refer to the [Executable build guide](build/binary/README.md).
|
|
211
214
|
|
|
212
|
-
To list
|
|
215
|
+
To list related `rake` tasks:
|
|
213
216
|
|
|
214
|
-
```
|
|
217
|
+
```shell
|
|
215
218
|
bundle exec rake -T ^binary:
|
|
216
219
|
```
|
|
217
220
|
|
|
@@ -219,87 +222,95 @@ bundle exec rake -T ^binary:
|
|
|
219
222
|
|
|
220
223
|
### Branching Strategy
|
|
221
224
|
|
|
222
|
-
This project
|
|
223
|
-
During
|
|
225
|
+
This project maintains a single `main` branch.
|
|
226
|
+
During development, the version in `lib/aspera/cli/version.rb` includes a `.pre` suffix (e.g., `x.y.z.pre`).
|
|
224
227
|
|
|
225
|
-
|
|
228
|
+
Contributions are handled as follows:
|
|
226
229
|
|
|
227
|
-
-
|
|
228
|
-
- Via feature branches with pull requests for larger changes
|
|
230
|
+
- **Direct commits** to `main`: Permitted for minor changes.
|
|
229
231
|
|
|
230
|
-
|
|
232
|
+
- **Feature branches**: Required for significant changes via pull requests.
|
|
231
233
|
|
|
232
|
-
|
|
234
|
+
### Pre-Release Checklist
|
|
233
235
|
|
|
234
|
-
|
|
236
|
+
Before a new release, ensure the following:
|
|
235
237
|
|
|
236
|
-
|
|
238
|
+
- **Pass all tests**:
|
|
239
|
+
|
|
240
|
+
```shell
|
|
237
241
|
bundle exec rake test:run
|
|
238
242
|
```
|
|
239
243
|
|
|
240
|
-
- Verify
|
|
244
|
+
- **Verify container builds** (using the local gem):
|
|
241
245
|
|
|
242
|
-
```
|
|
246
|
+
```shell
|
|
243
247
|
bundle exec rake container:build'[local]'
|
|
244
248
|
bundle exec rake container:test
|
|
245
249
|
```
|
|
246
250
|
|
|
251
|
+
- **Check documentation links**:
|
|
252
|
+
|
|
253
|
+
```shell
|
|
254
|
+
bundle exec rake doc:check_links
|
|
255
|
+
```
|
|
256
|
+
|
|
247
257
|
### Automated Release Process
|
|
248
258
|
|
|
249
|
-
Releases are
|
|
259
|
+
Releases are managed through the GitHub Actions UI via the **New Release on GitHub** workflow (`.github/workflows/release.yml`).
|
|
260
|
+
|
|
261
|
+
1. Navigate to **Actions** > **New Release on GitHub**
|
|
262
|
+
2. Select **Run workflow**
|
|
263
|
+
3. (Optionally) Specify:
|
|
264
|
+
- **Release version**: Defaults to the current `version.rb` value (minus the `.pre` suffix).
|
|
250
265
|
|
|
251
|
-
|
|
266
|
+
e.g. current `a.b.c.pre` → `a.b.c`.
|
|
267
|
+
- **Next development version**: Defaults to an incremented minor version with the `.pre` suffix.
|
|
252
268
|
|
|
253
|
-
|
|
254
|
-
2. Click **Run workflow**
|
|
255
|
-
3. Optionally specify:
|
|
256
|
-
- **Release version**: The version to release. If left empty, uses the current version from `version.rb` without the `.pre` suffix.
|
|
257
|
-
- **Next development version**: The next version to prepare for. If left empty, auto-increments the minor version. The `.pre` suffix is added automatically.
|
|
269
|
+
e.g. release `a.b.c` → `a.(b+1).0.pre`.
|
|
258
270
|
4. Click **Run workflow**
|
|
259
271
|
|
|
260
|
-
The workflow
|
|
272
|
+
The automated workflow performs the following:
|
|
261
273
|
|
|
262
|
-
1. Updates `version.rb`
|
|
263
|
-
2. Rebuilds documentation (PDF
|
|
274
|
+
1. Updates `version.rb` to the release version
|
|
275
|
+
2. Rebuilds all documentation (PDF and Markdown)
|
|
264
276
|
3. Commits the changes
|
|
265
277
|
4. Creates and pushes the release tag
|
|
266
278
|
5. Triggers the `deploy` workflow to publish to [rubygems.org](https://rubygems.org/gems/aspera-cli)
|
|
267
|
-
6.
|
|
268
|
-
7. Commits and pushes the version bump
|
|
279
|
+
6. Increments `version.rb` to the next development version.
|
|
280
|
+
7. Commits and pushes the version bump to `main`.
|
|
269
281
|
|
|
270
282
|
### Manual Release Process (Alternative)
|
|
271
283
|
|
|
272
|
-
If
|
|
273
|
-
Basically, follow the same procedure as in the GitHub action:
|
|
284
|
+
If necessary, you can mirror the automated process manually:
|
|
274
285
|
|
|
275
286
|
- Update the version in `lib/aspera/cli/version.rb` (remove `.pre` suffix)
|
|
276
287
|
|
|
277
|
-
- Build the PDF manual
|
|
288
|
+
- Build the PDF manual:
|
|
278
289
|
|
|
279
290
|
```shell
|
|
280
291
|
bundle exec rake doc:build
|
|
281
292
|
```
|
|
282
293
|
|
|
283
|
-
- Build the signed
|
|
294
|
+
- Build the signed gem:
|
|
284
295
|
|
|
285
296
|
```shell
|
|
286
297
|
bundle exec rake SIGNING_KEY=/path/to/vault/gem-private_key.pem
|
|
287
298
|
```
|
|
288
299
|
|
|
289
|
-
-
|
|
300
|
+
- Tag the release and push to GitHub:
|
|
290
301
|
|
|
291
302
|
```shell
|
|
292
303
|
bundle exec rake release_tag
|
|
293
304
|
```
|
|
294
305
|
|
|
295
|
-
This
|
|
306
|
+
This triggers the `.github/workflows/deploy.yml` action to publish to RubyGems.
|
|
296
307
|
|
|
297
|
-
-
|
|
308
|
+
- Update `version.rb` to the next `.pre` development version.
|
|
298
309
|
|
|
299
310
|
## Future Improvements
|
|
300
311
|
|
|
301
|
-
-
|
|
302
|
-
-
|
|
303
|
-
-
|
|
304
|
-
-
|
|
305
|
-
-
|
|
312
|
+
- Evaluate replacing custom REST and OAuth implementations with standard gems:
|
|
313
|
+
- [rest-client](https://github.com/rest-client/rest-client)
|
|
314
|
+
- [oauth2](https://github.com/oauth-xx/oauth2)
|
|
315
|
+
- Integrate `thor` <http://whatisthor.com/> or another standard Ruby CLI framework.
|
|
316
|
+
- Explore [Traveling Ruby](https://github.com/phusion/traveling-ruby) for distribution.
|
data/README.md
CHANGED
|
@@ -5,6 +5,8 @@
|
|
|
5
5
|
[](https://bestpractices.coreinfrastructure.org/projects/5861)
|
|
6
6
|
[](LICENSE)
|
|
7
7
|
|
|
8
|
+

|
|
9
|
+
|
|
8
10
|
**`ascli`** is the command-line interface for IBM Aspera products.
|
|
9
11
|
Use it from the terminal or in scripts to:
|
|
10
12
|
|
|
@@ -18,8 +20,8 @@ Choose what best suits you:
|
|
|
18
20
|
|
|
19
21
|
| Resource | Link |
|
|
20
22
|
| -------- | ---- |
|
|
21
|
-
| **Online manual** | [docs/README.md](docs/README.md) |
|
|
22
|
-
| **PDF manual** | In [
|
|
23
|
+
| **Online manual** | [GitHub docs/README.md](https://github.com/IBM/aspera-cli/blob/main/docs/README.md) |
|
|
24
|
+
| **PDF manual** | In [GitHub Releases](https://github.com/IBM/aspera-cli/releases) |
|
|
23
25
|
| **RubyGems** | [rubygems.org/gems/aspera-cli](https://rubygems.org/gems/aspera-cli) |
|
|
24
26
|
| **RubyDoc** | [rubydoc.info/gems/aspera-cli](https://www.rubydoc.info/gems/aspera-cli) |
|
|
25
27
|
| **Docsify** | [online](https://docsify-this.net/?basePath=https://raw.githubusercontent.com/IBM/aspera-cli/main/docs&homepage=README.md&sidebar=true&browser-tab-title=Aspera%20CLI%20Manual&hide-credits=true&maxLevel=4&externalLinkTarget=_blank&image-captions=true&dark-mode=auto) |
|
|
@@ -34,7 +36,7 @@ ascli config transferd install
|
|
|
34
36
|
```
|
|
35
37
|
|
|
36
38
|
The second command installs the **FASP** transfer engine (`ascp`).
|
|
37
|
-
For other install methods (single executable, Docker, Chocolatey, Homebrew), see the [user manual](docs/README.md#installation).
|
|
39
|
+
For other install methods (single executable, Docker, Chocolatey, Homebrew), see the [user manual](https://github.com/IBM/aspera-cli/blob/main/docs/README.md#installation).
|
|
38
40
|
|
|
39
41
|
**Quick check:**
|
|
40
42
|
|
|
@@ -44,13 +46,13 @@ ascli -v
|
|
|
44
46
|
|
|
45
47
|
## Contributing
|
|
46
48
|
|
|
47
|
-
- **Bugs & features:** [BUGS.md](BUGS.md)
|
|
48
|
-
- **How to contribute:** [CONTRIBUTING.md](CONTRIBUTING.md)
|
|
49
|
-
- **Release notes:** [CHANGELOG.md](CHANGELOG.md)
|
|
49
|
+
- **Bugs & features:** [BUGS.md](https://github.com/IBM/aspera-cli/blob/main/BUGS.md)
|
|
50
|
+
- **How to contribute:** [CONTRIBUTING.md](https://github.com/IBM/aspera-cli/blob/main/CONTRIBUTING.md)
|
|
51
|
+
- **Release notes:** [CHANGELOG.md](https://github.com/IBM/aspera-cli/blob/main/CHANGELOG.md)
|
|
50
52
|
|
|
51
53
|
Commands map to Aspera REST APIs; see the manual for options.
|
|
52
54
|
For debugging, use `--log-level=debug`.
|
|
53
55
|
|
|
54
56
|
## License
|
|
55
57
|
|
|
56
|
-
[Apache-2.0](LICENSE)
|
|
58
|
+
[Apache-2.0](https://github.com/IBM/aspera-cli/blob/main/LICENSE)
|
data/lib/aspera/agent/direct.rb
CHANGED
|
@@ -25,25 +25,27 @@ module Aspera
|
|
|
25
25
|
private_constant :LISTEN_LOCAL_ADDRESS, :SELECT_AVAILABLE_PORT
|
|
26
26
|
|
|
27
27
|
# Options: same as values in option `transfer_info`
|
|
28
|
-
#
|
|
29
|
-
#
|
|
30
|
-
# @param
|
|
31
|
-
# @param
|
|
32
|
-
# @param
|
|
33
|
-
# @param client_ssh_key [String] (
|
|
34
|
-
# @param
|
|
28
|
+
# (Args) : Options that influence `ascp` arguments.
|
|
29
|
+
#
|
|
30
|
+
# @param ascp_args [Array] (Args) Optional Additional arguments to ascp
|
|
31
|
+
# @param wss [Boolean] (Args) `true`: if both SSH and wss in ts: prefer wss
|
|
32
|
+
# @param quiet [Boolean] (Args) By default no native `ascp` progress bar
|
|
33
|
+
# @param client_ssh_key [String] (Args) Client SSH key option (from CLIENT_SSH_KEY_OPTIONS)
|
|
34
|
+
# @param trusted_certs [Array<String>] (Args) (WSS) Optional list of files with trusted certificates (stores)
|
|
35
|
+
# @param check_ignore_cb [Proc] (Args) (WSS) Callback with host,port to check if WSS connection shall ignore certificate validity
|
|
35
36
|
# @param spawn_timeout_sec [Integer] Timeout for ascp spawn
|
|
36
37
|
# @param spawn_delay_sec [Integer] Optional delay to start between sessions
|
|
37
38
|
# @param multi_incr_udp [Boolean] Optional `true`: increment UDP port for each session
|
|
38
39
|
# @param resume [Hash] Optional Resume policy
|
|
40
|
+
# @param monitor [Boolean] Set to `false` to eliminate management port
|
|
39
41
|
# @param management_cb [Proc] callback for management events
|
|
40
42
|
# @param base_options [Hash] other options for base class
|
|
41
43
|
def initialize(
|
|
42
44
|
ascp_args: nil,
|
|
43
45
|
wss: true,
|
|
44
46
|
quiet: true,
|
|
45
|
-
trusted_certs: nil,
|
|
46
47
|
client_ssh_key: nil,
|
|
48
|
+
trusted_certs: nil,
|
|
47
49
|
check_ignore_cb: nil,
|
|
48
50
|
spawn_timeout_sec: 2,
|
|
49
51
|
spawn_delay_sec: 2,
|
data/lib/aspera/agent/factory.rb
CHANGED
|
@@ -22,11 +22,11 @@ module Aspera
|
|
|
22
22
|
Dir.children(File.dirname(File.expand_path(__FILE__)))
|
|
23
23
|
.select{ |file| file.end_with?(Environment::RB_EXT)}
|
|
24
24
|
.map{ |file| File.basename(file, Environment::RB_EXT).to_sym}
|
|
25
|
-
.reject{ |item| IGNORED_ITEMS.include?(item)}.
|
|
26
|
-
|
|
25
|
+
.reject{ |item| IGNORED_ITEMS.include?(item)}.to_h do |agent_sym|
|
|
26
|
+
[agent_sym, {
|
|
27
27
|
long: agent_sym.to_s.capitalize,
|
|
28
28
|
short: agent_sym.eql?(:direct) ? :a : agent_sym.to_s[0].to_sym
|
|
29
|
-
}.freeze
|
|
29
|
+
}.freeze]
|
|
30
30
|
end.freeze
|
|
31
31
|
private_constant :IGNORED_ITEMS
|
|
32
32
|
end
|
data/lib/aspera/agent/node.rb
CHANGED
|
@@ -59,7 +59,7 @@ module Aspera
|
|
|
59
59
|
ts_tags = transfer_spec['tags']
|
|
60
60
|
ts_tags[Transfer::Spec::TAG_RESERVED]['xfer_retry'] ||= 150 if ts_tags.is_a?(Hash) && ts_tags[Transfer::Spec::TAG_RESERVED].is_a?(Hash)
|
|
61
61
|
# Optimization in case of sending to the same node
|
|
62
|
-
# TODO: probably remove this, as /etc/hosts shall be used for that
|
|
62
|
+
# TODO: probably remove this, as /etc/hosts shall be used for that on server side.
|
|
63
63
|
transfer_spec['remote_host'] = '127.0.0.1' if !transfer_spec['wss_enabled'] && transfer_spec['remote_host'].eql?(URI.parse(node_api_.base_url).host)
|
|
64
64
|
resp = node_api_.create('ops/transfers', transfer_spec)
|
|
65
65
|
@transfer_id = resp['id']
|
data/lib/aspera/api/alee.rb
CHANGED