Treat curl configuration files as curlrc
subcommands.
curl can read arguments from a configuration file. You can use this mechanism to specify default arguments (as ~/.curlrc
), or tell curl to read arguments from a specific file:
curl -K @/path/to/config.rc
Create a few config files and drop them in ~/.curl
(or $CURL_HOME
if set):
~/.curl └── example.rc
curlrc
exposes configuration files as subcommands:
$ curlrc example
If the configuration file includes an output template, you can reformat the data as CSV, tab-separated columns, or JSON:
$ curlrc example -f csv https://example.org $ curlrc example -f table https://example.org $ curlrc example -f json https://example.org
Any options you pass to curlrc
after --
will be passed to curl:
$ curlrc example -- -fsSL https://example.org
Consider the following configuration file:
# output timing data -s -S -o = /dev/null -w = "url_effective: %{url_effective}\ntime_namelookup: %{time_namelookup}\ntime_connect: %{time_connect}\ntime_appconnect: %{time_appconnect}\ntime_pretransfer: %{time_pretransfer}\ntime_redirect: %{time_redirect}\ntime_starttransfer: %{time_starttransfer}\ntime_total: %{time_total}\n"
If you drop this in ~/.curl/time.rc
(or $CURL_HOME/time.rc
), you can use it by calling curlrc time
:
$ curlrc time https://example.org url_effective: https://example.org/ time_namelookup: 0.001 time_connect: 0.026 time_appconnect: 0.180 time_pretransfer: 0.180 time_redirect: 0.000 time_starttransfer: 0.210 time_total: 0.210
Don't like the default format? Try CSV:
$ curlrc time -f csv https://example.org url_effective,time_namelookup,time_connect,time_appconnect,time_pretransfer,time_redirect,time_starttransfer,time_total https://example.org/,0.001,0.030,0.194,0.194,0.000,0.228,0.228
or tab-separated columns:
$ curlrc time -f table https://example.org url_effective https://example.org/ time_namelookup 0.002 time_connect 0.028 time_appconnect 0.177 time_pretransfer 0.177 time_redirect 0.000 time_starttransfer 0.205 time_total 0.206
or even JSON:
$ curlrc time -f json https://example.org { "url_effective": "https://example.org/", "time_namelookup": "0.001", "time_connect": "0.028", "time_appconnect": "0.182", "time_pretransfer": "0.182", "time_redirect": "0.000", "time_starttransfer": "0.213", "time_total": "0.213" }
curlrc
requires Python 2.7 or later. It only depends on the standard library.
Download the latest release or install with pip:
pip install curlrc
MIT