aim 0.0.8

A command line download/upload tool with resume.
Documentation
aim-0.0.8 has been yanked.

aim

CI CD crates.io LoC

A command line download/upload tool with resume.

resume example

Why?

Simplicity: download or upload files depending on parameter order with default settings.

Features

  • default action implied from parameter order.

    • aim https://domain.com/ -> Display contents.
    • aim https://domain.com/source.file . -> Download.
    • aim source.file https://domain.com/source.file -> Upload.
  • resumable file transfers.

  • optional check of sha256 checksum:

    aim https://github.com/XAMPPRocky/tokei/releases/download/v12.0.4/tokei-x86_64-unknown-linux-gnu.tar.gz . 0e0f0d7139c8c7e3ff20cb243e94bc5993517d88e8be8d59129730607d5c631b
    
  • automatic no display of progressbar if content length <1MB (easy display contents of remote).

  • defaults to stdout (pipe-able) to other commands:

    aim https://github.com/XAMPPRocky/tokei/releases/download/v12.0.4/tokei-x86_64-unknown-linux-gnu.tar.gz | tar xvz
    aim https://www.rust-lang.org/ | htmlq --attribute href a
    
  • use as curl alternative:

    aim https://raw.githubusercontent.com/mihaigalos/aim/main/README.md
    
  • configurable indicators via indicatif: you can change the display template and progress chars by either setting correct environment variables or creating a .env file in the folder you are calling from:

    AIM_PROGRESSBAR_DOWNLOADED_MESSAGE="🎯 Downloaded {input} to {output}"
    AIM_PROGRESSBAR_MESSAGE_FORMAT="🎯 Transfering {url}"
    AIM_PROGRESSBAR_PROGRESS_CHARS="=>-"
    AIM_PROGRESSBAR_TEMPLATE="{msg}\n{spinner:.cyan}  {elapsed_precise} ▕{bar:.white}▏ {bytes}/{total_bytes}  {bytes_per_sec}  ETA {eta}."
    AIM_PROGRESSBAR_UPLOADED_MESSAGE="🎯 Uploaded {input} to {output}"
    

Resume

  • Download resume:
    • http
    • ftp
  • Upload resume:
    • http implemented but experimental. You need a webserver implementing PUT ranges (or a patched version of nginx). _test_aim_put_resume_binary_file should cover this case.
    • ftp

Authentication

Create a file named .netrc with read permissions in ~ or the current folder you're running aim from to automate login to that endpoint:

machine mydomain.com login myuser password mypass port server_port

Docker

For convenience, an alpine-based docker images for x64 and aarch64 are available, so arguments can be passed directly to them.

docker run --rm -it -v $(pwd):/src --user $UID:$UID mihaigalos/aim https://raw.githubusercontent.com/mihaigalos/aim/main/LICENSE.md

Similar work

duma, grapple, rget.