abuild: created 'saveas-*://' URI support

'saveas-*://' URI support has been created for use with the source= line of
APKBUILD files.

It allows for a remote source file to be saved with an arbitrary filename.  This
is useful in situations where the last component of the URI is not the preferred
filename.

Here's how it works.  Say we have the following URI:

  http://oss.example.org/?get=software&ver=1.0

Both Busybox Wget and GNU Wget will save this with the filename:

  ?get=software&ver=1.0

To get around this, we could use cURL to save the file using the filename in the
HTTP response headers:

  $ curl -JO "http://oss.example.org/?get=software&ver=1.0"

Or we could use this 'saveas' hack.  Essentially, the original URI is converted
to read:

  saveas-http://oss.example.org/?get=software&ver=1.0/software-1.0.tar.gz

In the download process, the 'saveas-' portion is removed, and the file is
downloaded from the original URI, but is saved with the filename being the last
component of the URI.  In this case, it will be saved as 'software-1.0.tar.gz'.

It is designed so that it works with any protocol supported by abuild.
For example:

  saveas-ftp://oss.example.org/?get=software&ver=1.0/software-1.0.tar.gz

Check it out and let me know what you think.

Thanks,
Matt
This commit is contained in:
Matt Smith 2010-12-28 20:22:17 -06:00 committed by Natanael Copa
parent d4973fad4e
commit 3386818e53
1 changed files with 9 additions and 2 deletions

View File

@ -179,7 +179,14 @@ uri_fetch() {
# we need GNU wget for this
case "$uri" in
https://*) opts="--no-check-certificate";;
*https://*) opts="--no-check-certificate";;
esac
# fix saveas-*://* URIs
case "$uri" in
# remove 'saveas-' from beginning and
# '/filename' from end of URI
saveas-*://*) uri="${uri:7:$(expr ${#uri} - 7 - ${#d} - 1)}";;
esac
mkdir -p "$SRCDEST"
@ -194,7 +201,7 @@ uri_fetch() {
is_remote() {
case "$1" in
http://*|ftp://*|https://*)
http://*|ftp://*|https://*|saveas-*://*)
return 0;;
esac
return 1