aspera-cli 4.21.1 → 4.22.0

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.
Files changed (105) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data/BUGS.md +1 -1
  4. data/CHANGELOG.md +52 -22
  5. data/CONTRIBUTING.md +69 -148
  6. data/README.md +929 -668
  7. data/bin/ascli +5 -14
  8. data/bin/asession +1 -3
  9. data/examples/get_proto_file.rb +4 -3
  10. data/examples/proxy.pac +20 -20
  11. data/lib/aspera/agent/base.rb +11 -5
  12. data/lib/aspera/agent/connect.rb +30 -28
  13. data/lib/aspera/agent/{alpha.rb → desktop.rb} +35 -31
  14. data/lib/aspera/agent/direct.rb +141 -121
  15. data/lib/aspera/agent/httpgw.rb +22 -26
  16. data/lib/aspera/agent/node.rb +14 -11
  17. data/lib/aspera/agent/transferd.rb +30 -19
  18. data/lib/aspera/api/alee.rb +1 -1
  19. data/lib/aspera/api/aoc.rb +6 -6
  20. data/lib/aspera/api/cos_node.rb +2 -2
  21. data/lib/aspera/api/httpgw.rb +7 -3
  22. data/lib/aspera/api/node.rb +10 -8
  23. data/lib/aspera/ascmd.rb +3 -3
  24. data/lib/aspera/ascp/installation.rb +53 -72
  25. data/lib/aspera/ascp/management.rb +1 -1
  26. data/lib/aspera/assert.rb +11 -2
  27. data/lib/aspera/cli/error.rb +2 -2
  28. data/lib/aspera/cli/extended_value.rb +46 -21
  29. data/lib/aspera/cli/formatter.rb +55 -48
  30. data/lib/aspera/cli/hints.rb +1 -1
  31. data/lib/aspera/cli/info.rb +1 -0
  32. data/lib/aspera/cli/main.rb +192 -170
  33. data/lib/aspera/cli/manager.rb +18 -18
  34. data/lib/aspera/cli/plugin.rb +23 -20
  35. data/lib/aspera/cli/plugin_factory.rb +1 -1
  36. data/lib/aspera/cli/plugins/alee.rb +1 -1
  37. data/lib/aspera/cli/plugins/aoc.rb +247 -159
  38. data/lib/aspera/cli/plugins/ats.rb +19 -17
  39. data/lib/aspera/cli/plugins/config.rb +76 -113
  40. data/lib/aspera/cli/plugins/console.rb +5 -3
  41. data/lib/aspera/cli/plugins/faspex.rb +39 -35
  42. data/lib/aspera/cli/plugins/faspex5.rb +111 -84
  43. data/lib/aspera/cli/plugins/faspio.rb +13 -1
  44. data/lib/aspera/cli/plugins/httpgw.rb +13 -1
  45. data/lib/aspera/cli/plugins/node.rb +312 -182
  46. data/lib/aspera/cli/plugins/orchestrator.rb +34 -40
  47. data/lib/aspera/cli/plugins/preview.rb +3 -3
  48. data/lib/aspera/cli/plugins/server.rb +6 -6
  49. data/lib/aspera/cli/plugins/shares.rb +5 -5
  50. data/lib/aspera/cli/sync_actions.rb +19 -18
  51. data/lib/aspera/cli/transfer_agent.rb +5 -5
  52. data/lib/aspera/cli/transfer_progress.rb +2 -2
  53. data/lib/aspera/cli/version.rb +1 -1
  54. data/lib/aspera/command_line_builder.rb +116 -95
  55. data/lib/aspera/coverage.rb +8 -5
  56. data/lib/aspera/environment.rb +26 -17
  57. data/lib/aspera/faspex_gw.rb +14 -14
  58. data/lib/aspera/faspex_postproc.rb +10 -11
  59. data/lib/aspera/hash_ext.rb +4 -14
  60. data/lib/aspera/json_rpc.rb +1 -1
  61. data/lib/aspera/keychain/encrypted_hash.rb +47 -34
  62. data/lib/aspera/keychain/factory.rb +41 -0
  63. data/lib/aspera/keychain/hashicorp_vault.rb +71 -0
  64. data/lib/aspera/keychain/macos_security.rb +19 -11
  65. data/lib/aspera/log.rb +28 -34
  66. data/lib/aspera/nagios.rb +6 -6
  67. data/lib/aspera/node_simulator.rb +8 -8
  68. data/lib/aspera/oauth/base.rb +14 -7
  69. data/lib/aspera/oauth/factory.rb +5 -6
  70. data/lib/aspera/oauth/url_json.rb +6 -6
  71. data/lib/aspera/persistency_action_once.rb +6 -4
  72. data/lib/aspera/persistency_folder.rb +2 -2
  73. data/lib/aspera/preview/generator.rb +13 -10
  74. data/lib/aspera/preview/options.rb +16 -16
  75. data/lib/aspera/preview/terminal.rb +4 -4
  76. data/lib/aspera/preview/utils.rb +15 -17
  77. data/lib/aspera/products/connect.rb +35 -1
  78. data/lib/aspera/products/{alpha.rb → desktop.rb} +3 -3
  79. data/lib/aspera/products/transferd.rb +9 -2
  80. data/lib/aspera/proxy_auto_config.rb +2 -2
  81. data/lib/aspera/rest.rb +56 -47
  82. data/lib/aspera/rest_errors_aspera.rb +1 -1
  83. data/lib/aspera/secret_hider.rb +12 -5
  84. data/lib/aspera/ssh.rb +4 -4
  85. data/lib/aspera/temp_file_manager.rb +5 -4
  86. data/lib/aspera/transfer/convert.rb +29 -0
  87. data/lib/aspera/transfer/error_info.rb +66 -66
  88. data/lib/aspera/transfer/parameters.rb +13 -68
  89. data/lib/aspera/transfer/spec.rb +5 -6
  90. data/lib/aspera/transfer/spec.schema.yaml +753 -0
  91. data/lib/aspera/transfer/spec_doc.rb +62 -0
  92. data/lib/aspera/transfer/sync.rb +23 -72
  93. data/lib/aspera/transfer/sync_instance.schema.yaml +13 -0
  94. data/lib/aspera/transfer/sync_session.schema.yaml +79 -0
  95. data/lib/aspera/transfer/uri.rb +6 -6
  96. data/lib/aspera/uri_reader.rb +18 -1
  97. data/lib/aspera/web_auth.rb +1 -1
  98. data/lib/aspera/web_server_simple.rb +53 -44
  99. data.tar.gz.sig +0 -0
  100. metadata +28 -165
  101. metadata.gz.sig +0 -0
  102. data/examples/build_exec +0 -74
  103. data/examples/build_exec_rubyc +0 -40
  104. data/examples/build_package.sh +0 -28
  105. data/lib/aspera/transfer/spec.yaml +0 -718
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: aspera-cli
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.21.1
4
+ version: 4.22.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Laurent Martin
@@ -37,7 +37,7 @@ cert_chain:
37
37
  eTf9kxhVM40wGQOECVNA8UsEEZHD48eF+csUYZtAJOF5oxTI8UyV9T/o6CgO0c9/
38
38
  Gzz+Qm5ULOUcPiJLjSpaiTrkiIVYiDGnqNSr6R1Hb1c=
39
39
  -----END CERTIFICATE-----
40
- date: 2025-03-14 00:00:00.000000000 Z
40
+ date: 2025-06-23 00:00:00.000000000 Z
41
41
  dependencies:
42
42
  - !ruby/object:Gem::Dependency
43
43
  name: blankslate
@@ -123,20 +123,6 @@ dependencies:
123
123
  - - "~>"
124
124
  - !ruby/object:Gem::Version
125
125
  version: '7.3'
126
- - !ruby/object:Gem::Dependency
127
- name: openssl
128
- requirement: !ruby/object:Gem::Requirement
129
- requirements:
130
- - - "~>"
131
- - !ruby/object:Gem::Version
132
- version: 3.3.0
133
- type: :runtime
134
- prerelease: false
135
- version_requirements: !ruby/object:Gem::Requirement
136
- requirements:
137
- - - "~>"
138
- - !ruby/object:Gem::Version
139
- version: 3.3.0
140
126
  - !ruby/object:Gem::Dependency
141
127
  name: rainbow
142
128
  requirement: !ruby/object:Gem::Requirement
@@ -208,201 +194,75 @@ dependencies:
208
194
  - !ruby/object:Gem::Version
209
195
  version: '0.9'
210
196
  - !ruby/object:Gem::Dependency
211
- name: webrick
197
+ name: vault
212
198
  requirement: !ruby/object:Gem::Requirement
213
199
  requirements:
214
200
  - - "~>"
215
201
  - !ruby/object:Gem::Version
216
- version: '1.7'
202
+ version: '0.18'
217
203
  type: :runtime
218
204
  prerelease: false
219
205
  version_requirements: !ruby/object:Gem::Requirement
220
206
  requirements:
221
207
  - - "~>"
222
208
  - !ruby/object:Gem::Version
223
- version: '1.7'
209
+ version: '0.18'
224
210
  - !ruby/object:Gem::Dependency
225
- name: websocket
211
+ name: webrick
226
212
  requirement: !ruby/object:Gem::Requirement
227
213
  requirements:
228
214
  - - "~>"
229
215
  - !ruby/object:Gem::Version
230
- version: '1.2'
216
+ version: '1.7'
231
217
  type: :runtime
232
218
  prerelease: false
233
219
  version_requirements: !ruby/object:Gem::Requirement
234
220
  requirements:
235
221
  - - "~>"
236
222
  - !ruby/object:Gem::Version
237
- version: '1.2'
223
+ version: '1.7'
238
224
  - !ruby/object:Gem::Dependency
239
- name: xml-simple
225
+ name: websocket
240
226
  requirement: !ruby/object:Gem::Requirement
241
227
  requirements:
242
228
  - - "~>"
243
229
  - !ruby/object:Gem::Version
244
- version: '1.0'
230
+ version: '1.2'
245
231
  type: :runtime
246
232
  prerelease: false
247
233
  version_requirements: !ruby/object:Gem::Requirement
248
234
  requirements:
249
235
  - - "~>"
250
236
  - !ruby/object:Gem::Version
251
- version: '1.0'
252
- - !ruby/object:Gem::Dependency
253
- name: grpc-tools
254
- requirement: !ruby/object:Gem::Requirement
255
- requirements:
256
- - - "~>"
257
- - !ruby/object:Gem::Version
258
- version: 1.67.0
259
- type: :development
260
- prerelease: false
261
- version_requirements: !ruby/object:Gem::Requirement
262
- requirements:
263
- - - "~>"
264
- - !ruby/object:Gem::Version
265
- version: 1.67.0
266
- - !ruby/object:Gem::Dependency
267
- name: rake
268
- requirement: !ruby/object:Gem::Requirement
269
- requirements:
270
- - - "~>"
271
- - !ruby/object:Gem::Version
272
- version: '13.0'
273
- type: :development
274
- prerelease: false
275
- version_requirements: !ruby/object:Gem::Requirement
276
- requirements:
277
- - - "~>"
278
- - !ruby/object:Gem::Version
279
- version: '13.0'
280
- - !ruby/object:Gem::Dependency
281
- name: reek
282
- requirement: !ruby/object:Gem::Requirement
283
- requirements:
284
- - - "~>"
285
- - !ruby/object:Gem::Version
286
- version: 6.1.0
287
- type: :development
288
- prerelease: false
289
- version_requirements: !ruby/object:Gem::Requirement
290
- requirements:
291
- - - "~>"
292
- - !ruby/object:Gem::Version
293
- version: 6.1.0
294
- - !ruby/object:Gem::Dependency
295
- name: rspec
296
- requirement: !ruby/object:Gem::Requirement
297
- requirements:
298
- - - "~>"
299
- - !ruby/object:Gem::Version
300
- version: '3.0'
301
- type: :development
302
- prerelease: false
303
- version_requirements: !ruby/object:Gem::Requirement
304
- requirements:
305
- - - "~>"
306
- - !ruby/object:Gem::Version
307
- version: '3.0'
308
- - !ruby/object:Gem::Dependency
309
- name: rubocop
310
- requirement: !ruby/object:Gem::Requirement
311
- requirements:
312
- - - "~>"
313
- - !ruby/object:Gem::Version
314
- version: '1.12'
315
- type: :development
316
- prerelease: false
317
- version_requirements: !ruby/object:Gem::Requirement
318
- requirements:
319
- - - "~>"
320
- - !ruby/object:Gem::Version
321
- version: '1.12'
322
- - !ruby/object:Gem::Dependency
323
- name: rubocop-ast
324
- requirement: !ruby/object:Gem::Requirement
325
- requirements:
326
- - - "~>"
327
- - !ruby/object:Gem::Version
328
- version: '1.4'
329
- type: :development
330
- prerelease: false
331
- version_requirements: !ruby/object:Gem::Requirement
332
- requirements:
333
- - - "~>"
334
- - !ruby/object:Gem::Version
335
- version: '1.4'
336
- - !ruby/object:Gem::Dependency
337
- name: rubocop-performance
338
- requirement: !ruby/object:Gem::Requirement
339
- requirements:
340
- - - "~>"
341
- - !ruby/object:Gem::Version
342
- version: '1.10'
343
- type: :development
344
- prerelease: false
345
- version_requirements: !ruby/object:Gem::Requirement
346
- requirements:
347
- - - "~>"
348
- - !ruby/object:Gem::Version
349
- version: '1.10'
350
- - !ruby/object:Gem::Dependency
351
- name: rubocop-shopify
352
- requirement: !ruby/object:Gem::Requirement
353
- requirements:
354
- - - "~>"
355
- - !ruby/object:Gem::Version
356
- version: '2.0'
357
- type: :development
358
- prerelease: false
359
- version_requirements: !ruby/object:Gem::Requirement
360
- requirements:
361
- - - "~>"
362
- - !ruby/object:Gem::Version
363
- version: '2.0'
364
- - !ruby/object:Gem::Dependency
365
- name: ruby-lsp
366
- requirement: !ruby/object:Gem::Requirement
367
- requirements:
368
- - - "~>"
369
- - !ruby/object:Gem::Version
370
- version: '0.23'
371
- type: :development
372
- prerelease: false
373
- version_requirements: !ruby/object:Gem::Requirement
374
- requirements:
375
- - - "~>"
376
- - !ruby/object:Gem::Version
377
- version: '0.23'
237
+ version: '1.2'
378
238
  - !ruby/object:Gem::Dependency
379
- name: simplecov
239
+ name: word_wrap
380
240
  requirement: !ruby/object:Gem::Requirement
381
241
  requirements:
382
242
  - - "~>"
383
243
  - !ruby/object:Gem::Version
384
- version: '0.22'
385
- type: :development
244
+ version: '1.0'
245
+ type: :runtime
386
246
  prerelease: false
387
247
  version_requirements: !ruby/object:Gem::Requirement
388
248
  requirements:
389
249
  - - "~>"
390
250
  - !ruby/object:Gem::Version
391
- version: '0.22'
251
+ version: '1.0'
392
252
  - !ruby/object:Gem::Dependency
393
- name: solargraph
253
+ name: xml-simple
394
254
  requirement: !ruby/object:Gem::Requirement
395
255
  requirements:
396
256
  - - "~>"
397
257
  - !ruby/object:Gem::Version
398
- version: '0.48'
399
- type: :development
258
+ version: '1.0'
259
+ type: :runtime
400
260
  prerelease: false
401
261
  version_requirements: !ruby/object:Gem::Requirement
402
262
  requirements:
403
263
  - - "~>"
404
264
  - !ruby/object:Gem::Version
405
- version: '0.48'
265
+ version: '1.0'
406
266
  description: Command line interface for IBM Aspera products
407
267
  email:
408
268
  - laurent.martin.aspera@fr.ibm.com
@@ -418,15 +278,12 @@ files:
418
278
  - README.md
419
279
  - bin/ascli
420
280
  - bin/asession
421
- - examples/build_exec
422
- - examples/build_exec_rubyc
423
- - examples/build_package.sh
424
281
  - examples/dascli
425
282
  - examples/get_proto_file.rb
426
283
  - examples/proxy.pac
427
- - lib/aspera/agent/alpha.rb
428
284
  - lib/aspera/agent/base.rb
429
285
  - lib/aspera/agent/connect.rb
286
+ - lib/aspera/agent/desktop.rb
430
287
  - lib/aspera/agent/direct.rb
431
288
  - lib/aspera/agent/httpgw.rb
432
289
  - lib/aspera/agent/node.rb
@@ -488,6 +345,8 @@ files:
488
345
  - lib/aspera/id_generator.rb
489
346
  - lib/aspera/json_rpc.rb
490
347
  - lib/aspera/keychain/encrypted_hash.rb
348
+ - lib/aspera/keychain/factory.rb
349
+ - lib/aspera/keychain/hashicorp_vault.rb
491
350
  - lib/aspera/keychain/macos_security.rb
492
351
  - lib/aspera/line_logger.rb
493
352
  - lib/aspera/log.rb
@@ -509,8 +368,8 @@ files:
509
368
  - lib/aspera/preview/terminal.rb
510
369
  - lib/aspera/preview/utils.rb
511
370
  - lib/aspera/preview/video_error.png
512
- - lib/aspera/products/alpha.rb
513
371
  - lib/aspera/products/connect.rb
372
+ - lib/aspera/products/desktop.rb
514
373
  - lib/aspera/products/other.rb
515
374
  - lib/aspera/products/transferd.rb
516
375
  - lib/aspera/proxy_auto_config.js
@@ -524,13 +383,17 @@ files:
524
383
  - lib/aspera/ssh.rb
525
384
  - lib/aspera/temp_file_manager.rb
526
385
  - lib/aspera/timer_limiter.rb
386
+ - lib/aspera/transfer/convert.rb
527
387
  - lib/aspera/transfer/error.rb
528
388
  - lib/aspera/transfer/error_info.rb
529
389
  - lib/aspera/transfer/faux_file.rb
530
390
  - lib/aspera/transfer/parameters.rb
531
391
  - lib/aspera/transfer/spec.rb
532
- - lib/aspera/transfer/spec.yaml
392
+ - lib/aspera/transfer/spec.schema.yaml
393
+ - lib/aspera/transfer/spec_doc.rb
533
394
  - lib/aspera/transfer/sync.rb
395
+ - lib/aspera/transfer/sync_instance.schema.yaml
396
+ - lib/aspera/transfer/sync_session.schema.yaml
534
397
  - lib/aspera/transfer/uri.rb
535
398
  - lib/aspera/uri_reader.rb
536
399
  - lib/aspera/web_auth.rb
metadata.gz.sig CHANGED
Binary file
data/examples/build_exec DELETED
@@ -1,74 +0,0 @@
1
- #!/bin/bash
2
- # Glibc for various OS: https://gist.github.com/wagenet/35adca1a032cec2999d47b6c40aa45b1
3
- # https://distrowatch.com/table.php?distribution=redhat
4
- # RHEL 8 : glibc 2.28
5
- # RHEL 9 : glibc 2.34
6
- # https://distrowatch.com/table.php?distribution=ubuntu
7
- # Ubuntu 18.10 cosmic : glibc 2.28
8
- # Ubuntu 21.10 impish : gblic 2.34
9
- # https://www.ibm.com/docs/en/ahts/4.4.x?topic=release-notes
10
- # ascp 4.4.5 : gblic 2.28
11
- # dwarfs requires boost >= 1.65
12
- # boost requires cmake >= 3.30
13
- set -e
14
-
15
- if test $# -ne 5; then
16
- echo "Usage: $0 <CLI_EXECUTABLE> <CLI_PATH> <GEM_NAME> <GEM_VERSION> <DIR_TMP>" 1>&2
17
- exit 1
18
- fi
19
-
20
- CLI_EXECUTABLE=$1
21
- CLI_PATH=$(realpath $2)
22
- GEM_NAME=$3
23
- GEM_VERSION=$4
24
- DIR_TMP=$(realpath $5)
25
-
26
- echo "Building: $(basename $CLI_EXECUTABLE)"
27
-
28
- # tebako compilation
29
- tebako_env=$DIR_TMP/tebako-env
30
- # project files (gem)
31
- tebako_root=$DIR_TMP/tebako-root
32
- # only provide the name, not path
33
- tebako_entry=$(basename $CLI_PATH)
34
- tebako_output=$CLI_EXECUTABLE
35
-
36
- container_tag=alpine-3.17
37
- #container_tag=ubuntu-20.04
38
-
39
- gem install tebako
40
- mkdir -p $tebako_env $tebako_root
41
- (cd $tebako_root && gem fetch $GEM_NAME:$GEM_VERSION)
42
- case $(uname -s) in
43
- Darwin)
44
- brew update
45
- # install tools
46
- brew install bash binutils bison flex gnu-sed lz4 pkg-config xz
47
- # install libs
48
- brew install boost double-conversion fmt gdbm glog jemalloc libevent libffi libsodium libyaml ncurses openssl@3 zlib
49
- # make sure tools are reachable
50
- export PATH=/opt/homebrew/opt/flex/bin:/opt/homebrew/opt/bison/bin:$PATH
51
- # remove binutils from path so that macos `ar` is used
52
- export PATH=$(echo $PATH|tr : \\n|grep -v /binutils/|tr \\n :)
53
- ;;
54
- Linux)
55
- tebako_root=/mnt/w
56
- tebako_prefix="podman run -it --rm -v $PWD:$tebako_root ghcr.io/tamatebako/tebako-${container_tag}:0.8.6"
57
- tebako_opts=--patchelf
58
- tebako_output=$tebako_root/$(basename $CLI_EXECUTABLE)
59
- ;;
60
- LinuxLocal)
61
- dnf module reset ruby
62
- dnf module install ruby:3.3
63
- dnf install -y cmake git bash sudo autoconf boost-devel flex bison make clang binutils-devel libevent-devel libacl-devel sed python3 pkgconfig curl lz4-devel openssl-devel zlib-devel xz zip unzip tar xz-devel elfutils-devel libffi-devel gdbm-devel ncurses-devel readline-devel ruby-devel gettext-devel brotli-devel clang libxslt-devel
64
- echo TODO
65
- exit 1
66
- dnf install
67
- ;;
68
- *)
69
- echo "This OS is not supported." >&2
70
- exit 1
71
- ;;
72
- esac
73
- set -x
74
- exec $tebako_prefix tebako press --root=$tebako_root --entry-point=$tebako_entry --output=$tebako_output --prefix=$tebako_env $tebako_opts
@@ -1,40 +0,0 @@
1
- #!/bin/bash
2
-
3
- set -e
4
-
5
- if test $# -ne 5; then
6
- echo "Usage: $0 <CLI_EXECUTABLE> <CLI_PATH> <GEM_NAME> <GEM_VERSION> <DIR_TMP>" 1>&2
7
- exit 1
8
- fi
9
-
10
- CLI_EXECUTABLE=$1
11
- CLI_PATH=$(realpath $2)
12
- GEM_NAME=$3
13
- GEM_VERSION=$4
14
- DIR_TMP=$(realpath $5)
15
-
16
- echo "Building: $(basename $CLI_EXECUTABLE)"
17
-
18
- # https://github.com/you54f/ruby-packer
19
- # https://github.com/you54f/ruby-packer/releases
20
- set -e
21
- FOLDER="$(dirname $0)/../tmp"
22
- RUBYC="$FOLDER/rubyc"
23
- if test ! -e "$RUBYC"; then
24
- mkdir -p "$FOLDER"
25
- case $(uname -sm|tr ' ' -) in
26
- Darwin-arm64)
27
- curl -L https://github.com/YOU54F/ruby-packer/releases/download/rel-20230812/rubyc-Darwin-arm64.tar.gz | tar -xz -C "$FOLDER"
28
- mv "$FOLDER/rubyc-Darwin-arm64" "$RUBYC"
29
- ;;
30
- Linux-x86_64)
31
- curl -L https://github.com/YOU54F/ruby-packer/releases/download/rel-20230812/rubyc-Linux-x86_64.tar.gz | tar -xz -C "$FOLDER"
32
- mv "$FOLDER/rubyc-Linux-x86_64" "$RUBYC"
33
- ;;
34
- *)
35
- echo "This architecture is not supported." >&2
36
- exit 1
37
- ;;
38
- esac
39
- fi
40
- exec "$RUBYC" -o "$CLI_EXECUTABLE" "$CLI_PATH"
@@ -1,28 +0,0 @@
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"