diff options
author | Ludovic Courtès <ludo@gnu.org> | 2020-06-06 23:00:05 +0200 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2020-06-06 23:28:49 +0200 |
commit | d67a88196607b57ce1209464b03b79d2a74bf5cd (patch) | |
tree | f274c092ddc968c58c4c129966ba3a43eeaa7cdc | |
parent | b2ee53d5aead4e2c49f526c8ddcf5a279e879236 (diff) | |
download | guix-d67a88196607b57ce1209464b03b79d2a74bf5cd.tar guix-d67a88196607b57ce1209464b03b79d2a74bf5cd.tar.gz |
utils: Add 'with-environment-variables'.
* guix/tests/gnupg.scm (call-with-environment-variables)
(with-environment-variables): Move to...
* guix/utils.scm: ... here.
* guix/tests/git.scm: Adjust accordingly.
-rw-r--r-- | guix/tests/git.scm | 1 | ||||
-rw-r--r-- | guix/tests/gnupg.scm | 22 | ||||
-rw-r--r-- | guix/utils.scm | 50 |
3 files changed, 41 insertions, 32 deletions
diff --git a/guix/tests/git.scm b/guix/tests/git.scm index c77c544e03..5d7056bb53 100644 --- a/guix/tests/git.scm +++ b/guix/tests/git.scm @@ -21,7 +21,6 @@ #:use-module ((guix git) #:select (with-repository)) #:use-module (guix utils) #:use-module (guix build utils) - #:use-module ((guix tests gnupg) #:select (with-environment-variables)) #:use-module (ice-9 match) #:use-module (ice-9 control) #:export (git-command diff --git a/guix/tests/gnupg.scm b/guix/tests/gnupg.scm index 6e7fdbcf65..47c858d232 100644 --- a/guix/tests/gnupg.scm +++ b/guix/tests/gnupg.scm @@ -22,27 +22,7 @@ #:use-module (ice-9 match) #:export (gpg-command gpgconf-command - with-fresh-gnupg-setup - - with-environment-variables)) - -(define (call-with-environment-variables variables thunk) - "Call THUNK with the environment VARIABLES set." - (let ((environment (environ))) - (dynamic-wind - (lambda () - (for-each (match-lambda - ((variable value) - (setenv variable value))) - variables)) - thunk - (lambda () - (environ environment))))) - -(define-syntax-rule (with-environment-variables variables exp ...) - "Evaluate EXP with the given environment VARIABLES set." - (call-with-environment-variables variables - (lambda () exp ...))) + with-fresh-gnupg-setup)) (define gpg-command (make-parameter "gpg")) diff --git a/guix/utils.scm b/guix/utils.scm index 69e3f0a934..17a96370f1 100644 --- a/guix/utils.scm +++ b/guix/utils.scm @@ -89,7 +89,6 @@ guile-version>? version-prefix? string-replace-substring - arguments-from-environment-variable file-extension file-sans-extension tarball-sans-extension @@ -99,6 +98,9 @@ call-with-temporary-directory with-atomic-file-output + with-environment-variables + arguments-from-environment-variable + config-directory cache-directory @@ -115,6 +117,38 @@ ;;; +;;; Environment variables. +;;; + +(define (call-with-environment-variables variables thunk) + "Call THUNK with the environment VARIABLES set." + (let ((environment (environ))) + (dynamic-wind + (lambda () + (for-each (match-lambda + ((variable value) + (setenv variable value))) + variables)) + thunk + (lambda () + (environ environment))))) + +(define-syntax-rule (with-environment-variables variables exp ...) + "Evaluate EXP with the given environment VARIABLES set." + (call-with-environment-variables variables + (lambda () exp ...))) + +(define (arguments-from-environment-variable variable) + "Retrieve value of environment variable denoted by string VARIABLE in the +form of a list of strings (`char-set:graphic' tokens) suitable for consumption +by `args-fold', if VARIABLE is defined, otherwise return an empty list." + (let ((env (getenv variable))) + (if env + (string-tokenize env char-set:graphic) + '()))) + + +;;; ;;; Filtering & pipes. ;;; @@ -582,6 +616,11 @@ minor version numbers from version-string." (list-prefix? (string-tokenize v1 not-dot) (string-tokenize v2 not-dot))))) + +;;; +;;; Files. +;;; + (define (file-extension file) "Return the extension of FILE or #f if there is none." (let ((dot (string-rindex file #\.))) @@ -634,15 +673,6 @@ REPLACEMENT." (substring str start index) pieces)))))))) -(define (arguments-from-environment-variable variable) - "Retrieve value of environment variable denoted by string VARIABLE in the -form of a list of strings (`char-set:graphic' tokens) suitable for consumption -by `args-fold', if VARIABLE is defined, otherwise return an empty list." - (let ((env (getenv variable))) - (if env - (string-tokenize env char-set:graphic) - '()))) - (define (call-with-temporary-output-file proc) "Call PROC with a name of a temporary file and open output port to that file; close the file and delete it when leaving the dynamic extent of this |