ambrevar/shell: Extend `env'.

master
Pierre Neidhardt 2021-01-20 13:08:09 +01:00
parent a8b9fa81f2
commit 6e957d1819
1 changed files with 14 additions and 5 deletions

View File

@ -15,11 +15,20 @@
(local-time:format-rfc1123-timestring nil (local-time:now))) (local-time:format-rfc1123-timestring nil (local-time:now)))
(export-always 'env) (export-always 'env)
(defun env () (defun env (&optional key)
"Return the environment variables as an alist." "Return the environment variables as a proper alist.
(mapcar (lambda (line) With KEY, return the corresponding environment variable value, and the whole
(str:split "=" line :limit 2)) list as a second value."
(str:split (string #\newline) (cmd:$cmd "env")))) (let ((result
(mapcar (lambda (line)
(let ((key-value (str:split "=" line :limit 2)))
(cons (first key-value)
(str:split (uiop:inter-directory-separator)
(second key-value)))))
(str:split (string #\newline) (cmd:$cmd "env")))))
(if key
(alex:assoc-value result key :test #'string=)
result)))
(export-always 'file->string) (export-always 'file->string)
(defun file->string (path) (defun file->string (path)