download: Export 'maybe-expand-mirrors'.
* guix/build/download.scm (uri-vicinity, maybe-expand-mirrors): New procedures. (url-fetch): Remove them from here.
This commit is contained in:
		
							parent
							
								
									4fbf4ca552
								
							
						
					
					
						commit
						dd8ea244f4
					
				
					 1 changed files with 24 additions and 21 deletions
				
			
		| 
						 | 
					@ -29,6 +29,7 @@
 | 
				
			||||||
  #:use-module (ice-9 match)
 | 
					  #:use-module (ice-9 match)
 | 
				
			||||||
  #:use-module (ice-9 format)
 | 
					  #:use-module (ice-9 format)
 | 
				
			||||||
  #:export (open-connection-for-uri
 | 
					  #:export (open-connection-for-uri
 | 
				
			||||||
 | 
					            maybe-expand-mirrors
 | 
				
			||||||
            url-fetch
 | 
					            url-fetch
 | 
				
			||||||
            progress-proc
 | 
					            progress-proc
 | 
				
			||||||
            uri-abbreviation))
 | 
					            uri-abbreviation))
 | 
				
			||||||
| 
						 | 
					@ -279,17 +280,15 @@ which is not available during bootstrap."
 | 
				
			||||||
    (lambda (key . args)
 | 
					    (lambda (key . args)
 | 
				
			||||||
      (print-exception (current-error-port) #f key args))))
 | 
					      (print-exception (current-error-port) #f key args))))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
(define* (url-fetch url file #:key (mirrors '()))
 | 
					 | 
				
			||||||
  "Fetch FILE from URL; URL may be either a single string, or a list of
 | 
					 | 
				
			||||||
string denoting alternate URLs for FILE.  Return #f on failure, and FILE
 | 
					 | 
				
			||||||
on success."
 | 
					 | 
				
			||||||
(define (uri-vicinity dir file)
 | 
					(define (uri-vicinity dir file)
 | 
				
			||||||
    ;; Concatenate DIR, slash, and FILE, keeping only one slash in between.
 | 
					  "Concatenate DIR, slash, and FILE, keeping only one slash in between.
 | 
				
			||||||
    ;; This is required by some HTTP servers.
 | 
					This is required by some HTTP servers."
 | 
				
			||||||
  (string-append (string-trim-right dir #\/) "/"
 | 
					  (string-append (string-trim-right dir #\/) "/"
 | 
				
			||||||
                 (string-trim file #\/)))
 | 
					                 (string-trim file #\/)))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  (define (maybe-expand-mirrors uri)
 | 
					(define (maybe-expand-mirrors uri mirrors)
 | 
				
			||||||
 | 
					  "If URI uses the 'mirror' scheme, expand it according to the MIRRORS alist.
 | 
				
			||||||
 | 
					Return a list of URIs."
 | 
				
			||||||
  (case (uri-scheme uri)
 | 
					  (case (uri-scheme uri)
 | 
				
			||||||
    ((mirror)
 | 
					    ((mirror)
 | 
				
			||||||
     (let ((kind (string->symbol (uri-host uri)))
 | 
					     (let ((kind (string->symbol (uri-host uri)))
 | 
				
			||||||
| 
						 | 
					@ -303,8 +302,12 @@ on success."
 | 
				
			||||||
    (else
 | 
					    (else
 | 
				
			||||||
     (list uri))))
 | 
					     (list uri))))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(define* (url-fetch url file #:key (mirrors '()))
 | 
				
			||||||
 | 
					  "Fetch FILE from URL; URL may be either a single string, or a list of
 | 
				
			||||||
 | 
					string denoting alternate URLs for FILE.  Return #f on failure, and FILE
 | 
				
			||||||
 | 
					on success."
 | 
				
			||||||
  (define uri
 | 
					  (define uri
 | 
				
			||||||
    (append-map maybe-expand-mirrors
 | 
					    (append-map (cut maybe-expand-mirrors <> mirrors)
 | 
				
			||||||
                (match url
 | 
					                (match url
 | 
				
			||||||
                  ((_ ...) (map string->uri url))
 | 
					                  ((_ ...) (map string->uri url))
 | 
				
			||||||
                  (_       (list (string->uri url))))))
 | 
					                  (_       (list (string->uri url))))))
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Reference in a new issue