call-with-environment-variables

Set up and take down environment vars

  1. call-with-environment-variables
    1. call-with-environment-variables
    2. About this egg
      1. Author
      2. Repository
      3. License
      4. Dependencies
      5. Versions
      6. Colophon

call-with-environment-variables

[procedure] (call-with-environment-variables variables thunk) → unspecified

Sets up environment variable via dynamic-wind which are taken down after thunk.

variables
An alist of the form '(("var" . "value") ...)
thunk
The thunk to execute with a modified environment
(define (call-with-environment-variables variables thunk)
  (let ((pre-existing-variables
          (map (lambda (var-value)
                 (let ((var (car var-value)))
                   (cons var (get-environment-variable var))))
               variables)))
    (dynamic-wind
      (lambda () (void))
      (lambda ()
        (use posix)
        (for-each
          (lambda (var-value) (setenv (car var-value) (cdr var-value)))
          variables)
        (thunk))
      (lambda ()
        (for-each
          (lambda (var-value)
            (let ((var (car var-value)) (value (cdr var-value)))
              (if value (setenv var value) (unsetenv var))))
          pre-existing-variables)))))

About this egg

Author

Peter Danenberg

Repository

https://github.com/klutometis/call-with-environment-variables

License

BSD

Dependencies

Versions

0.1
Initial release
0.1.1
Add the actual code.
0.1.2
Fix versions.
0.1.3
Update docs.
0.1.4
With a note about cock-utils
0.1.5
Docs

Colophon

Documented by cock.