~ruther/guix-local

8773648e35b18b2f4b29e43258d1eb38b792f27c — Ludovic Courtès 13 years ago 22b5d9c
utils: Change `substitute*' to accept a list of files to patch.

* guix/build/utils.scm (substitute*): Support a list of files as the
  first argument.
1 files changed, 14 insertions(+), 10 deletions(-)

M guix/build/utils.scm
M guix/build/utils.scm => guix/build/utils.scm +14 -10
@@ 210,10 210,9 @@ as (PROC MATCH OUTPUT-PORT)."
    ((let-matches index match () body ...)
     (begin body ...))))

(define-syntax-rule (substitute* file
                                 ((regexp match-var ...) body ...)
                                 ...)
  "Substitute REGEXP in FILE by the string returned by BODY.  BODY is
(define-syntax substitute*
  (syntax-rules ()
    "Substitute REGEXP in FILE by the string returned by BODY.  BODY is
evaluated with each MATCH-VAR bound to the corresponding positional regexp
sub-expression.  For example:



@@ 230,12 229,17 @@ bound to the last one.

When one of the MATCH-VAR is `_', no variable is bound to the corresponding
match substring."
  (substitute file
              (list (cons regexp
                          (lambda (m p)
                            (let-matches 0 m (match-var ...)
                                         (display (begin body ...) p))))
                    ...)))
    ((substitute* (file ...) clause ...)
     (begin
       (substitute* file clause ...)
       ...))
    ((substitute* file ((regexp match-var ...) body ...) ...)
     (substitute file
                 (list (cons regexp
                             (lambda (m p)
                               (let-matches 0 m (match-var ...)
                                            (display (begin body ...) p))))
                       ...)))))


;;;