[bug#34638,v2,1/4] utils: Add #:base-directory to call-with-temporary-directory.

Message ID 20190419140427.15183-1-mail@cbaines.net
State Accepted
Headers show
Series [bug#34638,v2,1/4] utils: Add #:base-directory to call-with-temporary-directory. | expand

Checks

Context Check Description
cbaines/applying patch success Successfully applied

Commit Message

Christopher Baines April 19, 2019, 2:04 p.m. UTC
This allows more easily creating temporary directories within a specific
directory. This is motivated by using this in inferior-eval-with-store.

* guix/utils.scm (call-with-temporary-directory): Add optional keyword
argument, base-directory.
---
 guix/utils.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

Comments

Ludovic Courtès March 26, 2020, 9:22 a.m. UTC | #1
Hello,

Christopher Baines <mail@cbaines.net> skribis:

> This allows more easily creating temporary directories within a specific
> directory. This is motivated by using this in inferior-eval-with-store.
>
> * guix/utils.scm (call-with-temporary-directory): Add optional keyword
> argument, base-directory.

LGTM.

Patch

diff --git a/guix/utils.scm b/guix/utils.scm
index ed1a418cca..abeb156f40 100644
--- a/guix/utils.scm
+++ b/guix/utils.scm
@@ -620,10 +620,10 @@  call."
         (false-if-exception (close out))
         (false-if-exception (delete-file template))))))
 
-(define (call-with-temporary-directory proc)
+(define* (call-with-temporary-directory proc #:key base-directory)
   "Call PROC with a name of a temporary directory; close the directory and
 delete it when leaving the dynamic extent of this call."
-  (let* ((directory (or (getenv "TMPDIR") "/tmp"))
+  (let* ((directory (or base-directory (getenv "TMPDIR") "/tmp"))
          (template  (string-append directory "/guix-directory.XXXXXX"))
          (tmp-dir   (mkdtemp! template)))
     (dynamic-wind