From 558e8b11d77ed79c1ae0baf5fda66cfc083bab4b Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Wed, 3 Jun 2015 11:45:27 +0200 Subject: gexp: Add 'plain-file'. * guix/gexp.scm (): New type. (plain-file, plain-file-compiler): New procedures. * tests/gexp.scm ("one plain file"): New test. * doc/guix.texi (G-Expressions): Document 'plain-file'. --- guix/gexp.scm | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) (limited to 'guix') diff --git a/guix/gexp.scm b/guix/gexp.scm index 03b4cbf19e..10056e5a1f 100644 --- a/guix/gexp.scm +++ b/guix/gexp.scm @@ -31,12 +31,18 @@ gexp-input gexp-input? + local-file local-file? local-file-file local-file-name local-file-recursive? + plain-file + plain-file? + plain-file-name + plain-file-content + gexp->derivation gexp->file gexp->script @@ -140,7 +146,7 @@ cross-compiling.)" ;;; -;;; Local files. +;;; File declarations. ;;; (define-record-type @@ -169,6 +175,28 @@ This is the declarative counterpart of the 'interned-file' monadic procedure." (($ file name recursive?) (interned-file file name #:recursive? recursive?)))) +(define-record-type + (%plain-file name content references) + plain-file? + (name plain-file-name) ;string + (content plain-file-content) ;string + (references plain-file-references)) ;list (currently unused) + +(define (plain-file name content) + "Return an object representing a text file called NAME with the given +CONTENT (a string) to be added to the store. + +This is the declarative counterpart of 'text-file'." + ;; XXX: For now just ignore 'references' because it's not clear how to use + ;; them in a declarative context. + (%plain-file name content '())) + +(define-gexp-compiler (plain-file-compiler (file plain-file?) system target) + ;; "Compile" FILE by adding it to the store. + (match file + (($ name content references) + (text-file name content references)))) + ;;; ;;; Inputs & outputs. -- cgit v1.2.3