aspera-cli 4.18.1 → 4.19.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.
- checksums.yaml +4 -4
 - checksums.yaml.gz.sig +0 -0
 - data/CHANGELOG.md +13 -0
 - data/CONTRIBUTING.md +5 -12
 - data/README.md +60 -29
 - data/examples/build_exec +85 -0
 - data/lib/aspera/agent/base.rb +2 -0
 - data/lib/aspera/agent/direct.rb +108 -104
 - data/lib/aspera/api/aoc.rb +2 -2
 - data/lib/aspera/api/httpgw.rb +91 -56
 - data/lib/aspera/ascp/installation.rb +47 -32
 - data/lib/aspera/ascp/management.rb +4 -1
 - data/lib/aspera/ascp/products.rb +1 -7
 - data/lib/aspera/cli/formatter.rb +24 -18
 - data/lib/aspera/cli/manager.rb +10 -10
 - data/lib/aspera/cli/plugin.rb +2 -2
 - data/lib/aspera/cli/plugin_factory.rb +10 -1
 - data/lib/aspera/cli/plugins/config.rb +15 -10
 - data/lib/aspera/cli/plugins/node.rb +4 -3
 - data/lib/aspera/cli/plugins/server.rb +1 -1
 - data/lib/aspera/cli/plugins/shares.rb +11 -7
 - data/lib/aspera/cli/sync_actions.rb +72 -31
 - data/lib/aspera/cli/transfer_agent.rb +1 -0
 - data/lib/aspera/cli/transfer_progress.rb +1 -1
 - data/lib/aspera/cli/version.rb +1 -1
 - data/lib/aspera/environment.rb +43 -10
 - data/lib/aspera/faspex_gw.rb +1 -1
 - data/lib/aspera/keychain/encrypted_hash.rb +2 -0
 - data/lib/aspera/log.rb +1 -0
 - data/lib/aspera/node_simulator.rb +1 -1
 - data/lib/aspera/oauth/jwt.rb +1 -1
 - data/lib/aspera/oauth/url_json.rb +2 -0
 - data/lib/aspera/oauth/web.rb +5 -4
 - data/lib/aspera/secret_hider.rb +3 -2
 - data/lib/aspera/ssh.rb +1 -1
 - data/lib/aspera/transfer/faux_file.rb +7 -5
 - data/lib/aspera/transfer/parameters.rb +27 -19
 - data/lib/aspera/transfer/spec.rb +8 -10
 - data/lib/aspera/transfer/sync.rb +52 -47
 - data/lib/aspera/web_auth.rb +0 -1
 - data/lib/aspera/web_server_simple.rb +24 -13
 - data.tar.gz.sig +0 -0
 - metadata +3 -3
 - metadata.gz.sig +0 -0
 - data/examples/rubyc +0 -24
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA256:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: 89df3ebc2bf7a146a16e59154a73efcfc2e11f7767aba28725f9443de04772b7
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 33469a2bc4991b106ab3002927e823f280c016fc070a2bdcbb3edb286506041d
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: d57c69a340b866cfe5c3003c94ecb3ebc8c61aba7011ee4b8683da60d9615dd060fb94ac153e16eb98bd11f7dfa1deb117b1ca2ecd5bfe5d46e5a390ec290a01
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: fa364474177bc6d2f648474b1eed12b45733e84a5d4896d3075225ed1212aed27f64725ba38a400a3f9c5da2e7e2acf46d6a41164e5d92c1e2ce3a94498c5401
         
     | 
    
        checksums.yaml.gz.sig
    CHANGED
    
    | 
         Binary file 
     | 
    
        data/CHANGELOG.md
    CHANGED
    
    | 
         @@ -1,6 +1,19 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            # Changes (Release notes)
         
     | 
| 
       2 
2 
     | 
    
         | 
| 
      
 3 
     | 
    
         
            +
            * 4.19.0
         
     | 
| 
      
 4 
     | 
    
         
            +
              * New Features:
         
     | 
| 
      
 5 
     | 
    
         
            +
                * `server`: add support for `async` (Aspera Sync) from Transfer SDK
         
     | 
| 
      
 6 
     | 
    
         
            +
                * **global**: #156 support sending folders with httpgw
         
     | 
| 
      
 7 
     | 
    
         
            +
                * **global**: new value for option `format`: `multi`
         
     | 
| 
      
 8 
     | 
    
         
            +
              * Issues Fixed:
         
     | 
| 
      
 9 
     | 
    
         
            +
                * `aoc`: #157 fix problem with `files browse` on a link
         
     | 
| 
      
 10 
     | 
    
         
            +
                * `sync`: better documentation and handling of options.
         
     | 
| 
      
 11 
     | 
    
         
            +
              * Breaking Changes:
         
     | 
| 
      
 12 
     | 
    
         
            +
                * **global**: Default value for direct agent option `transfer_info.multi_incr_udp` is `true` on Windows, and now `false` on other platforms.
         
     | 
| 
      
 13 
     | 
    
         
            +
                * **global**: Token based transfers now use the RSA key only. Direct agent option `transfer_info.client_ssh_key` allows changing this behavior.
         
     | 
| 
      
 14 
     | 
    
         
            +
              
         
     | 
| 
       3 
15 
     | 
    
         
             
            * 4.18.1
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
       4 
17 
     | 
    
         
             
              * New Features:
         
     | 
| 
       5 
18 
     | 
    
         
             
                * none
         
     | 
| 
       6 
19 
     | 
    
         
             
              * Issues Fixed:
         
     | 
    
        data/CONTRIBUTING.md
    CHANGED
    
    | 
         @@ -228,7 +228,7 @@ Then procedure is as follows: 
     | 
|
| 
       228 
228 
     | 
    
         | 
| 
       229 
229 
     | 
    
         
             
            ## Docker image build
         
     | 
| 
       230 
230 
     | 
    
         | 
| 
       231 
     | 
    
         
            -
            The Dockerfile template allows  
     | 
| 
      
 231 
     | 
    
         
            +
            The `Dockerfile.tmpl.erb` template allows customization of the optional copying of the `aspera-cli.gem` file, as opposed to installing from rubygems.org. It also supports customizing the retrieval of the SDK.
         
     | 
| 
       232 
232 
     | 
    
         | 
| 
       233 
233 
     | 
    
         
             
            ### Default image build
         
     | 
| 
       234 
234 
     | 
    
         | 
| 
         @@ -278,19 +278,11 @@ make docker_push_beta 
     | 
|
| 
       278 
278 
     | 
    
         | 
| 
       279 
279 
     | 
    
         
             
            ## Single executable build
         
     | 
| 
       280 
280 
     | 
    
         | 
| 
       281 
     | 
    
         
            -
             
     | 
| 
      
 281 
     | 
    
         
            +
            Initially, `rubyc` (gem [`ruby-packer`](https://github.com/pmq20/ruby-packer) and [here](https://github.com/you54f/ruby-packer)) was used to build a single executable.
         
     | 
| 
       282 
282 
     | 
    
         | 
| 
       283 
     | 
    
         
            -
             
     | 
| 
       284 
     | 
    
         
            -
            make single
         
     | 
| 
       285 
     | 
    
         
            -
            ```
         
     | 
| 
       286 
     | 
    
         
            -
             
     | 
| 
       287 
     | 
    
         
            -
            This is based on tool `rubyc` (gem `ruby-packer`): either place the executable in folder `tmp`, or the architecture-specific version will be automatically downloaded.
         
     | 
| 
      
 283 
     | 
    
         
            +
            https://www.tebako.org/
         
     | 
| 
       288 
284 
     | 
    
         | 
| 
       289 
     | 
    
         
            -
             
     | 
| 
       290 
     | 
    
         
            -
             
     | 
| 
       291 
     | 
    
         
            -
            ```bash
         
     | 
| 
       292 
     | 
    
         
            -
            sudo dnf install -y perl perl-FindBin perl-IPC-Cmd
         
     | 
| 
       293 
     | 
    
         
            -
            ```
         
     | 
| 
      
 285 
     | 
    
         
            +
            A modern version of this is now used: [`tebako`](https://github.com/tamatebako/tebako) for which a container is provided.
         
     | 
| 
       294 
286 
     | 
    
         | 
| 
       295 
287 
     | 
    
         
             
            ## Long Term Implementation and delivery improvements
         
     | 
| 
       296 
288 
     | 
    
         | 
| 
         @@ -299,3 +291,4 @@ sudo dnf install -y perl perl-FindBin perl-IPC-Cmd 
     | 
|
| 
       299 
291 
     | 
    
         
             
              - <https://github.com/oauth-xx/oauth2>
         
     | 
| 
       300 
292 
     | 
    
         
             
            - use gem Thor <http://whatisthor.com/> (or other standard Ruby CLI manager)
         
     | 
| 
       301 
293 
     | 
    
         
             
            - Package a single-file executable for various architectures with <https://github.com/pmq20/ruby-packer> (`rubyc`)
         
     | 
| 
      
 294 
     | 
    
         
            +
            - look at <https://github.com/phusion/traveling-ruby>
         
     | 
    
        data/README.md
    CHANGED
    
    | 
         @@ -10,7 +10,7 @@ 
     | 
|
| 
       10 
10 
     | 
    
         | 
| 
       11 
11 
     | 
    
         
             
            ## Introduction
         
     | 
| 
       12 
12 
     | 
    
         | 
| 
       13 
     | 
    
         
            -
            Version : 4. 
     | 
| 
      
 13 
     | 
    
         
            +
            Version : 4.19.0
         
     | 
| 
       14 
14 
     | 
    
         | 
| 
       15 
15 
     | 
    
         
             
            Laurent/2016-2024
         
     | 
| 
       16 
16 
     | 
    
         | 
| 
         @@ -92,7 +92,7 @@ Once the gem is installed, `ascli` shall be accessible: 
     | 
|
| 
       92 
92 
     | 
    
         | 
| 
       93 
93 
     | 
    
         
             
            ```console
         
     | 
| 
       94 
94 
     | 
    
         
             
            $ ascli --version
         
     | 
| 
       95 
     | 
    
         
            -
            4. 
     | 
| 
      
 95 
     | 
    
         
            +
            4.19.0
         
     | 
| 
       96 
96 
     | 
    
         
             
            ```
         
     | 
| 
       97 
97 
     | 
    
         | 
| 
       98 
98 
     | 
    
         
             
            ### First use
         
     | 
| 
         @@ -706,7 +706,7 @@ ascli -v 
     | 
|
| 
       706 
706 
     | 
    
         
             
            ```
         
     | 
| 
       707 
707 
     | 
    
         | 
| 
       708 
708 
     | 
    
         
             
            ```text
         
     | 
| 
       709 
     | 
    
         
            -
            4. 
     | 
| 
      
 709 
     | 
    
         
            +
            4.19.0
         
     | 
| 
       710 
710 
     | 
    
         
             
            ```
         
     | 
| 
       711 
711 
     | 
    
         | 
| 
       712 
712 
     | 
    
         
             
            In order to keep persistency of configuration on the host, you should specify your user's configuration folder as a volume for the container.
         
     | 
| 
         @@ -1497,6 +1497,7 @@ If transposition of single object is not desired, use option: `transpose_single` 
     | 
|
| 
       1497 
1497 
     | 
    
         
             
            The style of output can be set using the `format` option, supporting:
         
     | 
| 
       1498 
1498 
     | 
    
         | 
| 
       1499 
1499 
     | 
    
         
             
            - `table` : Text table (default)
         
     | 
| 
      
 1500 
     | 
    
         
            +
            - `multi` : List of elements are displayed as a list of tables
         
     | 
| 
       1500 
1501 
     | 
    
         
             
            - `text` : Value as String
         
     | 
| 
       1501 
1502 
     | 
    
         
             
            - `ruby` : Ruby code
         
     | 
| 
       1502 
1503 
     | 
    
         
             
            - `json` : JSON code
         
     | 
| 
         @@ -1924,7 +1925,8 @@ ascp use /usr/bin/ascp 
     | 
|
| 
       1924 
1925 
     | 
    
         
             
            check_update
         
     | 
| 
       1925 
1926 
     | 
    
         
             
            coffee
         
     | 
| 
       1926 
1927 
     | 
    
         
             
            coffee --ui=text
         
     | 
| 
       1927 
     | 
    
         
            -
            coffee --ui=text -- 
     | 
| 
      
 1928 
     | 
    
         
            +
            coffee --ui=text --image=@json:'{"text":true,"double":false}'
         
     | 
| 
      
 1929 
     | 
    
         
            +
            coffee --ui=text --image=@json:'{"text":true}'
         
     | 
| 
       1928 
1930 
     | 
    
         
             
            detect https://faspex4.example.com/path
         
     | 
| 
       1929 
1931 
     | 
    
         
             
            detect https://faspex5.example.com/path
         
     | 
| 
       1930 
1932 
     | 
    
         
             
            detect https://node.example.com/path
         
     | 
| 
         @@ -2745,19 +2747,21 @@ Refer to section [FASP](#fasp-configuration). 
     | 
|
| 
       2745 
2747 
     | 
    
         | 
| 
       2746 
2748 
     | 
    
         
             
            The `transfer_info` option accepts the following optional parameters to control multi-session, Web Socket Session, Resume policy and add any argument to `ascp`:
         
     | 
| 
       2747 
2749 
     | 
    
         | 
| 
       2748 
     | 
    
         
            -
            | Name                   | Type 
     | 
| 
       2749 
     | 
    
         
            -
             
     | 
| 
       2750 
     | 
    
         
            -
            | `wss`                  | Bool 
     | 
| 
       2751 
     | 
    
         
            -
            | ` 
     | 
| 
       2752 
     | 
    
         
            -
            | ` 
     | 
| 
       2753 
     | 
    
         
            -
            | ` 
     | 
| 
       2754 
     | 
    
         
            -
            | ` 
     | 
| 
       2755 
     | 
    
         
            -
            | ` 
     | 
| 
       2756 
     | 
    
         
            -
            | ` 
     | 
| 
       2757 
     | 
    
         
            -
            | ` 
     | 
| 
       2758 
     | 
    
         
            -
            | `resume 
     | 
| 
       2759 
     | 
    
         
            -
            | `resume. 
     | 
| 
       2760 
     | 
    
         
            -
            | `resume. 
     | 
| 
      
 2750 
     | 
    
         
            +
            | Name                   | Type    | Description |
         
     | 
| 
      
 2751 
     | 
    
         
            +
            |------------------------|---------|-------------|
         
     | 
| 
      
 2752 
     | 
    
         
            +
            | `wss`                  | Bool    | Web Socket Session<br/>Enable use of web socket session in case it is available<br/>Default: true |
         
     | 
| 
      
 2753 
     | 
    
         
            +
            | `quiet`                | Bool    | If `true`, then `ascp` progress bar is not shown.<br/>Default: `false` |
         
     | 
| 
      
 2754 
     | 
    
         
            +
            | `trusted_certs`        | Array   | List of repositories for trusted certificates. |
         
     | 
| 
      
 2755 
     | 
    
         
            +
            | `client_ssh_key`       | String  | SSH Keys to use for token-based transfers. One of: `dsa_rsa`, `rsa`, `per_client`. Default: `rsa` |
         
     | 
| 
      
 2756 
     | 
    
         
            +
            | `ascp_args`            | Array   | Array of strings with native `ascp` arguments.<br/>Default: `[]` |
         
     | 
| 
      
 2757 
     | 
    
         
            +
            | `spawn_timeout_sec`    | Float   | Multi session<br/>Verification time that `ascp` is running<br/>Default: `3` |
         
     | 
| 
      
 2758 
     | 
    
         
            +
            | `spawn_delay_sec`      | Float   | Multi session<br/>Delay between startup of sessions<br/>Default: `2` |
         
     | 
| 
      
 2759 
     | 
    
         
            +
            | `multi_incr_udp`       | Bool    | Multi Session<br/>Increment UDP port on multi-session<br/>If `true`, each session will have a different UDP port starting at `fasp_port` (or default 33001)<br/>Else, each session will use `fasp_port` (or `ascp` default)<br/>Default: `true` on Windows, else `false` |
         
     | 
| 
      
 2760 
     | 
    
         
            +
            | `resume`               | Hash    | Resume parameters. See below |
         
     | 
| 
      
 2761 
     | 
    
         
            +
            | `resume.iter_max`      | Integer | Max number of retry on error<br/>Default: `7` |
         
     | 
| 
      
 2762 
     | 
    
         
            +
            | `resume.sleep_initial` | Integer | First Sleep before retry<br/>Default: `2` |
         
     | 
| 
      
 2763 
     | 
    
         
            +
            | `resume.sleep_factor`  | Integer | Multiplier of sleep period between attempts<br/>Default: `2` |
         
     | 
| 
      
 2764 
     | 
    
         
            +
            | `resume.sleep_max`     | Integer | Default: `60` |
         
     | 
| 
       2761 
2765 
     | 
    
         | 
| 
       2762 
2766 
     | 
    
         
             
            In case of transfer interruption, the agent will **resume** a transfer up to `iter_max` time.
         
     | 
| 
       2763 
2767 
     | 
    
         
             
            Sleep between iterations is given by the following formula where `iter_index` is the current iteration index, starting at 0:
         
     | 
| 
         @@ -2767,7 +2771,7 @@ max( sleep_max , sleep_initial * sleep_factor ^ iter_index ) 
     | 
|
| 
       2767 
2771 
     | 
    
         
             
            ```
         
     | 
| 
       2768 
2772 
     | 
    
         | 
| 
       2769 
2773 
     | 
    
         
             
            By default, Ruby's root CA store is used to validate any HTTPS endpoint used by `ascp` (e.g. WSS).
         
     | 
| 
       2770 
     | 
    
         
            -
            In order to use a custom certificate store, use the `trusted_certs` option 
     | 
| 
      
 2774 
     | 
    
         
            +
            In order to use a custom certificate store, use the `trusted_certs` option of direct agent's option `transfer_info`.
         
     | 
| 
       2771 
2775 
     | 
    
         
             
            To use `ascp`'s default, use option: `--transfer-info=@json:'{"trusted_certs":null}'`.
         
     | 
| 
       2772 
2776 
     | 
    
         | 
| 
       2773 
2777 
     | 
    
         
             
            Some transfer errors are considered **retry-able** (e.g. timeout) and some other not (e.g. wrong password).
         
     | 
| 
         @@ -3561,7 +3565,7 @@ ascli server upload "faux:///mydir?file=testfile&count=1m&size=0&inc=2&seq=seque 
     | 
|
| 
       3561 
3565 
     | 
    
         
             
            ```text
         
     | 
| 
       3562 
3566 
     | 
    
         
             
            ascli -h
         
     | 
| 
       3563 
3567 
     | 
    
         
             
            NAME
         
     | 
| 
       3564 
     | 
    
         
            -
                    ascli -- a command line tool for Aspera Applications (v4. 
     | 
| 
      
 3568 
     | 
    
         
            +
                    ascli -- a command line tool for Aspera Applications (v4.19.0)
         
     | 
| 
       3565 
3569 
     | 
    
         | 
| 
       3566 
3570 
     | 
    
         
             
            SYNOPSIS
         
     | 
| 
       3567 
3571 
     | 
    
         
             
                    ascli COMMANDS [OPTIONS] [ARGS]
         
     | 
| 
         @@ -3593,7 +3597,7 @@ OPTIONS: global 
     | 
|
| 
       3593 
3597 
     | 
    
         
             
                    --interactive=ENUM           Use interactive input of missing params: [no], yes
         
     | 
| 
       3594 
3598 
     | 
    
         
             
                    --ask-options=ENUM           Ask even optional options: [no], yes
         
     | 
| 
       3595 
3599 
     | 
    
         
             
                    --struct-parser=ENUM         Default parser when expected value is a struct: json, ruby
         
     | 
| 
       3596 
     | 
    
         
            -
                    --format=ENUM                Output format: text, nagios, ruby, json, jsonpp, yaml, [table], csv, image
         
     | 
| 
      
 3600 
     | 
    
         
            +
                    --format=ENUM                Output format: text, nagios, ruby, json, jsonpp, yaml, [table], multi, csv, image
         
     | 
| 
       3597 
3601 
     | 
    
         
             
                    --output=VALUE               Destination for results (String)
         
     | 
| 
       3598 
3602 
     | 
    
         
             
                    --display=ENUM               Output only some information: [info], data, error
         
     | 
| 
       3599 
3603 
     | 
    
         
             
                    --fields=VALUE               Comma separated list of: fields, or ALL, or DEF (String, Array, Regexp, Proc)
         
     | 
| 
         @@ -3617,7 +3621,7 @@ OPTIONS: global 
     | 
|
| 
       3617 
3621 
     | 
    
         
             
                    --pid-file=VALUE             Write process identifier to file, delete on exit (String)
         
     | 
| 
       3618 
3622 
     | 
    
         | 
| 
       3619 
3623 
     | 
    
         
             
            COMMAND: config
         
     | 
| 
       3620 
     | 
    
         
            -
            SUBCOMMANDS: ascp check_update coffee detect documentation echo email_test file flush_tokens folder gem genkey image initdemo open plugins preset proxy_check pubkey remote_certificate smtp_settings throw vault wizard
         
     | 
| 
      
 3624 
     | 
    
         
            +
            SUBCOMMANDS: ascp check_update coffee detect documentation echo email_test file flush_tokens folder gem genkey image initdemo open platform plugins preset proxy_check pubkey remote_certificate smtp_settings throw vault wizard
         
     | 
| 
       3621 
3625 
     | 
    
         
             
            OPTIONS:
         
     | 
| 
       3622 
3626 
     | 
    
         
             
                    --home=VALUE                 Home folder for tool (String)
         
     | 
| 
       3623 
3627 
     | 
    
         
             
                    --config-file=VALUE          Path to YAML file with preset configuration
         
     | 
| 
         @@ -5061,8 +5065,11 @@ files show / 
     | 
|
| 
       5061 
5065 
     | 
    
         
             
            files show testdst/test_file.bin
         
     | 
| 
       5062 
5066 
     | 
    
         
             
            files sync admin status --sync-info=@json:'{"name":"my_aoc_sync2","reset":true,"direction":"pull","local":{"path":"/data/local_sync"},"remote":{"path":"/testdst"}}'
         
     | 
| 
       5063 
5067 
     | 
    
         
             
            files sync admin status --sync-info=@json:'{"sessions":[{"name":"my_aoc_sync1","direction":"pull","local_dir":"/data/local_sync","remote_dir":"/testdst","reset":true}]}'
         
     | 
| 
      
 5068 
     | 
    
         
            +
            files sync start --sync-info=@json:'{"name":"my_aoc_sync1","reset":true,"direction":"pull","local":{"path":"/data/local_sync"},"remote":{"path":"/testdst"}}'
         
     | 
| 
       5064 
5069 
     | 
    
         
             
            files sync start --sync-info=@json:'{"name":"my_aoc_sync2","reset":true,"direction":"pull","local":{"path":"/data/local_sync"},"remote":{"path":"/testdst"}}'
         
     | 
| 
       5065 
5070 
     | 
    
         
             
            files sync start --sync-info=@json:'{"sessions":[{"name":"my_aoc_sync1","direction":"pull","local_dir":"/data/local_sync","remote_dir":"/testdst","reset":true}]}'
         
     | 
| 
      
 5071 
     | 
    
         
            +
            files sync start pull /testdst /data/local_sync --sync-info=@json:'{"reset":true,"quiet":false}'
         
     | 
| 
      
 5072 
     | 
    
         
            +
            files sync start pull /testdst /data/local_sync --sync-info=@json:'{"sessions":[{"reset":true}]}'
         
     | 
| 
       5066 
5073 
     | 
    
         
             
            files thumbnail my_test_folder/video_file.mpg
         
     | 
| 
       5067 
5074 
     | 
    
         
             
            files thumbnail my_test_folder/video_file.mpg --query=@json:'{"text":true,"double":true}'
         
     | 
| 
       5068 
5075 
     | 
    
         
             
            files transfer push /testsrc --to-folder=/testdst test_file.bin
         
     | 
| 
         @@ -5830,8 +5837,8 @@ ssync summary %name:my_node_sync 
     | 
|
| 
       5830 
5837 
     | 
    
         
             
            stream list
         
     | 
| 
       5831 
5838 
     | 
    
         
             
            sync admin status --sync-info=@json:'{"name":"my_node_sync2","reset":true,"direction":"pull","local":{"path":"/data/local_sync"},"remote":{"path":"/aspera-test-dir-tiny"}}'
         
     | 
| 
       5832 
5839 
     | 
    
         
             
            sync admin status --sync-info=@json:'{"sessions":[{"name":"my_node_sync1","direction":"pull","local_dir":"/data/local_sync","remote_dir":"/aspera-test-dir-tiny","reset":true}]}'
         
     | 
| 
      
 5840 
     | 
    
         
            +
            sync start --sync-info=@json:'{"name":"my_node_sync1","reset":true,"quiet":false,"direction":"pull","local":{"path":"/data/local_sync"},"remote":{"path":"/aspera-test-dir-tiny"}}'
         
     | 
| 
       5833 
5841 
     | 
    
         
             
            sync start --sync-info=@json:'{"name":"my_node_sync2","reset":true,"direction":"pull","local":{"path":"/data/local_sync"},"remote":{"path":"/aspera-test-dir-tiny"}}'
         
     | 
| 
       5834 
     | 
    
         
            -
            sync start --sync-info=@json:'{"sessions":[{"name":"my_node_sync1","direction":"pull","local_dir":"/data/local_sync","remote_dir":"/aspera-test-dir-tiny","reset":true}]}'
         
     | 
| 
       5835 
5842 
     | 
    
         
             
            transfer list --query=@json:'{"active_only":true}'
         
     | 
| 
       5836 
5843 
     | 
    
         
             
            transfer sessions
         
     | 
| 
       5837 
5844 
     | 
    
         
             
            transport
         
     | 
| 
         @@ -7124,28 +7131,52 @@ An interface for the `async` utility is provided in the following plugins: 
     | 
|
| 
       7124 
7131 
     | 
    
         
             
            - `aoc files sync` (uses node)
         
     | 
| 
       7125 
7132 
     | 
    
         
             
            - `shares files sync` (uses node)
         
     | 
| 
       7126 
7133 
     | 
    
         | 
| 
       7127 
     | 
    
         
            -
             
     | 
| 
      
 7134 
     | 
    
         
            +
            One advantage over the `async` command line is the possibility to use a configuration file, using standard options of `ascli`.
         
     | 
| 
      
 7135 
     | 
    
         
            +
            Moreover `ascli` supports sync with application requiring token-based authorization.
         
     | 
| 
       7128 
7136 
     | 
    
         | 
| 
       7129 
     | 
    
         
            -
             
     | 
| 
      
 7137 
     | 
    
         
            +
            Some of the `sync` parameters are filled by the related plugin using transfer spec parameters (e.g. including token).
         
     | 
| 
       7130 
7138 
     | 
    
         | 
| 
       7131 
     | 
    
         
            -
            > **Note:** All `sync` commands require an `async` enabled license and availability of the `async` executable (and `asyncadmin`).
         
     | 
| 
      
 7139 
     | 
    
         
            +
            > **Note:** All `sync` commands require an `async` enabled license and availability of the `async` executable (and `asyncadmin`). The Transfer SDK 1.3 includes this.
         
     | 
| 
       7132 
7140 
     | 
    
         | 
| 
       7133 
     | 
    
         
            -
             
     | 
| 
      
 7141 
     | 
    
         
            +
            `sync` supports 0 or 3 arguments:
         
     | 
| 
       7134 
7142 
     | 
    
         | 
| 
       7135 
     | 
    
         
            -
             
     | 
| 
      
 7143 
     | 
    
         
            +
            - direction
         
     | 
| 
      
 7144 
     | 
    
         
            +
            - local folder
         
     | 
| 
      
 7145 
     | 
    
         
            +
            - remote folder
         
     | 
| 
      
 7146 
     | 
    
         
            +
             
     | 
| 
      
 7147 
     | 
    
         
            +
            Additional options can be provided with option `sync_info`, for which two syntax are possible, as follows.
         
     | 
| 
      
 7148 
     | 
    
         
            +
             
     | 
| 
      
 7149 
     | 
    
         
            +
            ### `async` API and conf format
         
     | 
| 
       7136 
7150 
     | 
    
         | 
| 
       7137 
7151 
     | 
    
         
             
            It is the same payload as specified on the option `--conf` of `async` or in node API `/asyncs`.
         
     | 
| 
       7138 
7152 
     | 
    
         
             
            This is the preferred syntax and allows a single session definition.
         
     | 
| 
       7139 
     | 
    
         
            -
             
     | 
| 
      
 7153 
     | 
    
         
            +
             
     | 
| 
      
 7154 
     | 
    
         
            +
            > **Note:** No progress, nor error messages is provided on terminal.
         
     | 
| 
       7140 
7155 
     | 
    
         | 
| 
       7141 
7156 
     | 
    
         
             
            Documentation on Async node API can be found on [IBM Developer Portal](https://developer.ibm.com/apis/catalog?search=%22aspera%20sync%20api%22).
         
     | 
| 
       7142 
7157 
     | 
    
         | 
| 
       7143 
     | 
    
         
            -
             
     | 
| 
      
 7158 
     | 
    
         
            +
            If 3 arguments are provided they are mapped to:
         
     | 
| 
      
 7159 
     | 
    
         
            +
             
     | 
| 
      
 7160 
     | 
    
         
            +
            - `direction`
         
     | 
| 
      
 7161 
     | 
    
         
            +
            - `local.path`
         
     | 
| 
      
 7162 
     | 
    
         
            +
            - `remote.path`
         
     | 
| 
      
 7163 
     | 
    
         
            +
             
     | 
| 
      
 7164 
     | 
    
         
            +
            ### `async` options mapping
         
     | 
| 
       7144 
7165 
     | 
    
         | 
| 
       7145 
7166 
     | 
    
         
             
            `ascli` defines a JSON equivalent to regular `async`options.
         
     | 
| 
       7146 
7167 
     | 
    
         
             
            It is based on a JSON representation of `async` command line options.
         
     | 
| 
       7147 
7168 
     | 
    
         
             
            It allows definition of multiple sync sessions in a single command, although usually only one sync session is defined.
         
     | 
| 
       7148 
7169 
     | 
    
         | 
| 
      
 7170 
     | 
    
         
            +
            This is the mode selection if there is either keys `sessions` or `instance` in option `sync_info`.
         
     | 
| 
      
 7171 
     | 
    
         
            +
             
     | 
| 
      
 7172 
     | 
    
         
            +
            > **Note:** Progress and error messages are provided on terminal like regular command line invocation of `async`.
         
     | 
| 
      
 7173 
     | 
    
         
            +
             
     | 
| 
      
 7174 
     | 
    
         
            +
            If 3 arguments are provided, they are applied to the first (and only) session and mapped to:
         
     | 
| 
      
 7175 
     | 
    
         
            +
             
     | 
| 
      
 7176 
     | 
    
         
            +
            - `direction`
         
     | 
| 
      
 7177 
     | 
    
         
            +
            - `local_dir`
         
     | 
| 
      
 7178 
     | 
    
         
            +
            - `remote_dir`
         
     | 
| 
      
 7179 
     | 
    
         
            +
             
     | 
| 
       7149 
7180 
     | 
    
         
             
            ## Hot folder
         
     | 
| 
       7150 
7181 
     | 
    
         | 
| 
       7151 
7182 
     | 
    
         
             
            ### Requirements
         
     | 
    
        data/examples/build_exec
    ADDED
    
    | 
         @@ -0,0 +1,85 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            #!/bin/bash
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            set -e
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            if test $# -ne 2; then
         
     | 
| 
      
 6 
     | 
    
         
            +
                echo "Usage: $0 <CLI_TARGET_EXECUTABLE> <CLI_ENTRY_SCRIPT>" 1>&2
         
     | 
| 
      
 7 
     | 
    
         
            +
                exit 1
         
     | 
| 
      
 8 
     | 
    
         
            +
            fi
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
            CLI_TARGET_EXECUTABLE=$1
         
     | 
| 
      
 11 
     | 
    
         
            +
            CLI_ENTRY_SCRIPT=$(realpath $2)
         
     | 
| 
      
 12 
     | 
    
         
            +
            CLI_EXEC_NAME=$(basename $CLI_TARGET_EXECUTABLE)
         
     | 
| 
      
 13 
     | 
    
         
            +
            CLI_ROOT=$(dirname $(dirname $CLI_ENTRY_SCRIPT))
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
            echo "Project folder: $CLI_ROOT"
         
     | 
| 
      
 16 
     | 
    
         
            +
            echo "Executable:     $CLI_TARGET_EXECUTABLE"
         
     | 
| 
      
 17 
     | 
    
         
            +
            echo "Exec Name:      $CLI_EXEC_NAME"
         
     | 
| 
      
 18 
     | 
    
         
            +
            echo "Entry:          $CLI_ENTRY_SCRIPT"
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
            # tebako press --root=$(TB_WORK_DIR) --entry-point=ascli --output=$(TB_WORK_DIR)/$(CLI_TARGET_EXECUTABLE) --Ruby=3.2.4
         
     | 
| 
      
 21 
     | 
    
         
            +
             
     | 
| 
      
 22 
     | 
    
         
            +
            if true;then
         
     | 
| 
      
 23 
     | 
    
         
            +
                tebako_command=tebako
         
     | 
| 
      
 24 
     | 
    
         
            +
                tebako_args="--root=$CLI_ROOT --entry-point=ascli --output=$CLI_TARGET_EXECUTABLE --Ruby=3.3.3"
         
     | 
| 
      
 25 
     | 
    
         
            +
                case $(uname -s) in
         
     | 
| 
      
 26 
     | 
    
         
            +
                    Darwin)
         
     | 
| 
      
 27 
     | 
    
         
            +
                        brew update
         
     | 
| 
      
 28 
     | 
    
         
            +
                        brew install gnu-sed bash pkg-config bison flex binutils libffi gdbm zlib \
         
     | 
| 
      
 29 
     | 
    
         
            +
                            ncurses double-conversion boost jemalloc  glog libevent libsodium lz4 xz \
         
     | 
| 
      
 30 
     | 
    
         
            +
                            libyaml openssl@3
         
     | 
| 
      
 31 
     | 
    
         
            +
                        # brew install m4
         
     | 
| 
      
 32 
     | 
    
         
            +
                        # boost fmt
         
     | 
| 
      
 33 
     | 
    
         
            +
                        #export PATH=$(dirname $(brew ls m4|grep '/m4$'|head -n 1)):$PATH
         
     | 
| 
      
 34 
     | 
    
         
            +
                        #export PATH=$(dirname $(brew ls binutils|grep '/ar$'|head -n 1)):$PATH
         
     | 
| 
      
 35 
     | 
    
         
            +
                        #tebako_bin=$CLI_ROOT/tmp/tbkbin
         
     | 
| 
      
 36 
     | 
    
         
            +
                        tebako_root=$CLI_ROOT/../tebako-tmp
         
     | 
| 
      
 37 
     | 
    
         
            +
                        #export PATH=$tebako_bin:$PATH
         
     | 
| 
      
 38 
     | 
    
         
            +
                        mkdir -p $tebako_root
         
     | 
| 
      
 39 
     | 
    
         
            +
                        #mkdir -p $tebako_bin
         
     | 
| 
      
 40 
     | 
    
         
            +
                        # need ar from apple
         
     | 
| 
      
 41 
     | 
    
         
            +
                        #rm -f $tebako_bin/ar
         
     | 
| 
      
 42 
     | 
    
         
            +
                        #ln -s /usr/bin/ar $tebako_bin
         
     | 
| 
      
 43 
     | 
    
         
            +
                        export PATH=$(echo $PATH|tr : \\n|grep -v /binutils/|tr \\n :)
         
     | 
| 
      
 44 
     | 
    
         
            +
                        #tebako setup --Ruby=3.3.4 --prefix=$tebako_root
         
     | 
| 
      
 45 
     | 
    
         
            +
                        tebako press --Ruby=3.3.4 --prefix=$tebako_root --root=$CLI_ROOT/examples/tebako --entry-point=ascli --output=$CLI_TARGET_EXECUTABLE
         
     | 
| 
      
 46 
     | 
    
         
            +
                        #tebako press --Ruby=3.3.4 --prefix=$tebako_root --root=$CLI_ROOT --entry-point=$CLI_ENTRY_SCRIPT --output=$CLI_TARGET_EXECUTABLE
         
     | 
| 
      
 47 
     | 
    
         
            +
                        exit 0
         
     | 
| 
      
 48 
     | 
    
         
            +
                        ;;
         
     | 
| 
      
 49 
     | 
    
         
            +
                    Linux)
         
     | 
| 
      
 50 
     | 
    
         
            +
                        work_dir=/mnt/w
         
     | 
| 
      
 51 
     | 
    
         
            +
                        tebako press --root=$work_dir --entry-point=ascli --output=$work_dir/ascli.exe --Ruby=3.3.3 
         
     | 
| 
      
 52 
     | 
    
         
            +
                        tebako_prefix="podman run -it --rm -v $PWD:$work_dir ghcr.io/tamatebako/tebako-ubuntu-20.04:0.8.6"
         
     | 
| 
      
 53 
     | 
    
         
            +
                        tebako_opts=--patchelf
         
     | 
| 
      
 54 
     | 
    
         
            +
                        ;;
         
     | 
| 
      
 55 
     | 
    
         
            +
                    *)
         
     | 
| 
      
 56 
     | 
    
         
            +
                        echo "This OS is not supported." >&2
         
     | 
| 
      
 57 
     | 
    
         
            +
                        exit 1
         
     | 
| 
      
 58 
     | 
    
         
            +
                        ;;
         
     | 
| 
      
 59 
     | 
    
         
            +
                esac
         
     | 
| 
      
 60 
     | 
    
         
            +
                command $tebako_command $tebako_args
         
     | 
| 
      
 61 
     | 
    
         
            +
            else
         
     | 
| 
      
 62 
     | 
    
         
            +
                # https://github.com/you54f/ruby-packer
         
     | 
| 
      
 63 
     | 
    
         
            +
                # https://github.com/YOU54F/ruby-packer/releases
         
     | 
| 
      
 64 
     | 
    
         
            +
                set -e
         
     | 
| 
      
 65 
     | 
    
         
            +
                FOLDER="$(dirname $0)/../tmp"
         
     | 
| 
      
 66 
     | 
    
         
            +
                RUBYC="$FOLDER/rubyc"
         
     | 
| 
      
 67 
     | 
    
         
            +
                if test ! -e "$RUBYC"; then
         
     | 
| 
      
 68 
     | 
    
         
            +
                    mkdir -p "$FOLDER"
         
     | 
| 
      
 69 
     | 
    
         
            +
                    case $(uname -sm|tr ' ' -) in
         
     | 
| 
      
 70 
     | 
    
         
            +
                        Darwin-arm64)
         
     | 
| 
      
 71 
     | 
    
         
            +
                            curl -L https://github.com/YOU54F/ruby-packer/releases/download/rel-20230812/rubyc-Darwin-arm64.tar.gz | tar -xz -C "$FOLDER"
         
     | 
| 
      
 72 
     | 
    
         
            +
                            mv "$FOLDER/rubyc-Darwin-arm64" "$RUBYC"
         
     | 
| 
      
 73 
     | 
    
         
            +
                            ;;
         
     | 
| 
      
 74 
     | 
    
         
            +
                        Linux-x86_64)
         
     | 
| 
      
 75 
     | 
    
         
            +
                            curl -L https://github.com/YOU54F/ruby-packer/releases/download/rel-20230812/rubyc-Linux-x86_64.tar.gz | tar -xz -C "$FOLDER"
         
     | 
| 
      
 76 
     | 
    
         
            +
                            mv "$FOLDER/rubyc-Linux-x86_64" "$RUBYC"
         
     | 
| 
      
 77 
     | 
    
         
            +
                            ;;
         
     | 
| 
      
 78 
     | 
    
         
            +
                        *)
         
     | 
| 
      
 79 
     | 
    
         
            +
                            echo "This architecture is not supported." >&2
         
     | 
| 
      
 80 
     | 
    
         
            +
                            exit 1
         
     | 
| 
      
 81 
     | 
    
         
            +
                            ;;
         
     | 
| 
      
 82 
     | 
    
         
            +
                    esac
         
     | 
| 
      
 83 
     | 
    
         
            +
                fi
         
     | 
| 
      
 84 
     | 
    
         
            +
                exec "$RUBYC" -o "$CLI_TARGET_EXECUTABLE" "$CLI_ENTRY_SCRIPT"
         
     | 
| 
      
 85 
     | 
    
         
            +
            fi
         
     | 
    
        data/lib/aspera/agent/base.rb
    CHANGED
    
    | 
         @@ -38,6 +38,8 @@ module Aspera 
     | 
|
| 
       38 
38 
     | 
    
         
             
                      end.map{|file|file[0..(-1 - RUBY_EXT.length)].to_sym}
         
     | 
| 
       39 
39 
     | 
    
         
             
                    end
         
     | 
| 
       40 
40 
     | 
    
         
             
                  end
         
     | 
| 
      
 41 
     | 
    
         
            +
             
     | 
| 
      
 42 
     | 
    
         
            +
                  # Wait for all sessions to terminate and return the status of each session
         
     | 
| 
       41 
43 
     | 
    
         
             
                  def wait_for_completion
         
     | 
| 
       42 
44 
     | 
    
         
             
                    # list of: :success or "error message string"
         
     | 
| 
       43 
45 
     | 
    
         
             
                    statuses = wait_for_transfers_completion
         
     |