aspera-cli 4.0.0.pre1 → 4.0.0.pre2

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.
@@ -3,27 +3,29 @@
3
3
 
4
4
  DIR_TOP=../
5
5
  include $(DIR_TOP)common.make
6
+ # "make" shall be executed inside the folder containing this makefile
6
7
  DIR_DOC=
7
8
 
8
9
  # files generated to be included in README.md
9
10
  INCL_USAGE=$(DIR_TMP)$(EXENAME)_usage.txt
10
11
  INCL_COMMANDS=$(DIR_TMP)$(EXENAME)_commands.txt
11
12
  INCL_ASESSION=$(DIR_TMP)asession_usage.txt
13
+ INCL_TRSPEC=$(DIR_DOC)transfer_spec.html
14
+ # env var used in README.erb.md
15
+ export EXENAME GEMSPEC INCL_USAGE INCL_COMMANDS INCL_ASESSION INCL_TRSPEC
16
+
12
17
  TMPL_TEST_CONF=$(DIR_DOC)$(TEST_CONF_FILE_BASE)
13
- TMPL_SECRETS=$(DIR_DOC)$(SECRETS_FILE_NAME)
14
18
 
15
19
  MANUAL_BASE=$(DIR_DOC)Manual_$(EXENAME)_$(GEMVERSION)
16
20
  MANUAL_PDF=$(MANUAL_BASE).pdf
17
21
  MANUAL_HTML=$(MANUAL_BASE).html
18
22
 
19
23
  # main target to build doc
20
- all:: $(MANUAL_PDF) $(TMPL_SECRETS) $(TMPL_TEST_CONF)
24
+ all:: $(MANUAL_PDF) $(TMPL_TEST_CONF)
21
25
 
22
26
  doc: all
23
27
 
24
- # generate template configuration files, remove own secrets
25
- $(TMPL_SECRETS): $(SECRETS_FILE_PATH)
26
- sed 's/=.*/=_value_here_/' < $(SECRETS_FILE_PATH) > $(TMPL_SECRETS)
28
+ # generate template configuration file for tests, remove own secrets
27
29
  $(TMPL_TEST_CONF): $(TEST_CONF_FILE_PATH)
28
30
  ruby -e 'require "yaml";n={};c=YAML.load_file("$(TEST_CONF_FILE_PATH)").each{|k,v| n[k]=["config","default"].include?(k)?v:v.keys.inject({}){|m,i|m[i]="your value here";m}};File.write("$(TMPL_TEST_CONF)",n.to_yaml)'
29
31
 
@@ -31,21 +33,25 @@ $(MANUAL_PDF): $(DIR_TOP)README.md
31
33
  pandoc --number-sections --resource-path=. --toc -o $(MANUAL_HTML) $(DIR_TOP)README.md
32
34
  wkhtmltopdf toc $(MANUAL_HTML) $(MANUAL_PDF)
33
35
 
34
- $(DIR_TOP)README.md: $(DIR_DOC)README.erb.md $(INCL_COMMANDS) $(INCL_USAGE) $(INCL_ASESSION)
35
- DIR_DOC=$(DIR_DOC) COMMANDS=$(INCL_COMMANDS) USAGE=$(INCL_USAGE) ASESSION=$(INCL_ASESSION) VERSION=`$(EXETESTB) -Cnone --version` TOOLNAME=$(EXENAME) erb $(DIR_DOC)README.erb.md > $(DIR_TOP)README.md
36
+ $(DIR_TOP)README.md: $(DIR_DOC)README.erb.md $(DIR_DOC)transfer_spec.html $(INCL_COMMANDS) $(INCL_USAGE) $(INCL_ASESSION)
37
+ erb -T - --encoding UTF-8:UTF-8 $(DIR_DOC)README.erb.md > $(DIR_TOP)README.md
36
38
 
37
39
  $(INCL_COMMANDS): $(DIR_TMP).exists $(TEST_MAKEFILE)
38
40
  sed -nEe 's/.*\$$\(EXE_MAN.?\)/$(EXENAME)/p' $(TEST_MAKEFILE) > $(DIR_TMP)usg1.txt
39
- sed -i.bak -Ee 's/\$$\((DIR_[^)]+)\)/\1\//g' $(DIR_TMP)usg1.txt
41
+ sed -i.bak -Ee 's/\$$\$$\{([a-z_]+)\}/my_\1/g' $(DIR_TMP)usg1.txt
40
42
  sed -i.bak -Ee 's/\$$\(([^)]+)\)/\1/g' $(DIR_TMP)usg1.txt
41
- sed -i.bak -Ee 's/CF_([0-9A-Z_]*)/MY_\1/g' $(DIR_TMP)usg1.txt
42
43
  sed -i.bak -Ee 's/\$$(\$$)/\1/g' $(DIR_TMP)usg1.txt
43
- sed -i.bak -Ee 's/"'"'"'"\$${([a-z_]+)}"'"'"'"/"my_\1"/g' $(DIR_TMP)usg1.txt
44
- sed -i.bak -Ee 's/="\$${([a-z_]+)}"/="my_\1"/g' $(DIR_TMP)usg1.txt
45
- sed -i.bak -Ee 's/\$$@/xyz/g' $(DIR_TMP)usg1.txt
46
- sed -i.bak -Ee 's/"'"'"'"/"/g' $(DIR_TMP)usg1.txt
44
+ sed -i.bak -Ee 's/\$$@/test/g' $(DIR_TMP)usg1.txt
47
45
  sed -i.bak -Ee 's/"'"'"'/"/g' $(DIR_TMP)usg1.txt
48
46
  sed -i.bak -Ee 's/'"'"'"/"/g' $(DIR_TMP)usg1.txt
47
+ sed -i.bak -Ee 's/""/"/g' $(DIR_TMP)usg1.txt
48
+ sed -i.bak -Ee 's/CF_//g' $(DIR_TMP)usg1.txt
49
+ sed -i.bak -Ee 's/DIR_[A-Z]+//g' $(DIR_TMP)usg1.txt
50
+ sed -i.bak -Ee 's/LOCAL_SAMPLE_FILE(NAME|PATH)/testfile.bin/g' $(DIR_TMP)usg1.txt
51
+ sed -i.bak -Ee 's/HSTS_FOLDER_UPLOAD/folder_1/g' $(DIR_TMP)usg1.txt
52
+ sed -i.bak -Ee 's/PKG_TEST_TITLE/Important files delivery/g' $(DIR_TMP)usg1.txt
53
+ sed -i.bak -Ee 's/AOC_EXTERNAL_EMAIL/external.user@example.com/g' $(DIR_TMP)usg1.txt
54
+ sed -i.bak -Ee 's/EMAIL_ADDR/internal.user@example.com/g' $(DIR_TMP)usg1.txt
49
55
  sort -u < $(DIR_TMP)usg1.txt > $(INCL_COMMANDS)
50
56
  # generated help of tools depends on all sources, so regenerate always
51
57
  .PHONY: $(INCL_USAGE)
@@ -1,16 +1,30 @@
1
1
  [comment1]: # (Do not edit this README.md, edit docs/README.erb.md, for details, read docs/README.md)
2
- <%cmd=ENV["TOOLNAME"];tool='`'+cmd+'`';evp=cmd.upcase+'_';opprst='option preset';prst='['+opprst+'](#lprt)';prsts='['+opprst+'s](#lprt)';prstt=opprst.capitalize%>
3
-
2
+ <%
3
+ # check that required env vars exist, and files
4
+ %w{EXENAME GEMSPEC INCL_USAGE INCL_COMMANDS INCL_ASESSION INCL_TRSPEC}.each do |e|
5
+ raise "missing env var #{e}" unless ENV.has_key?(e)
6
+ raise "missing file #{ENV[e]}" unless File.exist?(ENV[e]) or !e.start_with?('INCL_') #_
7
+ end
8
+ cmd=ENV["EXENAME"] # just command name
9
+ tool='`'+cmd+'`' # used in text with formatting of command
10
+ evp=cmd.upcase+'_' # prefix for env vars
11
+ opprst='option preset' # just the name for "option preset"
12
+ prst='['+opprst+'](#lprt)'
13
+ prsts='['+opprst+'s](#lprt)'
14
+ prstt=opprst.capitalize # in title
15
+ gemspec=Gem::Specification::load(ENV["GEMSPEC"]) or raise "error loading #{ENV["GEMSPEC"]}"
16
+ geminstadd=gemspec.version.to_s.match(/\.[^0-9]/)?' --pre':''
17
+ -%>
4
18
  # <%=tool%> : a Command Line for IBM Aspera products
5
19
 
6
- Version : <%= ENV["VERSION"] %>
20
+ Version : <%= gemspec.version.to_s %>
7
21
 
8
22
  _Laurent/2016-<%=Time.new.year%>_
9
23
 
10
24
  This gem provides a command line interface to Aspera Applications.
11
25
 
12
26
  Location (once released):
13
- [https://rubygems.org/gems/aspera-cli](https://rubygems.org/gems/aspera-cli)
27
+ [<%= gemspec.metadata['rubygems_uri'] %>](<%= gemspec.metadata['rubygems_uri'] %>)
14
28
 
15
29
  Disclaimers:
16
30
 
@@ -38,7 +52,7 @@ Once the gem is installed, <%=tool%> shall be accessible:
38
52
 
39
53
  ```
40
54
  $ <%=cmd%> --version
41
- <%= ENV["VERSION"] %>
55
+ <%= gemspec.version.to_s %>
42
56
  ```
43
57
 
44
58
  ## First use
@@ -106,7 +120,7 @@ Then, follow the section relative to the product you want to interact with ( Asp
106
120
  In order to use the tool or the gem, it is necessary to install those components:
107
121
 
108
122
  * [Ruby](#ruby)
109
- * [aspera-cli](#the_gem)
123
+ * [<%= gemspec.name %>](#the_gem)
110
124
  * [FASP](#fasp_prot)
111
125
 
112
126
  The following sections provide information on the installation.
@@ -114,8 +128,7 @@ The following sections provide information on the installation.
114
128
  ## <a name="ruby"></a>Ruby
115
129
 
116
130
  A ruby interpreter is required to run the tool or to use the gem and tool.
117
- It is required to have privilege to install gems.
118
- Ruby 2.5+ is prefered, but it should also work with 2.1+.
131
+ The Ruby version shall be <%= gemspec.required_ruby_version %>.
119
132
  Any type of Ruby installation can be used.
120
133
 
121
134
  Refer to the following sections for a proposed method for specific operating systems.
@@ -123,10 +136,10 @@ Refer to the following sections for a proposed method for specific operating sys
123
136
  ### macOS
124
137
 
125
138
 
126
- MacOS 10.13+ (High Sierra) comes with a recent Ruby, so you can use it directly, you will need to install aspera-cli using `sudo` :
139
+ MacOS 10.13+ (High Sierra) comes with a recent Ruby, so you can use it directly, you will need to install <%= gemspec.name %> using `sudo` :
127
140
 
128
141
  ```
129
- $ sudo gem install aspera-cli
142
+ $ sudo gem install <%= gemspec.name %><%=geminstadd%>
130
143
  ```
131
144
 
132
145
  Alternatively, if you use [Homebrew](https://brew.sh/) already you can install Ruby with it:
@@ -200,18 +213,18 @@ For instance to build from source, and install in `/opt/ruby` :
200
213
  # make install
201
214
  ```
202
215
 
203
- ## <a name="the_gem"></a>`aspera-cli` gem
216
+ ## <a name="the_gem"></a>`<%= gemspec.name %>` gem
204
217
 
205
218
  Once you have Ruby and rights to install gems: Install the gem and its dependencies:
206
219
 
207
220
  ```
208
- # gem install aspera-cli
221
+ # gem install <%= gemspec.name %><%=geminstadd%>
209
222
  ```
210
223
 
211
224
  To upgrade to the latest version:
212
225
 
213
226
  ```
214
- # gem update aspera-cli
227
+ # gem update <%= gemspec.name %>
215
228
  ```
216
229
 
217
230
  ## <a name="fasp_prot"></a>FASP Protocol
@@ -222,7 +235,13 @@ an Aspera Transfer:
222
235
  * ascp
223
236
  * aspera-license (in same folder, or ../etc)
224
237
 
225
- Those can be found in one of IBM Asprea transfer server or client with its license file (some are free):
238
+ This can be installed directly with
239
+
240
+ ```
241
+ $ <%=cmd%> conf ascp install
242
+ ```
243
+
244
+ Those can be found in one of IBM Aspera transfer server or client with its license file (some are free):
226
245
 
227
246
  * IBM Aspera Connect Client (Free)
228
247
  * IBM Aspera Desktop Client (Free)
@@ -241,7 +260,7 @@ other methods are available. Refer to section: [Transfer Agents](#agents)
241
260
 
242
261
  # <a name="cli"></a>Command Line Interface: <%=tool%>
243
262
 
244
- The `aspera-cli` Gem provides a command line interface (CLI) which interacts with Aspera Products (mostly using REST APIs):
263
+ The `<%= gemspec.name %>` Gem provides a command line interface (CLI) which interacts with Aspera Products (mostly using REST APIs):
245
264
 
246
265
  * IBM Aspera High Speed Transfer Server (FASP and Node)
247
266
  * IBM Aspera on Cloud (including ATS)
@@ -385,7 +404,7 @@ The style of output can be set using the `format` parameter, supporting:
385
404
  Table output can be filtered using the `select` parameter. Example:
386
405
 
387
406
  ```
388
- $ <%=cmd%> aspera admin res user list --fields=name,email,ats_admin --query=@json:'{"per_page":1000,"page":1,"sort":"name"}' --select=@json:'{"ats_admin":true}'
407
+ $ <%=cmd%> aoc admin res user list --fields=name,email,ats_admin --query=@json:'{"per_page":1000,"page":1,"sort":"name"}' --select=@json:'{"ats_admin":true}'
389
408
  :...............................:..................................:...........:
390
409
  : name : email : ats_admin :
391
410
  :...............................:..................................:...........:
@@ -988,7 +1007,7 @@ All standard _transfer-spec_ parameters can be overloaded. To display parameters
988
1007
  run in debug mode (--log-level=debug). [_transfer-spec_](#transferspec) can
989
1008
  also be saved/overridden in the config file.
990
1009
 
991
- <%= File.read("#{ENV['DIR_DOC']}transfer_spec.html").gsub(/.*<body>(.*)<\/body>.*/m,'\1') %>
1010
+ <%= File.read(ENV['INCL_TRSPEC']).gsub(/.*<body>(.*)<\/body>.*/m,'\1') %>
992
1011
 
993
1012
  ### Destination folder for transfers
994
1013
 
@@ -1134,7 +1153,7 @@ Usually the OS native scheduler shall already provide some sort of such protecti
1134
1153
  A non complete list of commands used in unit tests:
1135
1154
 
1136
1155
  ```
1137
- <%= File.read(ENV["COMMANDS"]) %>
1156
+ <%= File.read(ENV["INCL_COMMANDS"]) %>
1138
1157
  ...and more
1139
1158
  ```
1140
1159
 
@@ -1142,7 +1161,7 @@ A non complete list of commands used in unit tests:
1142
1161
 
1143
1162
  ```
1144
1163
  $ <%=cmd%> -h
1145
- <%= File.read(ENV["USAGE"]) %>
1164
+ <%= File.read(ENV["INCL_USAGE"]) %>
1146
1165
 
1147
1166
  ```
1148
1167
 
@@ -1182,7 +1201,7 @@ Preparing preset: aoc_myorg
1182
1201
  Please provide path to your private RSA key, or empty to generate one:
1183
1202
  option: pkeypath>
1184
1203
  using existing key:
1185
- /Users/myself/.aspera/<%=cmd%>/aspera_on_cloud_key
1204
+ /Users/myself/.aspera/<%=cmd%>/aspera_aoc_key
1186
1205
  Using global client_id.
1187
1206
  option: username> john@example.com
1188
1207
  Updating profile with new key
@@ -1191,7 +1210,7 @@ Setting config preset as default for aspera
1191
1210
  saving config file
1192
1211
  Done.
1193
1212
  You can test with:
1194
- $ <%=cmd%> aspera user info show
1213
+ $ <%=cmd%> aoc user info show
1195
1214
  ```
1196
1215
 
1197
1216
  Optionally, it is possible to create a new organization-specific "integration".
@@ -1319,13 +1338,13 @@ If you are not using the built-in client_id and secret, JWT needs to be authoriz
1319
1338
  * Using command line
1320
1339
 
1321
1340
  ```
1322
- $ <%=cmd%> aspera admin res client list
1341
+ $ <%=cmd%> aoc admin res client list
1323
1342
  :............:.........:
1324
1343
  : id : name :
1325
1344
  :............:.........:
1326
1345
  : BJLPObQiFw : <%=cmd%> :
1327
1346
  :............:.........:
1328
- $ <%=cmd%> aspera admin res client --id=BJLPObQiFw modify @json:'{"jwt_grant_enabled":true,"explicit_authorization_required":false}'
1347
+ $ <%=cmd%> aoc admin res client --id=BJLPObQiFw modify @json:'{"jwt_grant_enabled":true,"explicit_authorization_required":false}'
1329
1348
  modified
1330
1349
  ```
1331
1350
 
@@ -1346,14 +1365,14 @@ open the previously generated public key located here: `$HOME/.aspera/<%=cmd%>/a
1346
1365
  * Using command line
1347
1366
 
1348
1367
  ```
1349
- $ <%=cmd%> aspera admin res user list
1368
+ $ <%=cmd%> aoc admin res user list
1350
1369
  :........:................:
1351
1370
  : id : name :
1352
1371
  :........:................:
1353
1372
  : 109952 : Tech Support :
1354
1373
  : 109951 : LAURENT MARTIN :
1355
1374
  :........:................:
1356
- $ <%=cmd%> aspera user info modify @ruby:'{"public_key"=>File.read(File.expand_path("~/.aspera/<%=cmd%>/aocapikey.pub"))}'
1375
+ $ <%=cmd%> aoc user info modify @ruby:'{"public_key"=>File.read(File.expand_path("~/.aspera/<%=cmd%>/aocapikey.pub"))}'
1357
1376
  modified
1358
1377
  ```
1359
1378
 
@@ -1383,7 +1402,7 @@ After this last step, commands do not require web login anymore.
1383
1402
  Once client has been registered and <%=prst%> created: <%=tool%> can be used:
1384
1403
 
1385
1404
  ```
1386
- $ <%=cmd%> aspera files br /
1405
+ $ <%=cmd%> aoc files br /
1387
1406
  Current Workspace: Default Workspace (default)
1388
1407
  empty
1389
1408
  ```
@@ -1417,7 +1436,7 @@ In order to access some administrative actions on "nodes" (in fact, access keys)
1417
1436
  secret is required, it is usually provided using the `secret` option. For example in a command like:
1418
1437
 
1419
1438
  ```
1420
- $ <%=cmd%> aspera admin res node --id="access_key1" --secret="secret1" v3 info
1439
+ $ <%=cmd%> aoc admin res node --id="access_key1" --secret="secret1" v3 info
1421
1440
  ```
1422
1441
 
1423
1442
  It is also possible to provide a set of secrets used on a regular basis. This can be done using the `secrets` option. The value provided shall be a Hash, where keys are access key ids, and values are the associated secrets.
@@ -1444,7 +1463,7 @@ A secret repository can always be selected at runtime using `--secrets=@preset:x
1444
1463
  * Bulk creation
1445
1464
 
1446
1465
  ```
1447
- $ <%=cmd%> aspera admin res user create --bulk=yes @json:'[{"email":"dummyuser1@example.com"},{"email":"dummyuser2@example.com"}]'
1466
+ $ <%=cmd%> aoc admin res user create --bulk=yes @json:'[{"email":"dummyuser1@example.com"},{"email":"dummyuser2@example.com"}]'
1448
1467
  :.......:.........:
1449
1468
  : id : status :
1450
1469
  :.......:.........:
@@ -1456,17 +1475,17 @@ $ <%=cmd%> aspera admin res user create --bulk=yes @json:'[{"email":"dummyuser1@
1456
1475
  * Find with filter and delete
1457
1476
 
1458
1477
  ```
1459
- $ <%=cmd%> aspera admin res user list --query='@json:{"q":"dummyuser"}' --fields=id,email
1478
+ $ <%=cmd%> aoc admin res user list --query='@json:{"q":"dummyuser"}' --fields=id,email
1460
1479
  :.......:........................:
1461
1480
  : id : email :
1462
1481
  :.......:........................:
1463
1482
  : 98398 : dummyuser1@example.com :
1464
1483
  : 98399 : dummyuser2@example.com :
1465
1484
  :.......:........................:
1466
- $ thelist=$(echo $(<%=cmd%> aspera admin res user list --query='@json:{"q":"dummyuser"}' --fields=id,email --field=id --format=csv)|tr ' ' ,)
1485
+ $ thelist=$(echo $(<%=cmd%> aoc admin res user list --query='@json:{"q":"dummyuser"}' --fields=id,email --field=id --format=csv)|tr ' ' ,)
1467
1486
  $ echo $thelist
1468
1487
  98398,98399
1469
- $ <%=cmd%> aspera admin res user --bulk=yes --id=@json:[$thelist] delete
1488
+ $ <%=cmd%> aoc admin res user --bulk=yes --id=@json:[$thelist] delete
1470
1489
  :.......:.........:
1471
1490
  : id : status :
1472
1491
  :.......:.........:
@@ -1478,7 +1497,7 @@ $ <%=cmd%> aspera admin res user --bulk=yes --id=@json:[$thelist] delete
1478
1497
  * Display current user's workspaces
1479
1498
 
1480
1499
  ```
1481
- $ <%=cmd%> aspera user workspaces
1500
+ $ <%=cmd%> aoc user workspaces
1482
1501
  :......:............................:
1483
1502
  : id : name :
1484
1503
  :......:............................:
@@ -1493,13 +1512,13 @@ $ <%=cmd%> aspera user workspaces
1493
1512
  Creation of a sub-access key is like creation of access key with the following difference: authentication to node API is made with accesskey (master access key) and only the path parameter is provided: it is relative to the storage root of the master key. (id and secret are optional)
1494
1513
 
1495
1514
  ```
1496
- $ <%=cmd%> aspera admin resource node --name=_node_name_ --secret=_secret_ v4 access_key create --value=@json:'{"storage":{"path":"/folder1"}}'
1515
+ $ <%=cmd%> aoc admin resource node --name=_node_name_ --secret=_secret_ v4 access_key create --value=@json:'{"storage":{"path":"/folder1"}}'
1497
1516
  ```
1498
1517
 
1499
1518
  * Display transfer events (ops/transfer)
1500
1519
 
1501
1520
  ```
1502
- $ <%=cmd%> aspera admin res node --secret=_secret_ v3 transfer list --value=@json:'[["q","*"],["count",5]]'
1521
+ $ <%=cmd%> aoc admin res node --secret=_secret_ v3 transfer list --value=@json:'[["q","*"],["count",5]]'
1503
1522
  ```
1504
1523
 
1505
1524
  # page=1&per_page=10&q=type:(file_upload+OR+file_delete+OR+file_download+OR+file_rename+OR+folder_create+OR+folder_delete+OR+folder_share+OR+folder_share_via_public_link)&sort=-date
@@ -1517,13 +1536,13 @@ $ <%=cmd%> aspera admin res node --secret=_secret_ v3 transfer list --value=@jso
1517
1536
  * Display node events (events)
1518
1537
 
1519
1538
  ```
1520
- $ <%=cmd%> aspera admin res node --secret=_secret_ v3 events
1539
+ $ <%=cmd%> aoc admin res node --secret=_secret_ v3 events
1521
1540
  ```
1522
1541
 
1523
1542
  * display members of a workspace
1524
1543
 
1525
1544
  ```
1526
- $ <%=cmd%> aspera admin res workspace_membership list --fields=member_type,manager,member.email --query=@json:'{"page":1,"per_page":50,"embed":"member","inherited":false,"workspace_id":11363,"sort":"name"}'
1545
+ $ <%=cmd%> aoc admin res workspace_membership list --fields=member_type,manager,member.email --query=@json:'{"page":1,"per_page":50,"embed":"member","inherited":false,"workspace_id":11363,"sort":"name"}'
1527
1546
  :.............:.........:..................................:
1528
1547
  : member_type : manager : member.email :
1529
1548
  :.............:.........:..................................:
@@ -1548,20 +1567,20 @@ a- get id of first workspace
1548
1567
 
1549
1568
  ```
1550
1569
  WS1='First Workspace'
1551
- WS1ID=$(<%=cmd%> aspera admin res workspace list --query=@json:'{"q":"'"$WS1"'"}' --select=@json:'{"name":"'"$WS1"'"}' --fields=id --format=csv)
1570
+ WS1ID=$(<%=cmd%> aoc admin res workspace list --query=@json:'{"q":"'"$WS1"'"}' --select=@json:'{"name":"'"$WS1"'"}' --fields=id --format=csv)
1552
1571
  ```
1553
1572
 
1554
1573
  b- get id of second workspace
1555
1574
 
1556
1575
  ```
1557
1576
  WS2='Second Workspace'
1558
- WS2ID=$(<%=cmd%> aspera admin res workspace list --query=@json:'{"q":"'"$WS2"'"}' --select=@json:'{"name":"'"$WS2"'"}' --fields=id --format=csv)
1577
+ WS2ID=$(<%=cmd%> aoc admin res workspace list --query=@json:'{"q":"'"$WS2"'"}' --select=@json:'{"name":"'"$WS2"'"}' --fields=id --format=csv)
1559
1578
  ```
1560
1579
 
1561
1580
  c- extract membership information and change workspace id
1562
1581
 
1563
1582
  ```
1564
- $ <%=cmd%> aspera admin res workspace_membership list --fields=manager,member_id,member_type,workspace_id --query=@json:'{"per_page":10000,"workspace_id":'"$WS1ID"'}' --format=jsonpp > ws1_members.json
1583
+ $ <%=cmd%> aoc admin res workspace_membership list --fields=manager,member_id,member_type,workspace_id --query=@json:'{"per_page":10000,"workspace_id":'"$WS1ID"'}' --format=jsonpp > ws1_members.json
1565
1584
  ```
1566
1585
 
1567
1586
  d- convert to creation data for second workspace:
@@ -1579,13 +1598,13 @@ jq '[.[] | {member_type,member_id,workspace_id,manager,workspace_id:"'"$WS2ID"'"
1579
1598
  e- add members to second workspace
1580
1599
 
1581
1600
  ```
1582
- $ <%=cmd%> aspera admin res workspace_membership create --bulk=yes @json:@file:ws2_members.json
1601
+ $ <%=cmd%> aoc admin res workspace_membership create --bulk=yes @json:@file:ws2_members.json
1583
1602
  ```
1584
1603
 
1585
1604
  * get users who did not log since a date
1586
1605
 
1587
1606
  ```
1588
- $ <%=cmd%> aspera admin res user list --fields=email --query=@json:'{"per_page":10000,"q":"last_login_at:<2018-05-28"}'
1607
+ $ <%=cmd%> aoc admin res user list --fields=email --query=@json:'{"per_page":10000,"q":"last_login_at:<2018-05-28"}'
1589
1608
  :...............................:
1590
1609
  : email :
1591
1610
  :...............................:
@@ -1597,7 +1616,7 @@ $ <%=cmd%> aspera admin res user list --fields=email --query=@json:'{"per_page":
1597
1616
  * list "Limited" users
1598
1617
 
1599
1618
  ```
1600
- $ <%=cmd%> aspera admin res user list --fields=email --query=@json:'{"per_page":10000}' --select=@json:'{"member_of_any_workspace":false}'
1619
+ $ <%=cmd%> aoc admin res user list --fields=email --query=@json:'{"per_page":10000}' --select=@json:'{"member_of_any_workspace":false}'
1601
1620
  ```
1602
1621
 
1603
1622
  * Perform a multi Gbps transfer between two remote shared folders
@@ -1611,7 +1630,7 @@ $ <%=cmd%> conf wizard --url=https://sedemo.ibmaspera.com --username=laurent.mar
1611
1630
  Detected: Aspera on Cloud
1612
1631
  Preparing preset: aoc_sedemo
1613
1632
  Using existing key:
1614
- /Users/laurent/.aspera/<%=cmd%>/aspera_on_cloud_key
1633
+ /Users/laurent/.aspera/<%=cmd%>/aspera_aoc_key
1615
1634
  Using global client_id.
1616
1635
  Please Login to your Aspera on Cloud instance.
1617
1636
  Navigate to your "Account Settings"
@@ -1626,7 +1645,7 @@ Setting config preset as default for aspera
1626
1645
  saving config file
1627
1646
  Done.
1628
1647
  You can test with:
1629
- $ <%=cmd%> aspera user info show
1648
+ $ <%=cmd%> aoc user info show
1630
1649
  ```
1631
1650
 
1632
1651
  This creates the option preset "aoc_&lt;org name&gt;" to allow seamless command line access and sets it as default for aspera on cloud.
@@ -1641,14 +1660,14 @@ $ <%=cmd%> -Paoc_show aspera files transfer --from-folder='IBM Cloud SJ' --to-fo
1641
1660
 
1642
1661
  * create registration key to register a node
1643
1662
  ```
1644
- $ <%=cmd%> aspera admin res admin/client create @json:'{"data":{"name":"laurentnode","client_subject_scopes":["alee","aejd"],"client_subject_enabled":true}}' --fields=token --format=csv
1663
+ $ <%=cmd%> aoc admin res admin/client create @json:'{"data":{"name":"laurentnode","client_subject_scopes":["alee","aejd"],"client_subject_enabled":true}}' --fields=token --format=csv
1645
1664
  jfqslfdjlfdjfhdjklqfhdkl
1646
1665
  ```
1647
1666
 
1648
1667
  * delete all registration keys
1649
1668
 
1650
1669
  ```
1651
- $ <%=cmd%> aspera admin res admin/client list --fields=id --format=csv|<%=cmd%> aspera admin res admin/client delete --bulk=yes --id=@lines:@stdin:
1670
+ $ <%=cmd%> aoc admin res admin/client list --fields=id --format=csv|<%=cmd%> aoc admin res admin/client delete --bulk=yes --id=@lines:@stdin:
1652
1671
  +-----+---------+
1653
1672
  | id | status |
1654
1673
  +-----+---------+
@@ -1664,19 +1683,19 @@ $ <%=cmd%> aspera admin res admin/client list --fields=id --format=csv|<%=cmd%>
1664
1683
  * list shared folders in node
1665
1684
 
1666
1685
  ```
1667
- $ <%=cmd%> aspera admin res node --id=8669 shared_folders
1686
+ $ <%=cmd%> aoc admin res node --id=8669 shared_folders
1668
1687
  ```
1669
1688
 
1670
1689
  * list shared folders in workspace
1671
1690
 
1672
1691
  ```
1673
- $ <%=cmd%> aspera admin res workspace --id=10818 shared_folders
1692
+ $ <%=cmd%> aoc admin res workspace --id=10818 shared_folders
1674
1693
  ```
1675
1694
 
1676
1695
  * list members of shared folder
1677
1696
 
1678
1697
  ```
1679
- $ <%=cmd%> aspera admin res node --id=8669 v4 perm 82 show
1698
+ $ <%=cmd%> aoc admin res node --id=8669 v4 perm 82 show
1680
1699
  ```
1681
1700
 
1682
1701
  ## Send a Package
@@ -1684,7 +1703,7 @@ $ <%=cmd%> aspera admin res node --id=8669 v4 perm 82 show
1684
1703
  Send a package:
1685
1704
 
1686
1705
  ```
1687
- $ <%=cmd%> aspera packages send --value=@json:'{"name":"my title","note":"my note","recipients":["laurent.martin.aspera@fr.ibm.com","other@example.com"]}' --sources=@args my_file.dat
1706
+ $ <%=cmd%> aoc packages send --value=@json:'{"name":"my title","note":"my note","recipients":["laurent.martin.aspera@fr.ibm.com","other@example.com"]}' --sources=@args my_file.dat
1688
1707
  ```
1689
1708
 
1690
1709
  Notes:
@@ -1699,7 +1718,7 @@ Notes:
1699
1718
  It is possible to automatically download new packages, like using Aspera Cargo:
1700
1719
 
1701
1720
  ```
1702
- $ <%=cmd%> aspera packages recv --id=ALL --once-only=yes --lock-port=12345
1721
+ $ <%=cmd%> aoc packages recv --id=ALL --once-only=yes --lock-port=12345
1703
1722
  ```
1704
1723
 
1705
1724
  * `--id=ALL` (case sensitive) will download all packages
@@ -1743,19 +1762,19 @@ f["type"].eql?("file") and (DateTime.now-DateTime.parse(f["modified_time"]))<100
1743
1762
  * expression to find files older than 1 year on a given node and store in file list
1744
1763
 
1745
1764
  ```
1746
- $ <%=cmd%> aspera admin res node --name='my node name' --secret='my secret' v4 find / --fields=path --value='exec:f["type"].eql?("file") and (DateTime.now-DateTime.parse(f["modified_time"]))<100' --format=csv > my_file_list.txt
1765
+ $ <%=cmd%> aoc admin res node --name='my node name' --secret='my secret' v4 find / --fields=path --value='exec:f["type"].eql?("file") and (DateTime.now-DateTime.parse(f["modified_time"]))<100' --format=csv > my_file_list.txt
1747
1766
  ```
1748
1767
 
1749
1768
  * delete the files, one by one
1750
1769
 
1751
1770
  ```
1752
- $ cat my_file_list.txt|while read path;do echo <%=cmd%> aspera admin res node --name='my node name' --secret='my secret' v4 delete "$path" ;done
1771
+ $ cat my_file_list.txt|while read path;do echo <%=cmd%> aoc admin res node --name='my node name' --secret='my secret' v4 delete "$path" ;done
1753
1772
  ```
1754
1773
 
1755
1774
  * delete the files in bulk
1756
1775
 
1757
1776
  ```
1758
- cat my_file_list.txt | <%=cmd%> aspera admin res node --name='my node name' --secret='my secret' v3 delete @lines:@stdin:
1777
+ cat my_file_list.txt | <%=cmd%> aoc admin res node --name='my node name' --secret='my secret' v3 delete @lines:@stdin:
1759
1778
  ```
1760
1779
 
1761
1780
  ## Activity
@@ -1763,13 +1782,13 @@ cat my_file_list.txt | <%=cmd%> aspera admin res node --name='my node name' --se
1763
1782
  The activity app can be queried with:
1764
1783
 
1765
1784
  ```
1766
- $ <%=cmd%> aspera admin analytics transfers
1785
+ $ <%=cmd%> aoc admin analytics transfers
1767
1786
  ```
1768
1787
 
1769
1788
  It can also support filters and send notification email with a template:
1770
1789
 
1771
1790
  ```
1772
- $ <%=cmd%> aspera admin analytics transfers --once-only=yes --lock-port=123455 \
1791
+ $ <%=cmd%> aoc admin analytics transfers --once-only=yes --lock-port=123455 \
1773
1792
  --query=@json:'{"status":"completed","direction":"receive"}' \
1774
1793
  --notify=@json:'{"to":"<''%=transfer[:user_email.to_s]%>","subject":"<''%=transfer[:files_completed.to_s]%> files received","body":"Dear <''%=transfer[:user_email.to_s]%>\nWe received <''%=transfer[:files_completed.to_s]%> files for a total of <''%=transfer[:transferred_bytes.to_s]%> bytes, starting with file:\n<''%=transfer[:content.to_s]%>\n\nThank you."}'
1775
1794
  ```
@@ -1789,9 +1808,9 @@ By default transfer nodes are expected to use ports TCP/UDP 33001. The web UI en
1789
1808
 
1790
1809
  ATS is usable either :
1791
1810
 
1792
- * from an AoC subscription : <%=cmd%> aspera admin ats
1811
+ * from an AoC subscription : <%=cmd%> aoc admin ats : use AoC authentication
1793
1812
 
1794
- * or from an IBM Cloud subscription : <%=cmd%> ats
1813
+ * or from an IBM Cloud subscription : <%=cmd%> ats : use IBM Cloud API key authentication
1795
1814
 
1796
1815
  ## IBM Cloud ATS : creation of api key
1797
1816
 
@@ -1895,21 +1914,35 @@ $ <%=cmd%> server --ssh-keys=@list:,~/.ssh/id_rsa
1895
1914
  $ <%=cmd%> server --ssh-keys=@json:'["~/.ssh/id_rsa"]'
1896
1915
  ```
1897
1916
 
1898
- The underlying ssh library `net::ssh` provides several options that may be used
1899
- depending on environment. By default the ssh library expect that an ssh-agent is running, but if you get the error message:
1917
+ The underlying ssh library `net::ssh` provides several options that may be used depending on environment. By default the ssh library expect that an ssh-agent is running.
1918
+
1919
+ If you get an error message such as:
1900
1920
 
1901
1921
  ```
1922
+ [Linux]
1902
1923
  ERROR -- net.ssh.authentication.agent: could not connect to ssh-agent: Agent not configured
1903
1924
  ```
1904
1925
 
1905
- This means that you dont have such agent, check env var: `SSH_AGENT_SOCK`, check if the key is protected with a passphrase. [check the manual](https://net-ssh.github.io/ssh/v1/chapter-2.html#s2)
1926
+ or
1927
+
1928
+ ```
1929
+ [Windows]
1930
+ ERROR -- net.ssh.authentication.agent: could not connect to ssh-agent: pageant process not running
1931
+ ```
1932
+
1933
+ This means that you dont have such an ssh agent running:
1906
1934
 
1907
- To diable use of `ssh-agent`, use the option `ssh_option` like this (or set in preset):
1935
+ * check env var: `SSH_AGENT_SOCK`
1936
+ * check if the key is protected with a passphrase
1937
+ * [check the manual](https://net-ssh.github.io/ssh/v1/chapter-2.html#s2)
1938
+ * To diable use of `ssh-agent`, use the option `ssh_option` like this (or set in preset):
1908
1939
 
1909
1940
  ```
1910
1941
  $ <%=cmd%> server --ssh-options=@ruby:'{use_agent: false}' ...
1911
1942
  ```
1912
1943
 
1944
+ This can also be set as default using a preset
1945
+
1913
1946
  ## Example
1914
1947
 
1915
1948
  One can test the "server" application using the well known demo server:
@@ -2204,7 +2237,7 @@ To change this parameter in `aspera.conf`, use `asconfigurator`. To display the
2204
2237
 
2205
2238
  If you use a value different than 16777216, then specify it using option `max_size`.
2206
2239
 
2207
- Note: the HSTS parameter (max_request_file_create_size_kb) is in kilobytes while the generator parameter is in bytes (factor of 1024).
2240
+ Note: the HSTS parameter (max_request_file_create_size_kb) is in *kiloBytes* while the generator parameter is in *Bytes* (factor of 1024).
2208
2241
 
2209
2242
  ## <a name="prev_ext"></a>External tools: Linux
2210
2243
 
@@ -2334,8 +2367,7 @@ using one of three overwrite method:
2334
2367
 
2335
2368
  Deletion of preview for deleted source files: not implemented yet.
2336
2369
 
2337
- If the `scan` or `events` detection method is used, then the option : `skip_folders` can be used
2338
- to skip some folders. It expects a list of path starting with slash, use the `@json:` notation, example:
2370
+ If the `scan` or `events` detection method is used, then the option : `skip_folders` can be used to skip some folders. It expects a list of path relative to the storage root (docroot) starting with slash, use the `@json:` notation, example:
2339
2371
 
2340
2372
  ```
2341
2373
  $ <%=cmd%> preview scan --skip-folders=@json:'["/not_here"]'
@@ -2343,14 +2375,14 @@ $ <%=cmd%> preview scan --skip-folders=@json:'["/not_here"]'
2343
2375
 
2344
2376
  The option `folder_reset_cache` forces the node service to refresh folder contents using various methods.
2345
2377
 
2346
- ## output preview Files types
2378
+ ## Preview File types
2347
2379
 
2348
2380
  Two types of preview can be generated:
2349
2381
 
2350
2382
  * png: thumbnail
2351
2383
  * mp4: video preview (only for video)
2352
2384
 
2353
- To skip generation of a format use option `skip_format`
2385
+ Use option `skip_format` to skip generation of a format.
2354
2386
 
2355
2387
  ## Supported input Files types
2356
2388
 
@@ -2508,7 +2540,7 @@ Nodejs: [https://www.npmjs.com/package/aspera](https://www.npmjs.com/package/asp
2508
2540
 
2509
2541
  ```
2510
2542
  $ asession -h
2511
- <%= File.read(ENV["ASESSION"]) %>
2543
+ <%= File.read(ENV["INCL_ASESSION"]) %>
2512
2544
  ```
2513
2545
 
2514
2546
  # Hot folder
@@ -2606,15 +2638,16 @@ So, it evolved into <%=tool%>:
2606
2638
 
2607
2639
  # Release Notes
2608
2640
 
2609
- * 4.0.0.pre1
2641
+ * 4.0.0.pre2
2610
2642
 
2611
- * now available as open source at [https://github.com/IBM/aspera-cli](https://github.com/IBM/aspera-cli) with general cleanup
2612
- * changed default tool name from `mlia` to `ascli`
2613
- * changed `aspera` command to `oncloud`
2614
- * changed gem name from `asperalm` to `aspera-cli`
2615
- * changed module name from `Asperalm` to `Aspera`
2616
- * removed command `folder` in `preview`, merged to `scan`
2617
- * persistency files go to sub folder instead of main folder
2643
+ * now available as open source at [<%= gemspec.homepage %>](<%= gemspec.homepage %>) with general cleanup
2644
+ * changed default tool name from `mlia` to `ascli`
2645
+ * changed `aspera` command to `aoc`
2646
+ * changed gem name from `asperalm` to `aspera-cli`
2647
+ * changed module name from `Asperalm` to `Aspera`
2648
+ * removed command `folder` in `preview`, merged to `scan`
2649
+ * persistency files go to sub folder instead of main folder
2650
+ * added possibility to install SDK: `config ascp install`
2618
2651
 
2619
2652
  * 0.11.8
2620
2653