diff options
author | Cyril Roelandt <tipecaml@gmail.com> | 2015-01-28 19:49:53 +0100 |
---|---|---|
committer | Cyril Roelandt <tipecaml@gmail.com> | 2015-02-10 00:24:30 +0100 |
commit | c9815b5deb66337756e1b7dacb3e9ca97d182cda (patch) | |
tree | 9d835b929d90941b2a95d6d9a8859f766ff3b728 | |
parent | e1e277372a7dce833e75bc44a101013a9805d1dd (diff) | |
download | guix-c9815b5deb66337756e1b7dacb3e9ca97d182cda.tar.gz |
lint: handle FTP URIs.
* guix/scripts/lint.scm (probe-uri): handle FTP URIs.
-rw-r--r-- | guix/scripts/lint.scm | 32 |
1 files changed, 30 insertions, 2 deletions
diff --git a/guix/scripts/lint.scm b/guix/scripts/lint.scm index 9d5c689618..fef05635b3 100644 --- a/guix/scripts/lint.scm +++ b/guix/scripts/lint.scm @@ -21,6 +21,7 @@ (define-module (guix scripts lint) #:use-module (guix base32) #:use-module (guix download) + #:use-module (guix ftp-client) #:use-module (guix packages) #:use-module (guix records) #:use-module (guix ui) @@ -254,8 +255,29 @@ response from URI, and additional details, such as the actual HTTP response." (values key args)) (else (apply throw key args)))))) + ('ftp + (catch #t + (lambda () + (let ((port (ftp-open (uri-host uri) 21))) + (define response + (dynamic-wind + (const #f) + (lambda () + (ftp-chdir port (dirname (uri-path uri))) + (ftp-size port (basename (uri-path uri)))) + (lambda () + (ftp-close port)))) + (values 'ftp-response #t))) + (lambda (key . args) + (case key + ((or ftp-error) + (values 'ftp-response #f)) + ((getaddrinfo-error system-error gnutls-error) + (values key args)) + (else + (apply throw key args)))))) (_ - (values 'not-http #f))))) + (values 'unknown-protocol #f))))) (define (validate-uri uri package field) "Return #t if the given URI can be reached, otherwise emit a @@ -272,6 +294,12 @@ warning for PACKAGE mentionning the FIELD." (response-code argument) (response-reason-phrase argument)) field))) + ((ftp-response) + (when (not argument) + (emit-warning package + (format #f + (_ "URI ~a not reachable") + (uri->string uri))))) ((getaddrinfo-error) (emit-warning package (format #f @@ -293,7 +321,7 @@ warning for PACKAGE mentionning the FIELD." ((invalid-http-response gnutls-error) ;; Probably a misbehaving server; ignore. #f) - ((not-http) ;nothing we can do + ((unknown-protocol) ;nothing we can do #f) (else (error "internal linter error" status))))) |