From d5ae3410042f138a382d337a8c409caccfdd7849 Mon Sep 17 00:00:00 2001 From: Florian Dold Date: Mon, 3 Dec 2018 17:17:39 +0100 Subject: missing file --- guix/taler-helpers.scm | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 guix/taler-helpers.scm (limited to 'guix') diff --git a/guix/taler-helpers.scm b/guix/taler-helpers.scm new file mode 100644 index 0000000..e980308 --- /dev/null +++ b/guix/taler-helpers.scm @@ -0,0 +1,38 @@ +(define-module taler-helpers + #:use-module (guix) + #:use-module (guix utils) + #:export (concat-local-files)) + +;;; +;;; Helpers +;;; + +(define (absolute-file-name file directory) + "Return the canonical absolute file name for FILE, which lives in the +vicinity of DIRECTORY." + (canonicalize-path + (cond ((string-prefix? "/" file) file) + ((not directory) file) + ((string-prefix? "/" directory) + (string-append directory "/" file)) + (else file)))) + +(define (%%concat-local-files srcdir outname files) + (define (slurp f) + (call-with-input-file (absolute-file-name f srcdir) get-string-all)) + (define (file-concat files) + (string-concatenate (map slurp files))) + (plain-file outname (file-concat files))) + + +(define-syntax concat-local-files + (lambda (s) + (syntax-case s () + ((_ outname rest ...) + #'(%%concat-local-files (current-source-directory) outname rest ...)) + ((_) + #'(syntax-error "missing arguments")) + (id + (identifier? #'id) + #'(syntax-error + "'concat-local-files' is a macro and cannot be used like this"))))) -- cgit v1.2.3