All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Statically link
liblzmaandbzip2dependencies to avoid missing shared library errors (#339)
-
Install RPM assets (#335)
-
Download selection mode now supports wildcard pattern, using
*and?special characters, to select the first asset matching the given pattern (#271).This new feature is useful when release assets contain sections that change for each release (e.g. a build number or timestamp).
For example,
dra download -s 'helloworld*_amd64.deb' devmatteini/dra-tests.Selection mode is backward compatible with previous versions. You can still pass literal or untagged patterns.
- Rewrite download automatic mode, without any breaking change, to be more customizable, reliable and easier to maintain.
- Handle more Windows OS formats in install script (#336)
- bump
zipfrom 2.6.1 to 6.0.0 - bump
uuidfrom 1.16.0 to 1.18.1 - bump
urlfrom 2.5.4 to 2.5.7 - bump
ureqfrom 3.0.12 to 3.1.4 - bump
serdefrom 1.0.219 to 1.0.228 - bump
indicatiffrom 0.18.0 to 0.18.3 - bump
flate2from 1.1.2 to 1.1.5 - bump
dialoguerfrom 0.11.0 to 0.12.0 - bump
ctrlcfrom 3.4.7 to 3.5.1 - bump
clapfrom 4.5.48 to 4.5.53 - bump
clap_completefrom 4.5.57 to 4.5.61 - bump
bzip2from 0.6.0 to 0.6.1 - bump
assert_cmdfrom 2.0.17 to 2.1.1
- Asset detection for automatic download on windows when
win-64bitis used for both OS and ARCH (#333)
- You can now also pass GitHub URL as repository argument to every subcommand (#307)
dra download https://github.com/devmatteini/dra-tests- Fix windows executable by including static crt (#302)
- Improve bug report for automatic download error
- bump
zipfrom 2.3.0 to 2.6.1 - bump
uuidfrom 1.15.1 to 1.16.0 - bump
ureqfrom 2.12.1 to 3.0.11 - bump
serdefrom 1.0.218 to 1.0.219 - bump
flate2from 1.1.0 to 1.1.1 - bump
ctrlcfrom 3.4.5 to 3.4.6 - bump
clapfrom 4.5.31 to 4.5.37 - bump
clap_completefrom 4.5.46 to 4.5.48 - bump
assert_cmdfrom 2.0.16 to 2.0.17
This is a maintenance release that updates our dependencies.
- bump
zipfrom 2.2.2 to 2.3.0 - bump
uuidfrom 1.11.0 to 1.15.1 - bump
tarfrom 0.4.43 to 0.4.44 - bump
serdefrom 1.0.217 to 1.0.218 - bump
ringfrom 0.17.3 to 0.17.13 - bump
indicatiffrom 0.17.9 to 0.17.11 - bump
flate2from 1.0.35 to 1.1.0 - bump
clapfrom 4.5.23 to 4.5.31 - bump
clap_completefrom 4.5.40 to 4.5.46 - bump
bzip2from 0.5.0 to 0.5.2
Before, you needed to export environment variable GITHUB_TOKEN to make authenticated requests to download assets from
private repositories and avoid rate limit issues.
Now, you can also export one of the following environment variables:
DRA_GITHUB_TOKENGITHUB_TOKEN(same as before)GH_TOKEN
If none of the above environment variables are set, the GitHub cli token (if available) will be used as default value.
If you would like to disable GitHub authentication, you can export the environment variable
DRA_DISABLE_GITHUB_AUTHENTICATION=true
Automated bash script for initial dra download (see README.md for more information)
curl --proto '=https' --tlsv1.2 -sSf https://raw.githubusercontent.com/devmatteini/dra/refs/heads/main/install.sh | bash -s -- --to <DESTINATION>Improve install feature error message when no executables are found to provide more context to the user (based
on #232)
Automatic download on Linux prioritize musl-based archives when multiple musl assets are available, ensuring better compatibility across distributions. (#267)
- bump
zipfrom 2.2.0 to 2.2.2 - bump
ureqfrom 2.10.1 to 2.12.1 - bump
tarfrom 0.4.42 to 0.4.43 - bump
serdefrom 1.0.214 to 1.0.217 - bump
predicatesfrom 3.1.2 to 3.1.3 - bump
itertoolsfrom 0.13.0 to 0.14.0 - bump
indicatiffrom 0.17.8 to 0.17.9 - bump
hashbrownfrom 0.15.0 to 0.15.2 - bump
flate2from 1.0.34 to 1.0.35 - bump
clapfrom 4.5.20 to 4.5.23 - bump
clap_completefrom 4.5.34 to 4.5.40 - bump
bzip2from 0.4.4 to 0.5.0
Install multiple executables from tar/zip archives in one command (#234, thanks @duong-dt for the initial implementation).
You can now specify -I/--install-file option multiple times:
$ dra download -s helloworld-many-executables-unix.tar.gz -I helloworld-v2 -I random-script devmatteini/dra-tests
# [...]
Extracted archive executable to '/home/<user>/helloworld-v2'
Extracted archive executable to '/home/<user>/random-script'
Installation completed!Note that the following syntax is not valid as it's not backward compatible:
dra download -s helloworld-many-executables-unix.tar.gz -I helloworld-v2 random-script devmatteini/dra-tests
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# you can't pass space-separated values to -IWhen you install multiple executables, --output must be a directory path.
- bump
serdefrom 1.0.210 to 1.0.214 - bump
clapfrom 4.5.18 to 4.5.20 - bump
clap_completefrom 4.5.29 to 4.5.34
- Review and improve
dra [command] --helpmessages to be clearer
- bump
zipfrom 0.6.6 to 2.2.0 - bump
uuidfrom 1.10.0 to 1.11.0 - bump
tarfrom 0.4.40 to 0.4.42 - bump
serdefrom 1.0.209 to 1.0.210 - bump
flate2from 1.0.33 to 1.0.34 - bump
clapfrom 4.5.16 to 4.5.18 - bump
clap_completefrom 4.5.24 to 4.5.29
- Asset detection for automatic download on windows when
win64is used for both OS and ARCH (#224)
- bump
ureqfrom 2.10.0 to 2.10.1 - bump
serdefrom 1.0.204 to 1.0.209 - bump
flate2from 1.0.30 to 1.0.33 - bump
ctrlcfrom 3.4.4 to 3.4.5 - bump
clapfrom 4.5.13 to 4.5.16 - bump
clap_completefrom 4.5.8 to 4.5.24 - bump
assert_cmdfrom 2.0.15 to 2.0.16
- Show more information about the installed asset. For example, when installing an executable from a
tar archive, you
will see a message like
Extracted archive executable to '/home/<user>/Downloads/helloworld'.
This release focuses on improving the install feature and adds support for more assets
types (#205).
The install system is now more reliable and can handle more complex scenarios.
Thanks @sandreas and @adriangalilea for the help testing this release.
New supported assets to install are:
- Compressed executable files
- Executable files
- AppImage files
A new option --install-file/-I <INSTALL_FILE> has been added to dra-download command.
This option is useful when a tar archive or zip file contains many executables:
dracan't automatically detect which one to install- The repository provides more than one executable and you want to install them
See Examples section on for more information.
- The
--outputoption ofdra-downloadnow also accepts file paths when used with install feature. This allows to rename the installed executable file (examples)
- Extend release infrastructure to be able to create alpha/beta releases.
- bump
uuidfrom 1.9.1 to 1.10.0 - bump
ureqfrom 2.9.7 to 2.10.0 - bump
serdefrom 1.0.203 to 1.0.204 - bump
predicatesfrom 3.1.0 to 3.1.2 - bump
clapfrom 4.5.8 to 4.5.13 - bump
clap_completefrom 4.5.3 to 4.5.8 - bump
assert_cmdfrom 2.0.14 to 2.0.15
- Download and install assets from
.tbzand.txzarchives
- Ignore some assets when using automatic download (for example, sha256sum files)
- bump
uuidfrom 1.7.0 to 1.9.1 - bump
ureqfrom 2.9.6 to 2.9.7 - bump
serdefrom 1.0.197 to 1.0.203 - bump
rustlsfrom 0.22.2 to 0.22.4 - bump
flate2from 1.0.28 to 1.0.30 - bump
clapfrom 4.5.2 to 4.5.8 - bump
clap_completefrom 4.5.1 to 4.5.3
This is a maintenance release that updates our dependencies.
- Add missing commas, correction of spelling errors by @patsevanton (#184)
- Add more usage examples to
dra --help
- bump
walkdirfrom 2.4.0 to 2.5.0 - bump
ureqfrom 2.9.1 to 2.9.6 - bump
indicatiffrom 0.17.7 to 0.17.8 - bump
predicatesfrom 3.0.4 to 3.1.0 - bump
serdefrom 1.0.193 to 1.0.197 - bump
uuidfrom 1.6.1 to 1.7.0 - bump
assert_cmdfrom 2.0.12 to 2.0.14 - bump
ctrlcfrom 3.4.1 to 3.4.4 - bump
clapfrom 4.4.10 to 4.5.2 - bump
clap_completefrom 4.4.4 to 4.5.1
dranow supports proxy environment variables likeall_proxy(#171)
- update
sctfrom0.7.0to0.7.1to improve support for RISCV64 architecture by @Xunop (#172)
dranow provides release asset for macOS arm64
dra-downloadoption--output <OUTPUT>now also support directory paths.dra download -s helloworld.tar.gz --output ~/Downloads devmatteini/dra-tests # output: ~/Downloads/helloworld.tar.gz
- Automatically select and download an asset based on your operating system and architecture
with
dra download -a <REPO>
- bump
serdefrom 1.0.190 to 1.0.193 - bump
clapfrom 4.4.7 to 4.4.10
This is a maintenance release that updates our dependencies.
- bump
dialoguerfrom 0.10.4 to 0.11.0 - bump
walkdirfrom 2.3.3 to 2.4.0 - bump
test-casefrom 3.1.0 to 3.3.1 - bump
predicatesfrom 3.0.3 to 3.0.4 - bump
flate2from 1.0.26 to 1.0.28 - bump
tarfrom 0.4.38 to 0.4.40 - bump
assert_cmdfrom 2.0.5 to 2.0.12 - bump
serdefrom 1.0.160 to 1.0.190 - bump
ureqfrom 2.6.2 to 2.9.1 - bump
indicatiffrom 0.17.4 to 0.17.7 - bump
clap_completefrom 4.2.1 to 4.4.4 - bump
clapfrom 4.2.5 to 4.4.7 - bump
ctrlcfrom 3.2.5 to 3.4.1 - bump
zipfrom 0.6.4 to 0.6.6 - bump
uuidfrom 1.3.2 to 1.6.1 - bump
actions/checkoutfrom 3 to 4 - bump
dependabot/fetch-metadatafrom 1.4.0 to 1.6.0
Install release asset when tmp directory is on a different file
system (#121)
- bump
predicatesfrom 2.1.5 to 3.0.3 - bump
test-casefrom 2.2.2 to 3.1.0 - bump
dependabot/fetch-metadatafrom 1.3.6 to 1.4.0 - bump
uuidfrom 1.3.0 to 1.3.2 - bump
dialoguerfrom 0.10.3 to 0.10.4 - bump
flate2from 1.0.25 to 1.0.26 - bump
clapfrom 4.1.11 to 4.2.5 - bump
clap_completefrom 4.1.5 to 4.2.1 - bump
serdefrom 1.0.158 to 1.0.160
- Download and install
.tgzassets.
- Use
dtolnay/rust-toolchainGitHub Actions instead of actions-rs/toolchain which is not maintained anymore
- bump
serdefrom 1.0.152 to 1.0.158 - bump
clapfrom 4.1.4 to 4.1.11 - bump
clap_completefrom 4.1.1 to 4.1.5 - bump
walkdirfrom 2.3.2 to 2.3.3 - bump
uuidfrom 1.2.2 to 1.3.0 - bump
ctrlcfrom 3.2.4 to 3.2.5
dranow provides release for linux x86_64 musl (#94)
The --copy flag of dra-untag added in the previous release has been removed for some issues on different linux
desktop environments.
There was no good solution that worked reliably everywhere, so it was decided to completely remove it since it's not
worth the hassle for a "nice to
have" feature like this (055a4bc).
dra untagnow has--copyflag to copy the untagged asset to clipboard (available on Linux Wayland & X11, macOS, Windows) (#90)
devmatteini/dra-ubuntu-basedocker image now uses ubuntu22.04 as base image
ureqfrom 2.5.0 to 2.6.2bumpalofrom 3.8.0 to 3.12.0clap_completefrom 4.0.5 to 4.1.1clapfrom 4.0.26 to 4.1.4dialoguerfrom 0.10.2 to 0.10.3indicatiffrom 0.17.2 to 0.17.3serdefrom 1.0.147 to 1.0.152predicatesfrom 2.1.3 to 2.1.5ctrlcfrom 3.2.3 to 3.2.4flate2from 1.0.24 to 1.0.25bzip2from 0.4.3 to 0.4.4
dra now provides releases for linux on armv6 and arm64!
dra on Arch Linux has been moved to the community repository (thanks @orhun).
You can now install it via pacman -S dra.
uuidfrom 1.2.1 to 1.2.2clapfrom 4.0.22 to 4.0.26predicatesfrom 2.1.2 to 2.1.3
- Download release source code archives (interactive/non-interactive), by @tranzystorek-io (#52)
After the cross-platform release (0.4.0), a lot of works was done to improve dra test suite to make sure all supported
os works.
We are now able to run integration tests on macOS and Windows as well!
indicatiffrom 0.17.1 to 0.17.2predicatesfrom 2.1.1 to 2.1.2serdefrom 1.0.145 to 1.0.147clapfrom 4.0.15 to 4.0.22clap_completefrom 4.0.2 to 4.0.5
dra is now a cross-platform command line that works on Linux, macOS and Windows 🎉!
The install feature for tar and zip archives no longer rely on tar and unzip command lines.
This change was needed to ensure that it behaves the same on all supported
platforms (commits).
clapmigration to v4, by @tranzystorek-ioctrlcfrom 3.2.2 to 3.2.3uuidfrom 1.1.2 to 1.2.1dependabot/fetch-metadatafrom 1.3.3 to 1.3.4test-casefrom 2.2.1 to 2.2.2serdefrom 1.0.144 to 1.0.145clap_completefrom 3.2.4 to 3.2.5indicatiffrom 0.17.0 to 0.17.1
This is a maintenance release that updates our dependencies.
serdefrom 1.0.138 to 1.0.144ureqfrom 2.4.0 to 2.5.0clapfrom 3.2.8 to 3.2.20clap_completefrom 3.2.3 to 3.2.4indicatiffrom 0.16.2 to 0.17.0dialoguerfrom 0.10.1 to 0.10.2
- Fix clap deprecation warnings for upcoming v4 release (e7d6997)
- Add github action to auto merge dependabot pull requests of patch updates
test-casefrom 1.2.3 to 2.1.0uuidfrom 0.8.2 to 1.1.2clap_completefrom 3.1.4 to 3.2.3serdefrom 1.0.137 to 1.0.138clapfrom 3.1.18 to 3.2.8
CVE-2022-24713 - Updated regex crate to
1.5.6 (#23)
clapfrom 3.1.17 to 3.1.18
- Show download progress, by @orhun (#17)
clap_completefrom 3.1.3 to 3.1.4clapfrom 3.1.14 to 3.1.17dialoguerfrom 0.10.0 to 0.10.1
- More useful error message on rate limit exceeded and unauthorized errors from GitHub API
dra --helpanddra helpnow display examples of the most common commands used.
Previously, when installing a tar/zip archive without a root directory it would result in an error.
Now this type of structures inside tar/zip archives are supported.
More info on commit 5f73077
In order to speed up integration tests on CI it was created a custom docker image with all runtime dependencies already installed (devmatteini/dra-ubuntu-base).
clapfrom 3.1.12 to 3.1.14clap_completefrom 3.1.2 to 3.1.3serdefrom 1.0.136 to 1.0.137
- The release workflow is now using github cli to create
github release and upload
assets, since
actions/create-releaseandactions/upload-release-assetare not maintained anymore.
- Dependabot is now used to weekly update cargo crates and github actions
- Integration tests are now faster to run on both host machine and CI (see 1f36ffc12e4bb2da07be3106bc982d76419c7bf0 for more details)
test-casefrom 1.2.1 to 1.2.3dialoguerfrom 0.9.0 to 0.10.0ctrlcfrom 3.2.1 to 3.2.2clapfrom 3.1.6 to 3.1.12clap_completefrom 3.1.1 to 3.1.2
The command line interface has changed to dra <SUBCOMMAND>.
The <REPO> positional argument must be passed after choosing download or untag subcommand (
e.g dra download <REPO>)
This change was needed in order to add subcommands/flags that didn't require <REPO>, like the newly
added completion.
- Generate shell completion with
dra completion <SHELL>
- clap 3.0.13 -> 3.1.6
- Improve
dra-downloadanddra-untagUX by showing a spinner while fetching the release information dra-downloadanddra-untagnow print which release tag is currently used
-
GitHub releases with no assets are now handled properly
-
If CTRL+C was pressed during the asset selection the cursor would not be restored (in both
dra-downloadanddra-untagsub commands).The issue and solution that we implemented is described here mitsuhiko/dialoguer/issues/77.
-
Download and install some supported assets (
dra <repo> download --[i]nstall).The supported assets are:
- Debian packages (
.deb) - Tar archive with executable inside (
.tar.[gz|bz2|xz]) - Zip file with executable inside (
.zip)
- Debian packages (
Integration tests have been added to test the installation methods for the various supported assets. For more information on how this tests works, read the docs.
This release update some of our dependencies and migrates to clap v3 as args parser.
- Migration to clap v3 instead of using structopt (fe132c1).
- serde 1.0.130 -> 1.0.136
- ureq 2.3.1 -> 2.4.0
-
Download assets from a specific release, by @orhun (see issue 3). If none is specified, the latest release is used.
e.g:
dra <repo> download --tag <tag> -
Download assets from private repositories by exporting
GITHUB_TOKENenvironment variable
- Created
CONTRIBUTING.mdguidelines - Instructions for installing on Arch Linux from AUR, by @orhun (See pull request)
- Instructions for installing on Debian-based distributions.
Change application name from dag to dra.
dag is widely used as the acronym of Directed Acyclic Graph.
To avoid any confusion I decided to rename this application to dra.
The new name is the acronym of Download Release Asset.
The repository url has changed as well: https://github.com/devmatteini/dra
Initial release of dag.
-
Select and download an asset from a repository (interactive)
-
Save a downloaded asset to custom file path (
dag <repo> download --output <path>) -
Generate a pattern to auto select an asset to download (
dag <repo> untag) -
Auto select and download an asset (
dag <repo> download --select <pattern>).The
--selectvalue is the pattern generated bydag-untagcommand