Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/curl/wcurl
a simple wrapper around curl to easily download files
https://github.com/curl/wcurl
command-line curl download url
Last synced: 6 days ago
JSON representation
a simple wrapper around curl to easily download files
- Host: GitHub
- URL: https://github.com/curl/wcurl
- Owner: curl
- License: other
- Created: 2024-07-01T18:52:09.000Z (6 months ago)
- Default Branch: main
- Last Pushed: 2024-12-19T22:58:06.000Z (23 days ago)
- Last Synced: 2024-12-31T04:42:33.924Z (11 days ago)
- Topics: command-line, curl, download, url
- Language: Shell
- Homepage: https://curl.se/wcurl
- Size: 77.1 KB
- Stars: 271
- Watchers: 10
- Forks: 12
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
- Authors: AUTHORS
Awesome Lists containing this project
- my-awesome - curl/wcurl - line,curl,download,url pushed_at:2024-12 star:0.3k fork:0.0k a simple wrapper around curl to easily download files (Shell)
README
# [![wcurl logo](https://curl.se/logo/wcurl-logo.svg)](https://curl.se/wcurl)
# Install wcurl
First check if your distro/OS vendor ships `wcurl` as part of their official
repositories, `wcurl` might be shipped as part of the `curl` package.If they don't ship it, consider making a request for it.
You can always install wcurl by simply downloading the script:
```console
curl -fLO https://github.com/curl/wcurl/releases/latest/download/wcurl
chmod +x wcurl
```# Install wcurl's manpage
```console
curl -fLO https://github.com/curl/wcurl/releases/latest/download/wcurl.1
sudo mv wcurl.1 /usr/share/man/man1/wcurl.1
```# wcurl(1)
**wcurl**
- a simple wrapper around curl to easily download files.# Synopsis
wcurl ...
wcurl [--curl-options ]... [--no-decode-filename] [-o|-O|--output ] [--dry-run] [--] ...
wcurl [--curl-options=]... [--no-decode-filename] [--output=] [--dry-run] [--] ...
wcurl -V|--version
wcurl -h|--help# Description
**wcurl** is a simple curl wrapper which lets you use curl to download files
without having to remember any parameters.Simply call **wcurl** with a list of URLs you want to download and **wcurl** will pick
sane defaults.If you need anything more complex, you can provide any of curl's supported
parameters via the `--curl-options` option. Just beware that you likely
should be using curl directly if your use case is not covered.* By default, **wcurl** will:
* Percent-encode whitespaces in URLs;
* Download multiple URLs in parallel if the installed curl's version is >= 7.66.0;
* Follow redirects;
* Automatically choose a filename as output;
* Avoid overwriting files if the installed curl's version is >= 7.83.0 (`--no-clobber`);
* Perform retries;
* Set the downloaded file timestamp to the value provided by the server, if available;
* Disable **curl**'s URL globbing parser so `{}` and `[]` characters in URLs are not treated specially;
* Percent-decode the resulting filename;
* Use "index.html" as default filename if there's none in the URL.# Options
* `--curl-options, curl-options=`...
Specify extra options to be passed when invoking curl. May be specified more than once.
* `-o, -O, --output, --output=`
Use the provided output path instead of getting it from the URL. If multiple
URLs are provided, all files will have the same name with a number appended to
the end (curl >= 7.83.0). If this option is provided multiple times, only the
last value is considered.* `--no-decode-filename`
Don't percent-decode the output filename, even if the percent-encoding in the
URL was done by wcurl, e.g.: The URL contained whitespaces.* `--dry-run`
Don't actually execute curl, just print what would be invoked.
* `-V, --version`
Print version information.
* `-h, --help`
Print help message.
# Url
Anything which is not a parameter will be considered an URL.
**wcurl** will percent-encode whitespaces and pass that to curl, which will perform the
parsing of the URL.# Examples
* Download a single file:
`wcurl example.com/filename.txt`
* Download two files in parallel:
`wcurl example.com/filename1.txt example.com/filename2.txt`
* Download a file passing the _--progress-bar_ and _--http2_ flags to curl:
`wcurl --curl-options="--progress-bar --http2" example.com/filename.txt`
* Resume from an interrupted download (if more options are used, this needs to be the last one in the list):
`wcurl --curl-options="--continue-at -" example.com/filename.txt`
# Running the testsuite
If you would like to run the tests, you will first need to install the
`shunit2` package. On Debian-like and Fedora-like systems, the
package is called `shunit2`.After that, you can run the testsuite by simply invoking the test
script:```sh
./tests/tests.sh
```# Lint
To lint the shell scripts, you need to install `shellcheck` and `checkbashisms`. Those tools will check the scripts for issues and ensure they follow best practices.
- On Debian-like systems: `apt install shellcheck devscripts`
- On Fedora-like systems: `dnf install shellcheck devscripts`After installation, you can run `shellcheck` and `checkbashisms` by executing the following commands:
```sh
shellcheck wcurl ./tests/*checkbashisms wcurl ./tests/*
```# Authors
Samuel Henrique <[[email protected]](mailto:[email protected])>
Sergio Durigan Junior <[[email protected]](mailto:[email protected])>
and many contributors, see the AUTHORS file.# Reporting Bugs
If you experience any problems with **wcurl** that you do not experience with curl,
submit an issue [here](https://github.com/curl/wcurl/issues).# Copyright
**wcurl** is licensed under the curl license
# See Also
**curl**(1)