cli/env: change how envvars are ignored

Improves the detection and omission algorithm of undesired envvars.
This commit is contained in:
Henrik Lissner 2019-07-10 15:06:45 +02:00
parent b4d004a91a
commit dfa5324f3d
No known key found for this signature in database
GPG key ID: 5F6C0EA160557395

View file

@ -45,18 +45,17 @@ needs to be run once).")
;; Helpers ;; Helpers
(defvar doom-env-ignored-vars (defvar doom-env-ignored-vars
'("PWD" '("^PWD$"
"PS1" "^PS1$"
"PROMPT" "^R?PROMPT$"
"RPROMPT" "^DBUS_SESSION_BUS_ADDRESS$"
"DBUS_SESSION_BUS_ADDRESS" "^GPG_AGENT_INFO$"
"GPG_AGENT_INFO" "^SSH_AGENT_PID$"
"SSH_AGENT_PID" "^SSH_AUTH_SOCK$"
"SSH_AUTH_SOCK"
;; Doom envvars ;; Doom envvars
"INSECURE" "^INSECURE$"
"DEBUG" "^DEBUG$"
"YES") "^YES$")
"Environment variables to not save in `doom-env-file'. "Environment variables to not save in `doom-env-file'.
Each string is a regexp, matched against variable names to omit from Each string is a regexp, matched against variable names to omit from
@ -120,15 +119,17 @@ default, on Linux, this is '$SHELL -ic /usr/bin/env'. Variables in
(save-excursion (save-excursion
(insert (shell-command-to-string doom-env-executable))) (insert (shell-command-to-string doom-env-executable)))
;; Remove undesireable variables ;; Remove undesireable variables
(dolist (regexp doom-env-ignored-vars) (while (re-search-forward "\n\\([^= \n]+\\)=" nil t)
(save-excursion (save-excursion
(when (re-search-forward (format "\n\\(%s+\\)=" regexp) nil t) (let* ((valend (or (save-match-data
(let ((var (match-string 1))) (when (re-search-forward "^\\([^= ]+\\)=" nil t)
(line-beginning-position)))
(point-max)))
(var (match-string 1))
(value (buffer-substring-no-properties (point) (1- valend))))
(when (cl-loop for regexp in doom-env-ignored-vars
if (string-match-p regexp var)
return t)
(message "Ignoring %s" var) (message "Ignoring %s" var)
(delete-region (delete-region (match-beginning 0) (1- valend))))))
(match-beginning 0)
(1- (or (save-excursion
(when (re-search-forward "^\\([^= ]+\\)=" nil t)
(line-beginning-position)))
(point-max))))))))
(print! (green "Envvar successfully generated"))))))) (print! (green "Envvar successfully generated")))))))