(defun cl-style-symbol-to-unix-style-env-var-name (symbol)
(upcase
(replace-regexp-in-string "-" "_"
(replace-regexp-in-string "^:" ""
(symbol-name symbol)))))
(defun my-bindings-to-process-environment-list (bindings)
(mapcar (lambda (it)
(concat (cl-style-symbol-to-unix-style-env-var-name (car it))
"="
(cadr it)))
bindings))
(defmacro with-env-vars (bindings &rest body)
(declare (indent 1))
`(let ((process-environment
(append ',(my-bindings-to-process-environment-list bindings)
process-environment)))
,@body))