Skip to content

Commit

Permalink
Now for asdf systems we output their dependencies list.
Browse files Browse the repository at this point in the history
  • Loading branch information
svetlyak40wt committed Apr 22, 2023
1 parent 897d29f commit c3bf89f
Show file tree
Hide file tree
Showing 2 changed files with 59 additions and 13 deletions.
69 changes: 57 additions & 12 deletions full/locatives/asdf-system.lisp
Original file line number Diff line number Diff line change
Expand Up @@ -62,17 +62,34 @@
href (second value))))
(make-list-item
(make-paragraph
(if href
(make-content
(list (make-text
(format nil "~A: "
name))
(make-web-link href
(make-text value))))
(make-text
(format nil "~A: ~A"
name
value)))))))))
(cond
((eql type :asdf-systems)
(make-content
(list*
(make-text
(format nil "~A: "
name))
(loop with first = t
for system-name in value
if first
do (setf first nil)
else
collect (make-text ", ")
collect (make-web-link (format nil "https://quickdocs.org/~A"
system-name)
(make-text system-name))))))
(href
(make-content
(list (make-text
(format nil "~A: "
name))
(make-web-link href
(make-text value)))))
(t
(make-text
(format nil "~A: ~A"
name
value))))))))))

(let* ((items (list (item "Version" 'asdf/component:component-version)
(item "Description" 'asdf/system:system-description)
Expand All @@ -86,7 +103,9 @@
(item "Bug tracker" 'asdf/system:system-bug-tracker
:type :link)
(item "Source control" 'asdf/system:system-source-control
:type :source-control)))
:type :source-control)
(item "Depends on" 'asdf-system-dependencies
:type :asdf-systems)))
(children (make-unordered-list
(remove nil items)))
(reference (40ants-doc/reference-api:canonical-reference system)))
Expand All @@ -95,3 +114,29 @@
reference)))))

(defvar end-of-asdf-example)


(defgeneric asdf-system-dependencies (system)
(:method ((system-name string))
(asdf-system-dependencies (asdf:registered-system system-name)))
(:method ((system-name symbol))
(asdf-system-dependencies (asdf:registered-system system-name)))
(:method ((system asdf:system))
(loop with base-system = (asdf:primary-system-name system)
with results = nil
for name in (asdf:system-depends-on system)
for subsystem = (string-equal base-system
(asdf:primary-system-name name))
do (if subsystem
(setf results
(nunion results
(asdf-system-dependencies name)
:test #'string-equal ))
(pushnew name results
:test #'string-equal))
finally (return (sort results
#'string<)))))


(defun comma-separated-dependencies (system)
(str:join ", " (asdf-system-dependencies system)))
3 changes: 2 additions & 1 deletion src/autodoc.lisp
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,8 @@
#:registered-subsections
#:register-subsection
#:with-subsection-collector)
(:export #:defautodoc))
(:export #:defautodoc)
(:documentation "This module is not included into asd file because it requires additional dependencies."))
(in-package #:40ants-doc/autodoc)


Expand Down

0 comments on commit c3bf89f

Please sign in to comment.