diff --git a/lisp/dist-add.lisp b/lisp/dist-add.lisp index 054f38b..5da5a44 100644 --- a/lisp/dist-add.lisp +++ b/lisp/dist-add.lisp @@ -3,5 +3,9 @@ (in-package :roswell.dist.add) (defun add (&rest r) - (dolist (elm (rest r)) - (ql-dist:install-dist elm :prompt nil))) \ No newline at end of file + (let ((gh-support (asdf:find-system "gh-dist"))) + (dolist (elm (rest r)) + (if (and gh-support + (= 1 (count #\/ elm))) + (uiop:symbol-call :gh-dist :install elm :prompt nil) + (ql-dist:install-dist elm :prompt nil))))) diff --git a/lisp/dist-list.lisp b/lisp/dist-list.lisp index e3445e3..ead9b83 100644 --- a/lisp/dist-list.lisp +++ b/lisp/dist-list.lisp @@ -8,10 +8,14 @@ (dolist (system (ql:provided-systems (ql-dist:find-dist (second r)))) (format t "~A~%" (ql-dist:short-description system))) - (dolist (dist (sort (ql-dist:all-dists) #'> :key #'ql-dist:preference)) - (format t "~A~15A~11A~A~%" - (if (ql-dist:enabledp dist) " " "#") - (ql-dist:name dist) - (subseq (ql-dist:version dist) - 0 (min (length (ql-dist:version dist)) 10)) - (ql-dist::distinfo-subscription-url dist))))) + (let* ((dists (sort (ql-dist:all-dists) #'> :key #'ql-dist:preference)) + (len (loop for dist in dists + maximize (length (ql-dist:name dist))))) + (dolist (dist dists) + (format t "~A~vA ~11A~A~%" + (if (ql-dist:enabledp dist) " " "#") + len + (ql-dist:name dist) + (subseq (ql-dist:version dist) + 0 (min (length (ql-dist:version dist)) 10)) + (or (ql-dist::distinfo-subscription-url dist) "")))))) diff --git a/lisp/dist.ros b/lisp/dist.ros index c80f33f..57e30a0 100644 --- a/lisp/dist.ros +++ b/lisp/dist.ros @@ -5,7 +5,12 @@ exec ros -Q -m roswell -N roswell -- $0 "$@" |# (progn (roswell:include "util-main") - (roswell:include "util-config")) + (roswell:include "util-config") + (ignore-errors + #+quicklisp(ql:quickload "gh-dist" :silent t) + (uiop:symbol-call :gh-dist :setup)) + (mapc #'load (directory (merge-pathnames "dist-*.lisp" (ros:opt "lispdir")))) + ) (defpackage :ros.script.dist.3714094546 (:use :cl :roswell.util.main))