;;; -*- Mode:LISP; Package:USER; Readtable:CL; Base:10 -*- ;(defsystem laser1+ ; (:name "Laser1+") ; (:pathname-default "laser:laser1+;") ; (:patchable) ; (:module main "laser1+") ; (:compile-load main)) (defconst *systems-path* "sys:site;" "Pathname string location of place to put module/system definition files") ;;; (cl-system "it:keith;alchemy") ;;; => ;;; (defsystem alchemy ;;; (:name "Alchemy") ;;; (:pathname-default "it:keith;") ;;; (:patchable) ;;; (:module main "alchemy" ;;; (:compile-load main)) (defun cl-system(pathname &key pretty syspath) (let*((sys-str (string-trim " " (file-namestring pathname))) (sys-symb (intern sys-str)) (sys-file (merge-pathnames (or syspath *systems-path*) (merge-pathnames sys-str "*.SYSTEM"))) (sys-prty (format nil "~:(~a~)" (or pretty sys-str))) (sys-def (merge-pathnames (merge-pathnames (string-append sys-str "-sysdef") "*.LISP") pathname)) (sys-dflt (merge-pathnames "*.*#>" pathname)) (defile `(si:set-system-source-file ',sys-symb ,(namestring sys-def))) (defsys `(defsystem ,sys-symb (:name ,sys-prty) (:pathname-default ,(namestring sys-dflt)) (:patchable) (:module main ,sys-str) (:compile-load main)))) (pprint defile) (pprint defsys) (with-open-file (out sys-file :direction :output) (pprint defile out)) (with-open-file (out sys-def :direction :output) (pprint defsys out)) (list sys-file sys-def)))