diff --git a/lib/chibi/snow/commands.scm b/lib/chibi/snow/commands.scm index f68ffc2e..343b60e6 100644 --- a/lib/chibi/snow/commands.scm +++ b/lib/chibi/snow/commands.scm @@ -1168,7 +1168,7 @@ (local-tmp (string-append local-path ".tmp." (number->string (current-second)) "-" (number->string (current-process-id)))) - (repo-str (utf8->string (resource->bytevector repo-uri))) + (repo-str (utf8->string (resource->bytevector cfg repo-uri))) (repo (guard (exn (else #f)) (let ((repo (read (open-input-string repo-str)))) `(,(car repo) (url ,repo-uri) ,@(cdr repo)))))) @@ -2128,7 +2128,7 @@ (install-file cfg (make-path dir src) dest))) (define (fetch-package cfg url) - (resource->bytevector url)) + (resource->bytevector cfg url)) (define (path-strip-top file) (let ((pos (string-find file #\/))) diff --git a/lib/chibi/snow/utils.scm b/lib/chibi/snow/utils.scm index 7f437175..0cc8ac39 100644 --- a/lib/chibi/snow/utils.scm +++ b/lib/chibi/snow/utils.scm @@ -25,10 +25,12 @@ (lambda (out) (if (bytevector? x) (write-bytevector x out) (display x out))))) -(define (resource->bytevector uri) +(define (resource->bytevector cfg uri) (let ((uri (if (uri? uri) uri (string->path-uri 'http uri)))) (if (uri-host uri) - (call-with-input-url uri port->bytevector) + (if (conf-get cfg 'use-curl?) + (process->bytevector `(curl --silent ,(uri->string uri))) + (call-with-input-url uri port->bytevector)) (file->bytevector (uri-path uri))))) ;; path-normalize either a uri or path, and return the result as a string diff --git a/lib/chibi/snow/utils.sld b/lib/chibi/snow/utils.sld index be22a815..8d27d58b 100644 --- a/lib/chibi/snow/utils.sld +++ b/lib/chibi/snow/utils.sld @@ -11,8 +11,10 @@ (scheme write) (scheme process-context) (srfi 1) + (chibi config) (chibi net http) (chibi pathname) + (chibi process) (chibi string) (chibi uri)) (cond-expand