Skip to content

devmatteini/dra

Repository files navigation

DRA - Download Release Assets from GitHub

CI GitHub release (latest by date)

A command line tool to download release assets from GitHub.

Why should I use dra?InstallationUsageLicense

dra demo

Why should I use dra?

You can do everything dra does with the official GitHub cli.

dra helps you download release assets more easily:

Installation

dra is available on Linux (x86_64, armv6, arm64), macOS (x86_64, arm64) and Windows.

Prebuilt binaries

Download the prebuilt versions of dra for all supported platforms from the latest release.

Debian-based distributions

Download the latest .deb package from the release page and install it via:

sudo dpkg -i dra_x.y.z_amd64.deb # adapt version number

Arch Linux

dra can be installed from the community repository:

pacman -S dra

macOS/Linux with Homebrew

dra can be installed from Homebrew:

brew install dra

From source

git clone https://github.com/devmatteini/dra && cd dra
make release
./target/release/dra --version

Usage

Interactive download

Manually select and download an asset from a repository

dra download devmatteini/dra-tests

Non-Interactive download

This mode is useful to be used in automated scripts.

There are two modes to download assets: automatic and selection.

Automatic

Automatically select and download an asset based on your operating system and architecture

# you can use -a or --automatic
dra download -a devmatteini/dra-tests

Important

Since there is no naming convention for release assets, be aware that this mode may fail if no asset matches your system based on dra rules for recognizing an asset.

Selection

First, you need to generate an untagged asset name:

dra untag devmatteini/dra-tests
# output: helloworld_{tag}.tar.gz

Copy the output and run:

# use this command in your scripts
dra download --select "helloworld_{tag}.tar.gz" devmatteini/dra-tests

Download options

All dra-download options works with both interactive and non-interactive modes.

Select and download an asset to custom path

dra download --output /tmp/dra-example devmatteini/dra-tests

# or save to custom directory path
dra download --output ~/Downloads devmatteini/dra-tests

Select and download an asset from a specific release

dra download --tag 0.1.1 devmatteini/dra-tests

Select and download source code archives

dra download devmatteini/dra-tests
Release tag is 0.1.5
? Pick the asset to download ›
  helloworld_0.1.5.tar.gz
❯ Source code (tar.gz)
  Source code (zip)

Install assets

Download and install an asset (on both interactive and non-interactive modes)

dra download --install devmatteini/dra-tests

Supported assets that can be installed are:

  • Debian packages (requires elevated privileges)
  • Tar archives with executable(s)
  • Zip files with executable(s)
  • 7-Zip files with executable(s) (requires 7z cli to be installed and in your PATH)
  • Compressed executable files
  • Executable files
  • AppImage files

You can use -I/--install-file <INSTALL_FILE> option when a tar/zip archive contains many executables or when dra can't automatically detect which one to install:

dra download -s helloworld-many-executables-unix.tar.gz -I helloworld-v2 devmatteini/dra-tests

You can also specify this option multiple times to install multiples executables

dra download -s helloworld-many-executables-unix.tar.gz -I helloworld-v2 -I random-script devmatteini/dra-tests

Private repositories & rate limit

In order to download assets from private repositories (and avoid rate limit issues) export an environment variable GITHUB_TOKEN=<token>.

Follow the official guide to create a personal access token. The minimum set of scopes needed is: Full control of private repositories .

Shell completion

Generate shell completion

dra completion bash > dra-completion
source dra-completion

See all supported shell with dra completion -h

Examples

Install an executable from a tar archive

dra download -s helloworld.tar.gz -i devmatteini/dra-tests
./helloworld

Install and move the executable to a custom directory

dra download -a -i -o ~/.local/bin/ devmatteini/dra-tests
~/.local/bin/helloworld

Install an executable file

dra download -s helloworld-unix -i devmatteini/dra-tests
./helloworld-unix

Install an executable from a compressed file

dra download -s helloworld-compressed-unix.bz2 -i devmatteini/dra-tests
./helloworld-compressed-unix

Install and rename the executable (useful when downloading an executable or compressed file)

dra download -s helloworld-unix -i -o helloworld devmatteini/dra-tests
./helloworld

Install a specific executable when many are available

dra download -s helloworld-many-executables-unix.tar.gz -I helloworld-v2 devmatteini/dra-tests
./helloworld-v2

Install multiple executables from a tar/zip archive

dra download -s helloworld-many-executables-unix.tar.gz -I helloworld-v2 -I random-script devmatteini/dra-tests
./helloworld-v2
./random-script

For more information on args/flags/options/commands run:

dra --help
dra <command> --help

Contributing

Take a look at the CONTRIBUTING.md guide.

License

dra is made available under the terms of the MIT License.

See the LICENSE file for license details.