(define (download source #!optional destination latest-rev progress-callback) (let ((proc (lambda () (parameterize ((callback progress-callback)) (files:get (alist-ref 'root source) (alist-ref 'path-key source) rev: (if latest-rev #f (alist-ref 'rev source))))))) (old-output-port (current-output-port)) (cond ((port? destination) (with-output-to-port destination proc)) ((string? destination) (with-output-to-file destination proc)) (else (proc)))))