aspera-cli 4.25.0.pre2 → 4.25.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 (46) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data/CHANGELOG.md +3 -0
  4. data/CONTRIBUTING.md +60 -18
  5. data/README.md +164 -133
  6. data/lib/aspera/agent/factory.rb +9 -6
  7. data/lib/aspera/agent/transferd.rb +4 -4
  8. data/lib/aspera/api/aoc.rb +33 -24
  9. data/lib/aspera/api/ats.rb +1 -0
  10. data/lib/aspera/api/faspex.rb +11 -5
  11. data/lib/aspera/ascmd.rb +1 -1
  12. data/lib/aspera/ascp/installation.rb +5 -5
  13. data/lib/aspera/cli/formatter.rb +15 -62
  14. data/lib/aspera/cli/manager.rb +8 -42
  15. data/lib/aspera/cli/plugins/aoc.rb +48 -30
  16. data/lib/aspera/cli/plugins/ats.rb +30 -36
  17. data/lib/aspera/cli/plugins/base.rb +6 -6
  18. data/lib/aspera/cli/plugins/config.rb +5 -4
  19. data/lib/aspera/cli/plugins/faspex.rb +5 -3
  20. data/lib/aspera/cli/plugins/faspex5.rb +10 -8
  21. data/lib/aspera/cli/plugins/faspio.rb +3 -1
  22. data/lib/aspera/cli/plugins/node.rb +9 -6
  23. data/lib/aspera/cli/plugins/oauth.rb +12 -11
  24. data/lib/aspera/cli/plugins/preview.rb +2 -2
  25. data/lib/aspera/cli/transfer_agent.rb +1 -2
  26. data/lib/aspera/cli/version.rb +1 -1
  27. data/lib/aspera/command_line_builder.rb +5 -5
  28. data/lib/aspera/dot_container.rb +108 -0
  29. data/lib/aspera/id_generator.rb +7 -10
  30. data/lib/aspera/oauth/base.rb +25 -38
  31. data/lib/aspera/oauth/factory.rb +5 -6
  32. data/lib/aspera/oauth/generic.rb +1 -1
  33. data/lib/aspera/oauth/jwt.rb +1 -1
  34. data/lib/aspera/oauth/url_json.rb +4 -3
  35. data/lib/aspera/oauth/web.rb +2 -2
  36. data/lib/aspera/preview/file_types.rb +1 -1
  37. data/lib/aspera/rest.rb +5 -2
  38. data/lib/aspera/ssh.rb +6 -5
  39. data/lib/aspera/sync/conf.schema.yaml +2 -2
  40. data/lib/aspera/transfer/parameters.rb +6 -6
  41. data/lib/aspera/transfer/spec.schema.yaml +3 -3
  42. data/lib/aspera/transfer/spec_doc.rb +11 -21
  43. data/lib/aspera/uri_reader.rb +17 -3
  44. data.tar.gz.sig +0 -0
  45. metadata +2 -1
  46. metadata.gz.sig +0 -0
data/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
  <!--
3
3
  DO NOT EDIT: THIS FILE IS GENERATED, edit docs/README.erb.md, for details, read docs/README.md
4
4
  PANDOC_META_BEGIN
5
- subtitle: "ascli 4.25.0.beta2"
5
+ subtitle: "ascli 4.25.0"
6
6
  author: "Laurent MARTIN"
7
7
  PANDOC_META_END
8
8
  -->
@@ -42,7 +42,7 @@ Need to debug? I’ll show you what’s going on under the hood.
42
42
 
43
43
  Think of me as Aspera’s command-line sidekick: quick, reliable, and a little no-nonsense. You bring the files; I’ll bring the horsepower."
44
44
 
45
- Version : 4.25.0.beta2
45
+ Version : 4.25.0
46
46
 
47
47
  Laurent/2016-2026
48
48
 
@@ -139,7 +139,7 @@ ascli --version
139
139
  ```
140
140
 
141
141
  ```text
142
- 4.25.0.beta2
142
+ 4.25.0
143
143
  ```
144
144
 
145
145
  > [!NOTE]
@@ -592,33 +592,57 @@ Those are not installed as part of dependencies because they involve compilation
592
592
  See [Gemfile](Gemfile):
593
593
 
594
594
  | name | version | comment |
595
- |----------------------|---------|-----------------------------------------------------|
595
+ |----------------------|----------|-----------------------------------------------------|
596
596
  | grpc | ~> 1.71 | (no jruby) for Aspera Transfer Daemon |
597
597
  | marcel | ~> 1.1 | for preview |
598
- | rmagick | ~> 6.1 | (no jruby) for terminal view |
599
598
  | symmetric-encryption | ~> 4.6 | for encrypted hash file secrets |
600
599
  | bigdecimal | ~> 3.1 | if RUBY_VERSION >= '3.4' for symmetric-encryption ? |
600
+ | base64 | ~> 0.3 | if RUBY_VERSION >= '3.4' remove from standard gems |
601
601
  | sqlite3 | ~> 2.7 | (no jruby) for async DB |
602
602
  | jdbc-sqlite3 | ~> 3.46 | (jruby) for async DB |
603
603
  | sequel | ~> 5.96 | (jruby) for async DB |
604
604
  | ed25519 | ~> 1.4 | (no jruby) for ed25519 and OpenSSH file format |
605
605
  | bcrypt_pbkdf | ~> 1.1 | (no jruby) for ed25519 and OpenSSH file format |
606
606
  | syslog | ~> 0.3 | (no jruby) for logger=syslog |
607
+ | rmagick | ~> 6.1 | (no jruby) for terminal view |
608
+ | debug | ~> 1.11 | (no jruby) |
609
+ | grpc-tools | ~> 1.67 | |
610
+ | rake | ~> 13.0 | |
611
+ | reek | ~> 6.5.0 | |
612
+ | rspec | ~> 3.0 | |
613
+ | rubocop | ~> 1.75 | |
614
+ | rubocop-ast | ~> 1.4 | |
615
+ | rubocop-performance | ~> 1.10 | (no jruby) |
616
+ | rubocop-shopify | ~> 2.0 | |
617
+ | simplecov | ~> 0.22 | |
618
+ | solargraph | ~> 0.48 | (no jruby) |
607
619
 
608
620
  Install like this:
609
621
 
610
622
  ```shell
611
623
  gem install grpc -v '~> 1.71'
612
624
  gem install marcel -v '~> 1.1'
613
- gem install rmagick -v '~> 6.1'
614
625
  gem install symmetric-encryption -v '~> 4.6'
615
626
  gem install bigdecimal -v '~> 3.1'
627
+ gem install base64 -v '~> 0.3'
616
628
  gem install sqlite3 -v '~> 2.7'
617
629
  gem install jdbc-sqlite3 -v '~> 3.46'
618
630
  gem install sequel -v '~> 5.96'
619
631
  gem install ed25519 -v '~> 1.4'
620
632
  gem install bcrypt_pbkdf -v '~> 1.1'
621
633
  gem install syslog -v '~> 0.3'
634
+ gem install rmagick -v '~> 6.1'
635
+ gem install debug -v '~> 1.11'
636
+ gem install grpc-tools -v '~> 1.67'
637
+ gem install rake -v '~> 13.0'
638
+ gem install reek -v '~> 6.5.0'
639
+ gem install rspec -v '~> 3.0'
640
+ gem install rubocop -v '~> 1.75'
641
+ gem install rubocop-ast -v '~> 1.4'
642
+ gem install rubocop-performance -v '~> 1.10'
643
+ gem install rubocop-shopify -v '~> 2.0'
644
+ gem install simplecov -v '~> 0.22'
645
+ gem install solargraph -v '~> 0.48'
622
646
  ```
623
647
 
624
648
  ### Ruby Gem: `aspera-cli`
@@ -626,7 +650,7 @@ gem install syslog -v '~> 0.3'
626
650
  Once you have Ruby and rights to install gems, install the `aspera-cli` gem and its dependencies:
627
651
 
628
652
  ```shell
629
- gem install aspera-cli --pre
653
+ gem install aspera-cli
630
654
  ```
631
655
 
632
656
  To upgrade to the latest version:
@@ -782,11 +806,11 @@ Necessary gems can be packed in a `tar.gz` like this:
782
806
 
783
807
  ```bash
784
808
  mkdir temp_folder
785
- gem install aspera-cli:4.25.0.beta2 --no-document --install-dir temp_folder
809
+ gem install aspera-cli:4.25.0 --no-document --install-dir temp_folder
786
810
  find temp_folder
787
- mv temp_folder/cache aspera-cli-4.25.0.beta2-gems
811
+ mv temp_folder/cache aspera-cli-4.25.0-gems
788
812
  rm -fr temp_folder
789
- tar zcvf aspera-cli-4.25.0.beta2-gems aspera-cli-4.25.0.beta2-gems.tgz
813
+ tar zcvf aspera-cli-4.25.0-gems aspera-cli-4.25.0-gems.tgz
790
814
  ```
791
815
 
792
816
  #### Unix-like
@@ -931,7 +955,7 @@ ascli -v
931
955
  ```
932
956
 
933
957
  ```text
934
- 4.25.0.beta2
958
+ 4.25.0
935
959
  ```
936
960
 
937
961
  In order to keep persistency of configuration on the host, you should specify your user's configuration folder as a volume for the container.
@@ -2607,6 +2631,8 @@ preset delete conf_name
2607
2631
  preset initialize conf_name @json:'{"p1":"v1","p2":"v2"}'
2608
2632
  preset list
2609
2633
  preset overview
2634
+ preset set GLOBAL vault @: type=file file=/secure/vault_file
2635
+ preset set GLOBAL vault_password _simple_one_
2610
2636
  preset set GLOBAL version_check_days 0
2611
2637
  preset set conf_name param value
2612
2638
  preset set default shares conf_name
@@ -2624,7 +2650,8 @@ tokens flush
2624
2650
  tokens list
2625
2651
  transferd install
2626
2652
  transferd list
2627
- vault create @json:'{"label":"my_label","password":"my_password_here","description":"my secret"}'
2653
+ vault create @: label=my_label password=my_password_here 'description=my secret'
2654
+ vault delete foo --vault.type=system
2628
2655
  vault delete my_label
2629
2656
  vault info
2630
2657
  vault list
@@ -2939,7 +2966,7 @@ ascli config vault create @json:'{"label":"mylabel","password":"my_password_here
2939
2966
 
2940
2967
  #### Configuration Finder
2941
2968
 
2942
- When a secret is needed by a sub command, the command can search for existing configurations in the configuration file.
2969
+ When a secret is needed by a sub command, the command can search for existing configurations in the configuration file by setting option `secret` to the special value `PRESET`.
2943
2970
 
2944
2971
  The lookup is done by comparing the service URL and username (or access key).
2945
2972
 
@@ -4031,7 +4058,7 @@ ascli config ascp schema transferd --format=jsonpp
4031
4058
  | cookie | string | Metadata for transfer specified by application.<br/>(env:`ASPERA_SCP_COOKIE`) |
4032
4059
  | create_dir | boolean | Create target directory if it doesn't already exist.<br/>If **all** the following conditions are met, then the `destination_root` specifies a filename instead of destination folder:<br/>- `create_dir` is `false`<br/>- A single source file is given on **command line**<br/>- The target folder specified by `destination_root` does not exist<br/>In all other cases, `destination_root` specifies a folder, and it is created if it does not already exist. I.e. if **any** of those conditions is met:<br/>- `create_dir` is `true`<br/>- Multiple source files are provided<br/>- List of source files are provided in a file (list or pair), default for Node API and `ascli`.<br/>- The target folder exists<br/>(`-d`) |
4033
4060
  | delete_before_transfer | boolean | Before transfer, delete files that exist at the destination but not at the source.<br/>The source and destination arguments must be directories that have matching names.<br/>Objects on the destination that have the same name but different type or size as objects on the source are not deleted.<br/>(`--delete-before-transfer`) |
4034
- | delete_source | boolean | Remove transfered source files after transfer success. Equivalent to `remove_after_transfer` + `remove_empty_directories` + `remove_empty_source_directory`. Take precedence over those.<br/>(A, N, T) |
4061
+ | delete_source | boolean | Remove transferred source files after transfer success. Equivalent to `remove_after_transfer` + `remove_empty_directories` + `remove_empty_source_directory`. Take precedence over those.<br/>(A, N, T) |
4035
4062
  | destination_root | string | Destination root directory. |
4036
4063
  | destination_root_id | string | The file ID of the destination root directory.<br/>Required when using Bearer token auth for the destination node.<br/>(T) |
4037
4064
  | dgram_size | integer | UDP datagram size in bytes.<br/>(`-Z {integer}`) |
@@ -4635,8 +4662,9 @@ ascli server upload "faux:///mydir?file=testfile&count=1000&size=1" --to-folder=
4635
4662
 
4636
4663
  ```text
4637
4664
  ascli -h
4665
+ WARN No config file found. New configuration file: /home/runner/.aspera/ascli/config.yaml
4638
4666
  NAME
4639
- ascli -- a command line tool for Aspera Applications (v4.25.0.beta2)
4667
+ ascli -- a command line tool for Aspera Applications (v4.25.0)
4640
4668
 
4641
4669
  SYNOPSIS
4642
4670
  ascli COMMANDS [OPTIONS] [ARGS]
@@ -4681,7 +4709,7 @@ OPTIONS: global
4681
4709
  --bash-comp Generate bash completion for command
4682
4710
  --show-config Display parameters used for the provided action
4683
4711
  -v, --version Display version
4684
- --ui=ENUM Method to start browser: text, [graphical]
4712
+ --ui=ENUM Method to start browser: [text], graphical
4685
4713
  --invalid-characters=VALUE Replacement character and invalid filename characters
4686
4714
  --log-level=ENUM Log level: trace2, trace1, debug, info, [warn], error, fatal, unknown
4687
4715
  --log-format=VALUE Log formatter (Proc, Logger::Formatter)
@@ -4730,15 +4758,38 @@ OPTIONS: global
4730
4758
  --to-folder=VALUE Destination folder for transferred files
4731
4759
  --sources=VALUE How list of transferred files is provided (@args,@ts,Array)
4732
4760
  --src-type=ENUM Type of file list: [list], pair
4733
- --transfer=ENUM Type of transfer agent: desktop, node, [direct], transferd, httpgw, connect
4761
+ --transfer=ENUM Type of transfer agent: httpgw, transferd, node, desktop, [direct], connect
4734
4762
  --transfer-info=VALUE Parameters for transfer agent (Hash)
4735
4763
 
4736
4764
  COMMAND: config
4737
4765
  SUBCOMMANDS: ascp check_update coffee detect documentation download echo email_test file folder gem genkey image initdemo open platform plugins preset proxy_check pubkey remote_certificate smtp_settings sync test tokens transferd vault wizard
4738
4766
 
4739
4767
 
4740
- COMMAND: shares
4741
- SUBCOMMANDS: admin files health
4768
+ COMMAND: httpgw
4769
+ SUBCOMMANDS: health info
4770
+ OPTIONS:
4771
+ --url=VALUE URL of application, e.g. https://app.example.com/aspera/app
4772
+
4773
+
4774
+ COMMAND: faspex5
4775
+ SUBCOMMANDS: admin bearer_token gateway health invitations packages postprocessing shared_folders user version
4776
+ OPTIONS:
4777
+ --url=VALUE URL of application, e.g. https://app.example.com/aspera/app
4778
+ --username=VALUE User's identifier
4779
+ --password=VALUE User's password
4780
+ --auth=ENUM OAuth type of authentication: web, [jwt], boot
4781
+ --client-id=VALUE OAuth client identifier
4782
+ --client-secret=VALUE OAuth client secret
4783
+ --redirect-uri=VALUE OAuth (Web) redirect URI for web authentication
4784
+ --private-key=VALUE OAuth (JWT) RSA private key PEM value (prefix file path with @file:)
4785
+ --passphrase=VALUE OAuth (JWT) RSA private key passphrase
4786
+ --box=VALUE Package inbox, either shared inbox name or one of: inbox, inbox_history, inbox_all, inbox_all_history, outbox, outbox_history, pending, pending_history, all or ALL
4787
+ --shared-folder=VALUE Send package with files from shared folder
4788
+ --group-type=ENUM Type of shared box: [shared_inboxes], workgroups
4789
+
4790
+
4791
+ COMMAND: alee
4792
+ SUBCOMMANDS: entitlement health
4742
4793
  OPTIONS:
4743
4794
  --url=VALUE URL of application, e.g. https://app.example.com/aspera/app
4744
4795
  --username=VALUE User's identifier
@@ -4759,36 +4810,33 @@ OPTIONS:
4759
4810
  --dynamic-key=VALUE Private key PEM to use for dynamic key auth
4760
4811
 
4761
4812
 
4762
- COMMAND: faspio
4763
- SUBCOMMANDS: bridges health
4813
+ COMMAND: aoc
4814
+ SUBCOMMANDS: admin automation bearer_token files gateway organization packages reminder servers tier_restrictions user
4764
4815
  OPTIONS:
4765
4816
  --url=VALUE URL of application, e.g. https://app.example.com/aspera/app
4766
4817
  --username=VALUE User's identifier
4767
4818
  --password=VALUE User's password
4768
- --auth=ENUM OAuth type of authentication: jwt, basic
4819
+ --auth=ENUM OAuth type of authentication: web, [jwt], boot
4769
4820
  --client-id=VALUE OAuth client identifier
4770
- --private-key=VALUE OAuth JWT RSA private key PEM value (prefix file path with @file:)
4771
- --passphrase=VALUE OAuth JWT RSA private key passphrase
4772
-
4773
-
4774
- COMMAND: orchestrator
4775
- SUBCOMMANDS: health info monitors plugins processes workflows workorders workstep
4776
- OPTIONS:
4777
- --url=VALUE URL of application, e.g. https://app.example.com/aspera/app
4778
- --username=VALUE User's identifier
4779
- --password=VALUE User's password
4780
- --result=VALUE Specify result value as: 'work_step:parameter'
4781
- --synchronous=ENUM Wait for completion: [no], yes
4782
- --ret-style=ENUM How return type is requested in api: header, [arg], ext
4783
- --auth-style=ENUM Authentication type: arg_pass, [head_basic], apikey
4821
+ --client-secret=VALUE OAuth client secret
4822
+ --redirect-uri=VALUE OAuth (Web) redirect URI for web authentication
4823
+ --private-key=VALUE OAuth (JWT) RSA private key PEM value (prefix file path with @file:)
4824
+ --passphrase=VALUE OAuth (JWT) RSA private key passphrase
4825
+ --workspace=VALUE Name of workspace
4826
+ --new-user-option=VALUE New user creation option for unknown package recipients (Hash)
4827
+ --validate-metadata=ENUM Validate shared inbox metadata: no, [yes]
4828
+ --package-folder=VALUE Handling of reception of packages in folders (Hash)
4784
4829
 
4785
4830
 
4786
- COMMAND: alee
4787
- SUBCOMMANDS: entitlement health
4831
+ COMMAND: server
4832
+ SUBCOMMANDS: browse cp delete df download du health info ls md5sum mkdir mv rename rm sync upload
4788
4833
  OPTIONS:
4789
4834
  --url=VALUE URL of application, e.g. https://app.example.com/aspera/app
4790
4835
  --username=VALUE User's identifier
4791
4836
  --password=VALUE User's password
4837
+ --ssh-keys=VALUE SSH key path list (Array)
4838
+ --passphrase=VALUE SSH private key passphrase
4839
+ --ssh-options=VALUE SSH options (Hash)
4792
4840
 
4793
4841
 
4794
4842
  COMMAND: ats
@@ -4802,56 +4850,6 @@ OPTIONS:
4802
4850
  --region=VALUE Cloud region
4803
4851
 
4804
4852
 
4805
- COMMAND: faspex5
4806
- SUBCOMMANDS: admin bearer_token gateway health invitations packages postprocessing shared_folders user version
4807
- OPTIONS:
4808
- --url=VALUE URL of application, e.g. https://app.example.com/aspera/app
4809
- --username=VALUE User's identifier
4810
- --password=VALUE User's password
4811
- --auth=ENUM OAuth type of authentication: web, [jwt], boot
4812
- --client-id=VALUE OAuth client identifier
4813
- --client-secret=VALUE OAuth client secret
4814
- --redirect-uri=VALUE OAuth (Web) redirect URI for web authentication
4815
- --private-key=VALUE OAuth (JWT) RSA private key PEM value (prefix file path with @file:)
4816
- --passphrase=VALUE OAuth (JWT) RSA private key passphrase
4817
- --scope=VALUE OAuth scope for API calls
4818
- --box=VALUE Package inbox, either shared inbox name or one of: inbox, inbox_history, inbox_all, inbox_all_history, outbox, outbox_history, pending, pending_history, all or ALL
4819
- --shared-folder=VALUE Send package with files from shared folder
4820
- --group-type=ENUM Type of shared box: [shared_inboxes], workgroups
4821
-
4822
-
4823
- COMMAND: cos
4824
- SUBCOMMANDS: node
4825
- OPTIONS:
4826
- --bucket=VALUE Bucket name
4827
- --endpoint=VALUE Storage endpoint (URL)
4828
- --apikey=VALUE Storage API key
4829
- --crn=VALUE Resource instance id (CRN)
4830
- --service-credentials=VALUE IBM Cloud service credentials (Hash)
4831
- --region=VALUE Storage region
4832
- --identity=VALUE Authentication URL (https://iam.cloud.ibm.com/identity)
4833
-
4834
-
4835
- COMMAND: httpgw
4836
- SUBCOMMANDS: health info
4837
- OPTIONS:
4838
- --url=VALUE URL of application, e.g. https://app.example.com/aspera/app
4839
-
4840
-
4841
- COMMAND: faspex
4842
- SUBCOMMANDS: address_book dropbox health login_methods me package source v4
4843
- OPTIONS:
4844
- --url=VALUE URL of application, e.g. https://app.example.com/aspera/app
4845
- --username=VALUE User's identifier
4846
- --password=VALUE User's password
4847
- --link=VALUE Public link for specific operation
4848
- --delivery-info=VALUE Package delivery information (Hash)
4849
- --remote-source=VALUE Remote source for package send (id or %name:)
4850
- --storage=VALUE Faspex local storage definition (for browsing source)
4851
- --recipient=VALUE Use if recipient is a dropbox (with *)
4852
- --box=ENUM Package box: [inbox], archive, sent
4853
-
4854
-
4855
4853
  COMMAND: preview
4856
4854
  SUBCOMMANDS: check events scan show test trevents
4857
4855
  OPTIONS:
@@ -4887,42 +4885,70 @@ OPTIONS:
4887
4885
  --clips-length=VALUE Mp4: clips: length in seconds of each clips
4888
4886
 
4889
4887
 
4890
- COMMAND: aoc
4891
- SUBCOMMANDS: admin automation bearer_token files gateway organization packages reminder servers tier_restrictions user
4888
+ COMMAND: orchestrator
4889
+ SUBCOMMANDS: health info monitors plugins processes workflows workorders workstep
4892
4890
  OPTIONS:
4893
4891
  --url=VALUE URL of application, e.g. https://app.example.com/aspera/app
4894
4892
  --username=VALUE User's identifier
4895
4893
  --password=VALUE User's password
4896
- --auth=ENUM OAuth type of authentication: web, [jwt], boot
4897
- --client-id=VALUE OAuth client identifier
4898
- --client-secret=VALUE OAuth client secret
4899
- --redirect-uri=VALUE OAuth (Web) redirect URI for web authentication
4900
- --private-key=VALUE OAuth (JWT) RSA private key PEM value (prefix file path with @file:)
4901
- --passphrase=VALUE OAuth (JWT) RSA private key passphrase
4902
- --scope=VALUE OAuth scope for API calls
4903
- --workspace=VALUE Name of workspace
4904
- --new-user-option=VALUE New user creation option for unknown package recipients (Hash)
4905
- --validate-metadata=ENUM Validate shared inbox metadata: no, [yes]
4906
- --package-folder=VALUE Handling of reception of packages in folders (Hash)
4894
+ --result=VALUE Specify result value as: 'work_step:parameter'
4895
+ --synchronous=ENUM Wait for completion: [no], yes
4896
+ --ret-style=ENUM How return type is requested in api: header, [arg], ext
4897
+ --auth-style=ENUM Authentication type: arg_pass, [head_basic], apikey
4907
4898
 
4908
4899
 
4909
- COMMAND: server
4910
- SUBCOMMANDS: browse cp delete df download du health info ls md5sum mkdir mv rename rm sync upload
4900
+ COMMAND: console
4901
+ SUBCOMMANDS: health transfer
4911
4902
  OPTIONS:
4912
4903
  --url=VALUE URL of application, e.g. https://app.example.com/aspera/app
4913
4904
  --username=VALUE User's identifier
4914
4905
  --password=VALUE User's password
4915
- --ssh-keys=VALUE SSH key path list (Array)
4916
- --passphrase=VALUE SSH private key passphrase
4917
- --ssh-options=VALUE SSH options (Hash)
4918
4906
 
4919
4907
 
4920
- COMMAND: console
4921
- SUBCOMMANDS: health transfer
4908
+ COMMAND: shares
4909
+ SUBCOMMANDS: admin files health
4910
+ OPTIONS:
4911
+ --url=VALUE URL of application, e.g. https://app.example.com/aspera/app
4912
+ --username=VALUE User's identifier
4913
+ --password=VALUE User's password
4914
+
4915
+
4916
+ COMMAND: cos
4917
+ SUBCOMMANDS: node
4918
+ OPTIONS:
4919
+ --bucket=VALUE Bucket name
4920
+ --endpoint=VALUE Storage endpoint (URL)
4921
+ --apikey=VALUE Storage API key
4922
+ --crn=VALUE Resource instance id (CRN)
4923
+ --service-credentials=VALUE IBM Cloud service credentials (Hash)
4924
+ --region=VALUE Storage region
4925
+ --identity=VALUE Authentication URL (https://iam.cloud.ibm.com/identity)
4926
+
4927
+
4928
+ COMMAND: faspio
4929
+ SUBCOMMANDS: bridges health
4922
4930
  OPTIONS:
4923
4931
  --url=VALUE URL of application, e.g. https://app.example.com/aspera/app
4924
4932
  --username=VALUE User's identifier
4925
4933
  --password=VALUE User's password
4934
+ --auth=ENUM OAuth type of authentication: jwt, basic
4935
+ --client-id=VALUE OAuth client identifier
4936
+ --private-key=VALUE OAuth JWT RSA private key PEM value (prefix file path with @file:)
4937
+ --passphrase=VALUE OAuth JWT RSA private key passphrase
4938
+
4939
+
4940
+ COMMAND: faspex
4941
+ SUBCOMMANDS: address_book dropbox health login_methods me package source v4
4942
+ OPTIONS:
4943
+ --url=VALUE URL of application, e.g. https://app.example.com/aspera/app
4944
+ --username=VALUE User's identifier
4945
+ --password=VALUE User's password
4946
+ --link=VALUE Public link for specific operation
4947
+ --delivery-info=VALUE Package delivery information (Hash)
4948
+ --remote-source=VALUE Remote source for package send (id or %name:)
4949
+ --storage=VALUE Faspex local storage definition (for browsing source)
4950
+ --recipient=VALUE Use if recipient is a dropbox (with *)
4951
+ --box=ENUM Package box: [inbox], archive, sent
4926
4952
 
4927
4953
 
4928
4954
  ```
@@ -5302,7 +5328,7 @@ empty
5302
5328
 
5303
5329
  ### Calling AoC APIs from command line
5304
5330
 
5305
- The command `ascli aoc bearer` can be used to generate an OAuth token suitable to call any AoC API (use the `scope` option to change the scope, default is `user:all`).
5331
+ The command `ascli aoc bearer` can be used to generate an OAuth token suitable to call any AoC API.
5306
5332
  This can be useful when a command is not yet available.
5307
5333
 
5308
5334
  Example:
@@ -6426,6 +6452,7 @@ admin ats cluster list
6426
6452
  admin ats cluster show --cloud=aws --region=eu-west-1
6427
6453
  admin ats cluster show 1f412ae7-869a-445c-9c05-02ad16813be2
6428
6454
  admin auth_providers list
6455
+ admin bearer_token --display=data
6429
6456
  admin client list
6430
6457
  admin client_access_key list
6431
6458
  admin client_registration_token create @json:'{"data":{"name":"test_client_reg1","client_subject_scopes":["alee","aejd"],"client_subject_enabled":true}}'
@@ -6437,7 +6464,7 @@ admin dropbox_membership list
6437
6464
  admin group list
6438
6465
  admin group_membership list --fields=ALL --query=@json:'{"page":1,"per_page":50,"embed":"member","inherited":false,"workspace_id":11363,"sort":"name"}'
6439
6466
  admin kms_profile list
6440
- admin node bearer_token %name:my_node_name --scope=admin:all
6467
+ admin node bearer_token %name:my_node_name
6441
6468
  admin node do %name:my_node_name --secret=my_ak_secret browse /
6442
6469
  admin node do %name:my_node_name --secret=my_ak_secret browse /folder_sub --node-cache=no
6443
6470
  admin node do %name:my_node_name --secret=my_ak_secret delete /folder1
@@ -6474,9 +6501,9 @@ automation workflow action wf_id create @json:'{"name":"toto"}'
6474
6501
  automation workflow create @json:'{"name":"test_workflow"}'
6475
6502
  automation workflow delete wf_id
6476
6503
  automation workflow list
6477
- automation workflow list --query=@json:'{"show_org_workflows":"true"}' --scope=admin:all
6504
+ automation workflow list --query=@json:'{"show_org_workflows":"true"}'
6478
6505
  automation workflow list --select=@json:'{"name":"test_workflow"}' --fields=id
6479
- bearer_token --display=data --scope=user:all
6506
+ bearer_token --display=data
6480
6507
  files bearer /
6481
6508
  files bearer_token_node / --cache-tokens=no
6482
6509
  files browse /
@@ -6491,9 +6518,9 @@ files delete /testsrc
6491
6518
  files download --to-folder=. testdst/test_file.bin testdst/test_file.bin
6492
6519
  files download --transfer=connect testdst/test_file.bin
6493
6520
  files download --transfer=desktop testdst/test_file.bin
6494
- files find /
6495
- files find / '\.partial$'
6496
- files find / @ruby:'->(f){f["type"].eql?("file")}'
6521
+ files find /sample_video
6522
+ files find /sample_video '\.partial$'
6523
+ files find /sample_video @ruby:'->(f){f["type"].eql?("file")}'
6497
6524
  files mkdir /testsrc
6498
6525
  files modify /some_folder @json:'{"mount_point":false}'
6499
6526
  files permission my_test_folder list
@@ -6513,15 +6540,15 @@ files upload --to-folder=/ test_file.bin --url=my_public_link_folder_no_pass
6513
6540
  files upload --to-folder=/testsrc test_file.bin
6514
6541
  files upload --to-folder=/testsrc test_file.bin test_file.bin
6515
6542
  files v3 info
6516
- gateway @json:'{"url":"https://localhost:12345/aspera/faspex"}'
6543
+ gateway @json:'{"url":"https://localhost:12346/aspera/faspex"}'
6517
6544
  organization
6518
6545
  organization --format=image --fields=background_image_url --ui=text
6519
6546
  organization --url=my_public_link_recv_from_aoc_user
6520
6547
  packages browse package_id3 /
6521
6548
  packages list
6522
6549
  packages list --query=@json:'{"dropbox_name":"my_shared_inbox_name","sort":"-received_at","archived":false,"received":true,"has_content":true,"exclude_dropbox_packages":false}'
6523
- packages receive ALL --once-only=yes --to-folder=. --lock-port=12345 --package-folder.fld.0=name --package-folder.fld.1=id --package-folder.opt=true
6524
- packages receive ALL --once-only=yes --to-folder=. --lock-port=12345 --query=@json:'{"dropbox_name":"my_shared_inbox_name","archived":false,"received":true,"has_content":true,"exclude_dropbox_packages":false,"include_draft":false}' --ts=@json:'{"resume_policy":"sparse_csum","target_rate_kbps":50000}'
6550
+ packages receive ALL --once-only=yes --to-folder=. --lock-port=50101 --package-folder.fld.0=name --package-folder.fld.1=id --package-folder.opt=true
6551
+ packages receive ALL --once-only=yes --to-folder=. --lock-port=50101 --query=@json:'{"dropbox_name":"my_shared_inbox_name","archived":false,"received":true,"has_content":true,"exclude_dropbox_packages":false,"include_draft":false}' --ts=@json:'{"resume_policy":"sparse_csum","target_rate_kbps":50000}'
6525
6552
  packages receive INIT --once-only=yes --query=@json:'{"dropbox_name":"my_shared_inbox_name"}'
6526
6553
  packages receive package_id3 --to-folder=.
6527
6554
  packages receive package_id3 --to-folder=. /
@@ -6556,8 +6583,11 @@ ATS is usable either :
6556
6583
 
6557
6584
  ### IBM Cloud ATS : Creation of API key
6558
6585
 
6586
+ > [!NOTE]
6587
+ > If you are using ATS as part of AoC, then authentication is through AoC, not IBM Cloud.
6588
+ > Refer to the AoC section instead.
6589
+
6559
6590
  This section is about using ATS with an IBM cloud subscription.
6560
- If you are using ATS as part of AoC, then authentication is through AoC, not IBM Cloud.
6561
6591
 
6562
6592
  First get your IBM Cloud API key.
6563
6593
  For instance, it can be created using the IBM Cloud web interface, or using command line:
@@ -6750,7 +6780,7 @@ upload --sources=@ts --ts=@json:'{"paths":[{"source":"test_file.bin","destinatio
6750
6780
  upload --src-type=pair --sources=@json:'["test_file.bin","my_inside_folder/other_name_3"]' --transfer-info.quiet=false --progress=no
6751
6781
  upload --src-type=pair test_file.bin my_inside_folder/other_name_2 --notify-to=my_email_external '--transfer-info.ascp_args=@list: -l 100m'
6752
6782
  upload --src-type=pair test_file.bin my_upload_folder/other_name_5 --ts=@json:'{"cipher":"aes-192-gcm","content_protection":"encrypt","content_protection_password":"my_secret_here","cookie":"biscuit","create_dir":true,"delete_before_transfer":false,"delete_source":false,"exclude_newer_than":"-1","exclude_older_than":"-10000","fasp_port":33001,"http_fallback":false,"multi_session":0,"overwrite":"diff+older","precalculate_job_size":true,"preserve_access_time":true,"preserve_creation_time":true,"rate_policy":"fair","resume_policy":"sparse_csum"}'
6753
- upload --to-folder=my_upload_folder/target_hot --lock-port=12345 --transfer-info=@json:'{"ascp_args":["--remove-after-transfer","--remove-empty-directories","--exclude-newer-than=-8","--src-base","hot_folder"]}' hot_folder
6783
+ upload --to-folder=my_upload_folder/target_hot --lock-port=50101 --transfer-info=@json:'{"ascp_args":["--remove-after-transfer","--remove-empty-directories","--exclude-newer-than=-8","--src-base","hot_folder"]}' hot_folder
6754
6784
  upload test_file.bin --to-folder=my_inside_folder --ts=@json:'{"multi_session":3,"multi_session_threshold":1,"resume_policy":"none","target_rate_kbps":100000}' --transfer-info=@json:'{"spawn_delay_sec":2.5,"multi_incr_udp":false}' --progress-bar=yes
6755
6785
  ```
6756
6786
 
@@ -7298,20 +7328,21 @@ ascli node -N --url=https://... --password="Bearer $(cat bearer.txt)" --root-id=
7298
7328
  --url=https://tst.example.com/path --password='Bearer node_bearer_token' --root-id=bearer_root_id access_key do self browse /
7299
7329
  access_key create @json:'{"id":"my_username","secret":"my_password_here","storage":{"type":"local","path":"/"}}'
7300
7330
  access_key delete my_username
7301
- access_key do my_ak_name browse /
7302
- access_key do my_ak_name delete /test_nd_ak2
7303
- access_key do my_ak_name delete test_nd_ak3
7304
- access_key do my_ak_name download test_nd_ak3 --to-folder=.
7305
- access_key do my_ak_name find my_test_folder
7306
- access_key do my_ak_name find my_test_folder @re:'\.jpg$'
7331
+ access_key do my_ak_name browse / --secret=my_ak_secret
7332
+ access_key do my_ak_name delete /test_nd_ak2 --secret=my_ak_secret
7333
+ access_key do my_ak_name delete test_nd_ak3 --secret=my_ak_secret
7334
+ access_key do my_ak_name download test_nd_ak3 --to-folder=. --secret=my_ak_secret
7335
+ access_key do my_ak_name find my_test_folder --secret=my_ak_secret
7336
+ access_key do my_ak_name find my_test_folder @re:'\.jpg$' --secret=my_ak_secret
7307
7337
  access_key do my_ak_name find my_test_folder @ruby:'->(f){f["name"].end_with?(".jpg")}'
7308
- access_key do my_ak_name mkdir /tst_nd_ak
7309
- access_key do my_ak_name mkfile /mkfile.txt 'hello world'
7310
- access_key do my_ak_name mklink /mklink.txt --query=@json:'{"target":"/mkfile.txt","target_node_id":"123"}'
7311
- access_key do my_ak_name node_info /
7312
- access_key do my_ak_name rename /tst_nd_ak test_nd_ak2
7313
- access_key do my_ak_name show %id:1
7314
- access_key do my_ak_name upload 'faux:///test_nd_ak3?100k' --default-ports=no
7338
+ --secret=my_ak_secret
7339
+ access_key do my_ak_name mkdir /tst_nd_ak --secret=my_ak_secret
7340
+ access_key do my_ak_name mkfile /mkfile.txt 'hello world' --secret=my_ak_secret
7341
+ access_key do my_ak_name mklink /mklink.txt --query=@json:'{"target":"/mkfile.txt","target_node_id":"123"}' --secret=my_ak_secret
7342
+ access_key do my_ak_name node_info / --secret=my_ak_secret
7343
+ access_key do my_ak_name rename /tst_nd_ak test_nd_ak2 --secret=my_ak_secret
7344
+ access_key do my_ak_name show %id:1 --secret=my_ak_secret
7345
+ access_key do my_ak_name upload 'faux:///test_nd_ak3?100k' --default-ports=no --secret=my_ak_secret
7315
7346
  access_key do self permission %id:bearer_root_id create @json:'{"access_type":"user","access_id":"666"}'
7316
7347
  access_key do self permission / delete 1
7317
7348
  access_key do self permission / show 1
@@ -16,15 +16,18 @@ module Aspera
16
16
  Aspera::Agent.const_get(agent.to_s.capitalize).new(**options)
17
17
  end
18
18
 
19
- # Discover available agents
20
- # @return [Array] list of symbols of agents
21
- def list
19
+ IGNORED_ITEMS = %i[factory base]
20
+ # Available agents: :long : Capitalized name string, :short : single character symbol
21
+ ALL =
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
- end
27
- IGNORED_ITEMS = %i[factory base]
25
+ .reject{ |item| IGNORED_ITEMS.include?(item)}.each_with_object({}) do |agent_sym, hash|
26
+ hash[agent_sym] = {
27
+ long: agent_sym.to_s.capitalize,
28
+ short: agent_sym.eql?(:direct) ? :a : agent_sym.to_s[0].to_sym
29
+ }.freeze
30
+ end.freeze
28
31
  private_constant :IGNORED_ITEMS
29
32
  end
30
33
  end
@@ -21,10 +21,10 @@ module Aspera
21
21
 
22
22
  private_constant :LOCAL_SOCKET_ADDR, :PORT_SEP, :AUTO_LOCAL_TCP_PORT
23
23
 
24
- # @param url [String] URL of the transfer manager daemon
25
- # @param start [Bool] if false, expect that an external daemon is already running
26
- # @param stop [Bool] if false, do not shutdown daemon on exit
27
- # @param base [Hash] base class options
24
+ # @param url [String] URL of the transfer manager daemon
25
+ # @param start [Boolean] If `false`, expect that an external daemon is already running
26
+ # @param stop [Boolean] If `false`, do not shutdown daemon on exit
27
+ # @param base [Hash] Base class options
28
28
  def initialize(
29
29
  url: AUTO_LOCAL_TCP_PORT,
30
30
  start: true,