diff options
author | Ludovic Courtès <ludo@gnu.org> | 2015-09-09 09:44:43 +0200 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2015-10-10 22:46:14 +0200 |
commit | b751cde36b508690d5f893360f964d3098549131 (patch) | |
tree | 2a0d68122bb43b245706388fb2e5e8f00063e7da /guix | |
parent | 15a01c72209b2d43239fe7516a22e531b7fcb85f (diff) |
gexp: Add 'mixed-text-file'.
* guix/gexp.scm (mixed-text-file): New procedure.
* tests/gexp.scm ("mixed-text-file"): New test.
* doc/guix.texi (G-Expressions): Document it.
Diffstat (limited to 'guix')
-rw-r--r-- | guix/gexp.scm | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/guix/gexp.scm b/guix/gexp.scm index 10acf2ba1b..f44df9c6ea 100644 --- a/guix/gexp.scm +++ b/guix/gexp.scm @@ -61,6 +61,7 @@ gexp->file gexp->script text-file* + mixed-text-file imported-files imported-modules compiled-modules @@ -969,6 +970,21 @@ resulting store file holds references to all these." (gexp->derivation name builder)) +(define* (mixed-text-file name #:rest text) + "Return an object representing store file NAME containing TEXT. TEXT is a +sequence of strings and file-like objects, as in: + + (mixed-text-file \"profile\" + \"export PATH=\" coreutils \"/bin:\" grep \"/bin\") + +This is the declarative counterpart of 'text-file*'." + (define build + (gexp (call-with-output-file (ungexp output "out") + (lambda (port) + (display (string-append (ungexp-splicing text)) port))))) + + (computed-file name build)) + ;;; ;;; Syntactic sugar. |