summaryrefslogtreecommitdiff
path: root/guix/svn-download.scm
diff options
context:
space:
mode:
authorRicardo Wurmus <rekado@elephly.net>2017-06-04 11:54:23 +0200
committerRicardo Wurmus <rekado@elephly.net>2017-06-15 17:03:14 +0200
commitbef0db37690201573419f19946494a5e5188c1bd (patch)
treed88c3109f160fb2f76a24d57b44711032fa27a10 /guix/svn-download.scm
parent32fdad78c171bdb493aac4bd19164ce657ebd28f (diff)
downloadgnu-guix-bef0db37690201573419f19946494a5e5188c1bd.tar
gnu-guix-bef0db37690201573419f19946494a5e5188c1bd.tar.gz
guix: Add download-svn-to-store.
* guix/svn-download.scm (download-svn-to-store): New procedure.
Diffstat (limited to 'guix/svn-download.scm')
-rw-r--r--guix/svn-download.scm23
1 files changed, 22 insertions, 1 deletions
diff --git a/guix/svn-download.scm b/guix/svn-download.scm
index c1200fa0c5..c118869af1 100644
--- a/guix/svn-download.scm
+++ b/guix/svn-download.scm
@@ -1,6 +1,7 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2014 Sree Harsha Totakura <sreeharsha@totakura.in>
+;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -23,12 +24,15 @@
#:use-module (guix store)
#:use-module (guix monads)
#:use-module (guix packages)
+ #:use-module (guix utils)
+ #:use-module ((guix build svn) #:prefix build:)
#:use-module (ice-9 match)
#:export (svn-reference
svn-reference?
svn-reference-url
svn-reference-revision
- svn-fetch))
+ svn-fetch
+ download-svn-to-store))
;;; Commentary:
;;;
@@ -79,4 +83,21 @@ HASH-ALGO (a symbol). Use NAME as the file name, or a generic name if #f."
#:guile-for-build guile
#:local-build? #t)))
+(define* (download-svn-to-store store ref
+ #:optional (name (basename (svn-reference-url ref)))
+ #:key (log (current-error-port)))
+ "Download from REF, a <svn-reference> object to STORE. Write progress
+reports to LOG."
+ (call-with-temporary-directory
+ (lambda (temp)
+ (let ((result
+ (parameterize ((current-output-port log))
+ (build:svn-fetch (svn-reference-url ref)
+ (svn-reference-revision ref)
+ temp
+ #:user-name (svn-reference-user-name ref)
+ #:password (svn-reference-password ref)))))
+ (and result
+ (add-to-store store name #t "sha256" temp))))))
+
;;; svn-download.scm ends here