Plaster

common-lisp
(defun full-list (sys) (let ((tab (make-hash-table :test #'equal)) (results)) (labels ((add-system (sys) (loop :for dep in (asdf:system-depends-on (asdf:find-system sys)) :do (typecase dep (list (let ((s (asdf/find-component::resolve-dependency-spec nil dep))) (when s (add-system (asdf:component-name s))))) (t (when (not (gethash dep tab)) (setf (gethash dep tab) t) (pushnew dep results :test #'equal) (add-system dep))))))) (add-system sys) results)))