download: Handle username and password properties for FTP URIs.
* guix/build/download.scm (ftp-fetch): Process username and password from a URI.
This commit is contained in:
parent
193420a803
commit
a4f5423415
|
@ -241,7 +241,18 @@ and 'guix publish', something like
|
||||||
(define* (ftp-fetch uri file #:key timeout)
|
(define* (ftp-fetch uri file #:key timeout)
|
||||||
"Fetch data from URI and write it to FILE. Return FILE on success. Bail
|
"Fetch data from URI and write it to FILE. Return FILE on success. Bail
|
||||||
out if the connection could not be established in less than TIMEOUT seconds."
|
out if the connection could not be established in less than TIMEOUT seconds."
|
||||||
(let* ((conn (ftp-open (uri-host uri) #:timeout timeout))
|
(let* ((userinfo (string-split (uri-userinfo uri) #\:))
|
||||||
|
(conn (match userinfo
|
||||||
|
(("")
|
||||||
|
(ftp-open (uri-host uri) #:timeout timeout))
|
||||||
|
(((? string? user))
|
||||||
|
(ftp-open (uri-host uri) #:timeout timeout
|
||||||
|
#:username user))
|
||||||
|
(((? string? user) (? string? pass))
|
||||||
|
(ftp-open (uri-host uri) #:timeout timeout
|
||||||
|
#:username user
|
||||||
|
#:password pass))
|
||||||
|
(_ (ftp-open (uri-host uri) #:timeout timeout))))
|
||||||
(size (false-if-exception (ftp-size conn (uri-path uri))))
|
(size (false-if-exception (ftp-size conn (uri-path uri))))
|
||||||
(in (ftp-retr conn (basename (uri-path uri))
|
(in (ftp-retr conn (basename (uri-path uri))
|
||||||
(dirname (uri-path uri)))))
|
(dirname (uri-path uri)))))
|
||||||
|
|
Loading…
Reference in New Issue