Update of /project/lispy/cvsroot/lispy In directory clnet:/tmp/cvs-serv512
Modified Files: lispy.lisp packages.lisp Log Message: Add upgrade functionality. Use keyword symbols for install/module names.
--- /project/lispy/cvsroot/lispy/lispy.lisp 2007/07/14 03:08:27 1.5 +++ /project/lispy/cvsroot/lispy/lispy.lisp 2007/07/14 05:11:54 1.6 @@ -171,7 +171,7 @@ stream) (format stream "(let ((root (make-pathname :directory (pathname-directory *load-truename*)))) - (dolist (path '(~{~S~})) + (dolist (path '(~{~S ~})) (pushnew (merge-pathnames path root) asdf:*central-registry* :test 'equal)))" @@ -263,7 +263,8 @@ (defmethod uninstall ((install install)) (cl-fad:delete-directory-and-files (merge-pathnames (root install) *lispy-pathname*) :if-does-not-exist :ignore) (remhash (name install) *lispy-installation*) - (write-installation)) + (write-installation) + (values))
(defun list-map () (hash-to-list *lispy-map*)) (defun list-installation () (hash-to-list *lispy-installation*)) @@ -285,7 +286,7 @@ (> (our-version latest-version) (our-version install))))
-(defmethod list-upgrades () +(defun list-upgrades () (let ((result '())) (dolist (i (list-installation)) (let ((module (module-by-name (name i)))) @@ -294,10 +295,34 @@ (push module result)))) result))
+(defgeneric upgrade (install)) + +(defmethod upgrade ((install install)) + (let ((module (module-by-name (name install)))) + (if (upgradable-p install module) + (let ((latest-version (latest-version module))) + (log-message "upgrade" "Upgrading ~A from ~A to ~A" + (name install) + (version install) + (version latest-version)) + + (if (equal install (root latest-version)) + (progn ;less ideal + (uninstall install) + (install latest-version)) + (progn ;ideal + (install latest-version) + (uninstall install)))) + (log-message "upgrade" "~A ~A is already the latest version." + (name install) + (version install))))) + +(defun upgrade-all () + (dolist (install (list-upgrades)) + (upgrade install))) + ;;; Lispy bootstrap code (remove installation.lisp-expr, distfiles and ;;; all source directories) #+nil -(dolist (name '(drakma puri gzip-stream archive ironclad cl-fad asdf lispy)) +(dolist (name '(:drakma :puri :gzip-stream :archive :ironclad :cl-fad :asdf :lispy :cl+ssl :flexi-streams :trivial-gray-streams :chunga :salza :cffi :split-sequence :cl-base64)) (install (module-by-name name))) -#+nil -(initialize) --- /project/lispy/cvsroot/lispy/packages.lisp 2007/07/13 14:48:15 1.2 +++ /project/lispy/cvsroot/lispy/packages.lisp 2007/07/14 05:11:54 1.3 @@ -14,13 +14,11 @@ #:install-by-name #:list-map #:list-installation - #:name #:homepage #:description #:versions #:latest-version - #:our-version #:version #:source @@ -28,11 +26,12 @@ #:root #:asdf-paths #:dependencies - #:read-asdf-config #:write-asdf-config #:read-installation #:write-installation #:read-map - - #:upgradable-p)) + #:upgradable-p + #:list-upgrades + #:upgrade + #:upgrade-all))