Description
I'd love to make a ql distribution for my colleagues and myself that fetches tarballs directly from our source control website (such as gitlab or github) based on git SHA-1 IDs. This almost works out of the box, but there are a few show stoppers that need to be addressed. I was wondering if the improvements below would be welcome additions to the quicklisp-client.
-
Allow
?
to appear in release URLs. Gitlab generates tarballs from URLs of the form:/GROUP/PROJECT/repository/archive.tar.gz?ref=REF-ID
. Currently, it seems the?
throws the client for a loop. When unescaped in releases.txt,probe-file
treats it as a wildcard and when it's escaped, it's escaped in the URL when fetching which is not correct. -
Allow URL filenames to be different from the name of the tarball on the file system. Both github and gitlab generate tarballs from URLs with filenames that are independent of the repo name (
REF-ID.tar.gz
for github andarchive.tar.gz?ref=REF-ID
for gitlab). However, they both send back theContent-Disposition
header with an appropriate name. I'd like to make the client look for this header and if it's provided, use the provided filename for storing the tarball on the file system. -
Allow users to set headers for the fetch requests. (Not really directly related to server-side generated tarballs, but useful in many situations where you also want to use generated tarballs). We need this to authenticate to our gitlab install (and I believe it could be used for private github repos as well). I have a proof of concept for this that stores headers using
config-value
for the pathfetch-headers/HOSTNAME/HEADER-NAME/value
. I imagine a full-featured version would also allow forcommand
instead ofvalue
to tell the client to run a command to get the header value in case users don't want to store private tokens in plain text on the file system. And the presence ofsecure
would prevent the header from being sent over unencrypted connections.