Mercurial > core / lisp/lib/krypt/krypt.lisp
changeset 698: |
96958d3eb5b0 |
parent: |
16fe3cdae1e2
|
author: |
Richard Westhaver <ellis@rwest.io> |
date: |
Fri, 04 Oct 2024 22:04:59 -0400 |
permissions: |
-rw-r--r-- |
description: |
fixes |
1 ;;; krypt/krypt.lisp --- Krypt API 8 (defparameter *default-user-kryptrc* #P"~/.kryptrc") 10 (defclass krypt-config (sxp id) 11 ((path :initform nil :initarg :path :type (or pathname null)))) 13 (defmethod print-object ((self krypt-config) stream) 14 (print-unreadable-object (self stream :type t) 15 (format stream "~S ~A" :id (format-sxhash (id self))))) 17 (defun find-krypt-symbol (s) 18 (find-symbol* (symbol-name s) :krypt nil)) 20 (defmethod load-ast ((self krypt-config)) 21 (with-slots (ast) self 23 ;; ast is valid, modify object, set ast nil 25 (sb-int:doplist (k v) ast 26 (when-let ((s (find-krypt-symbol k))) 27 (setf (slot-value self s) v))) ;; needs to be correct package 30 ;; invalid ast, signal error 31 (error 'sxp-syntax-error)))) 33 (defmethod build-ast ((self krypt-config) &key (nullp nil) (exclude '(ast id))) 41 (defun load-kryptrc (&optional (file *default-user-kryptrc*)) 42 "Load a krypt configuration from FILE. Defaults to ~/.kryptrc." 43 (unless (not (probe-file file)) 44 (let ((form (file-read-forms file))) 45 (load-ast (make-instance 'krypt-config :ast form :path file :id (sxhash form))))))