Quiero definir una función de inicio de sesión en mi script de inicio, pero no quiero codificar mis credenciales de inicio de sesión. Creo que una buena solución es leer mi script de inicio en mis credenciales de inicio de sesión desde un archivo local y guardar estos valores como variables. De esa manera, puedo excluir el archivo de mi índice git, lo que mantiene seguras mis credenciales de inicio de sesión.
¿Hay alguna sugerencia sobre este enfoque o formas de establecer un argumento para un valor que se define en un archivo?
Por ejemplo, me gustaría usar lo siguiente en mi init.el
:
;; Set up our login variables here:
(setq file-location "~/.emacs.d/.login")
(setq erc-username "default-name")
(setq erc-password "default-password")
(setq erc-url "default-url")
(setq erc-port "default-port")
(defun read-lines (filePath)
"Return a list of lines of a file at filePath."
(with-temp-buffer
(insert-file-contents filePath)
(split-string (buffer-string) "\n" t)))
(if (file-exists-p file-location)
(progn (setq login-credentials (read-lines file-location))
(setq erc-username (nth 0 login-credentials))
(setq erc-password (nth 1 login-credentials))
(setq erc-url (nth 2 login-credentials))
(setq erc-port (nth 3 login-credentials)))
(message "No ERC login credentials provided. Please add login credentials as '<username>\n<password>\n<url>\n<port>' in ~/.emacs.d/.login to activate ERC mode."))
;; These message the values from my file correctly.
;; Everything up to this point works as expected
(message erc-username)
(message erc-password)
(message erc-url)
(message erc-port)
;; Use our login variables here
;; This doesn't work because the 'quote' function prevents evaluation of my variables, and a 'backquote' did not resolve it either
(custom-set-variables
;; custom-set-variables was added by Custom.
;; If you edit it by hand, you could mess it up, so be careful.
;; Your init file should contain only one such instance.
;; If there is more than one, they won't work right.
'(markdown-command "/usr/bin/pandoc")
'(tls-program (quote ("openssl s_client -connect %h:%p -no_ssl2 -ign_eof -CAfile ~/.ssl/spi_ca.pem -cert ~/.ssl/znc.pem")))
'(znc-servers (quote ((,erc-url ,erc-port t ((irc\.freenode\.net ,erc-username ,erc-password)))))))
(custom-set-faces
;; custom-set-faces was added by Custom.
;; If you edit it by hand, you could mess it up, so be careful.
;; Your init file should contain only one such instance.
;; If there is more than one, they won't work right.
)
Tenga en cuenta que mi ejemplo usa el znc.el
módulo aquí . Estoy modificando el código autogenerado resultante de las configuraciones de Emacs en M-x customize-group RET znc RET
y M-x customize-variable RET tls-program RET
.
Mi problema con el código anterior es que las variables no se cargan dentro de mi custom-set-variables
función anterior. Cargar los valores adecuados de un archivo parece funcionar bien, pero parece que no puedo usarlos como argumento. Creo que esto está relacionado con la quote
función, que impide la evaluación de sus contenidos. Intenté un 'backquote' ( ,
) para forzar la evaluación, pero tampoco funciona. Cualquier sugerencia para corregir este error u ofrecer otro enfoque sería muy útil.