diff --git a/ChangeLog.md b/ChangeLog.md index a610c7f..06f6399 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -2,6 +2,21 @@ # ChangeLog + + +## 0.11.0 (2023-06-05) + +* Now docs builder tries to load system using either Quicklisp client or `ASDF` if system is not already loaded. + +* Also a bug was fixed - previously [`docs-builder:build`][febf] function hanged in recursion in case if asdf system wasn't found. + Now it will show an error. + + + +## 0.10.0 (2022-11-16) + +Support new refactored [`40ants-doc`][a2c7] system. + ## 0.9.1 (2022-10-26) diff --git a/README.md b/README.md index e4c46bb..053cc05 100644 --- a/README.md +++ b/README.md @@ -20,6 +20,8 @@ * Source control: [GIT][843b] +* Depends on: [40ants-doc][2c00], [alexandria][8236], [docs-config][ce67], [log4cl][7f8b], [uiop][5274] + This system is a generic documentation builder for Common Lisp Systems. It able to generate `HTML` documentation for specified `ASDF` system. @@ -49,7 +51,7 @@ From the `REPL`, you need first to call a [`docs-builder:build`][febf] function: -#### [function](de45) `docs-builder:build` system &rest rest &key (error-on-warnings t) &allow-other-keys +#### [function](6a20) `docs-builder:build` system &rest rest &key (error-on-warnings t) &allow-other-keys Builds `HTML` documentation for `ASDF` system and returns absolute path to the dir with docs. @@ -57,7 +59,7 @@ Inside, it will try to guess which documentation builder should be used: -#### [generic-function](c645) `docs-builder/guesser:guess-builder` system +#### [generic-function](77d5) `docs-builder/guesser:guess-builder` system Returns a builder object which can be passed to the [`docs-builder/builder:build`][9de0] generic-function along with system. @@ -69,7 +71,7 @@ Then it will pass the builder object and `ASDF` system to the [`docs-builder/bui -#### [generic-function](1424) `docs-builder/builder:build` builder system &key local root-sections &allow-other-keys +#### [generic-function](589d) `docs-builder/builder:build` builder system &key local root-sections &allow-other-keys Builds `HTML` documentation for `ASDF` system and returns absolute path to the dir with docs. @@ -158,7 +160,7 @@ You can customize a builder by defining a method for this generic function: -#### [generic-function](684a) `docs-config:docs-config` asdf-system +#### [generic-function](e256) `docs-config:docs-config` asdf-system Should return a plist which will be passed as keyword arguments to the documentation builder when building @@ -221,16 +223,21 @@ a method looks like when I configure Weblocks documentation builder: [8884]: https://cl-doc-systems.github.io/ [843b]: https://github.com/40ants/docs-builder [100b]: https://github.com/40ants/docs-builder/actions -[1424]: https://github.com/40ants/docs-builder/blob/ba6c6cb1b624f29e1be41b5fbf090fa1b78da7fb/src/builder.lisp#L10 -[684a]: https://github.com/40ants/docs-builder/blob/ba6c6cb1b624f29e1be41b5fbf090fa1b78da7fb/src/config.lisp#L9 -[de45]: https://github.com/40ants/docs-builder/blob/ba6c6cb1b624f29e1be41b5fbf090fa1b78da7fb/src/core.lisp#L29 -[c645]: https://github.com/40ants/docs-builder/blob/ba6c6cb1b624f29e1be41b5fbf090fa1b78da7fb/src/guesser.lisp#L14 +[589d]: https://github.com/40ants/docs-builder/blob/d90b94f54a75fb943c4e8e7088809f325021623e/src/builder.lisp#L10 +[e256]: https://github.com/40ants/docs-builder/blob/d90b94f54a75fb943c4e8e7088809f325021623e/src/config.lisp#L9 +[6a20]: https://github.com/40ants/docs-builder/blob/d90b94f54a75fb943c4e8e7088809f325021623e/src/core.lisp#L29 +[77d5]: https://github.com/40ants/docs-builder/blob/d90b94f54a75fb943c4e8e7088809f325021623e/src/guesser.lisp#L14 [7d71]: https://github.com/40ants/docs-builder/issues [7927]: https://github.com/melisgl/mgl-pax [795a]: https://github.com/roswell/roswell [f9f7]: https://guicho271828.github.io/eazy-documentation/ [05ae]: https://inters.co/geneva/open-geneva.html [9f4c]: https://pages.github.com/ +[2c00]: https://quickdocs.org/40ants-doc +[8236]: https://quickdocs.org/alexandria +[ce67]: https://quickdocs.org/docs-config +[7f8b]: https://quickdocs.org/log4cl +[5274]: https://quickdocs.org/uiop * * * ###### [generated by [40ANTS-DOC](https://40ants.com/doc/)] diff --git a/qlfile.lock b/qlfile.lock index 74d8e14..2f09de3 100644 --- a/qlfile.lock +++ b/qlfile.lock @@ -1,12 +1,12 @@ ("quicklisp" . (:class qlot/source/dist:source-dist :initargs (:distribution "http://beta.quicklisp.org/dist/quicklisp.txt" :%version :latest) - :version "2021-10-21")) + :version "2023-02-15")) ("ultralisp" . (:class qlot/source/dist:source-dist :initargs (:distribution "http://dist.ultralisp.org" :%version :latest) - :version "20211026222000")) + :version "20230605020501")) ("sly" . (:class qlot/source/github:source-github :initargs (:repos "svetlyak40wt/sly" :ref nil :branch "patches" :tag nil) - :version "github-028f191582f27e6f1582840c09e6508d71aaa0ab")) + :version "github-030a8441f57f7e0bb401570935e741dfd9edfb83")) diff --git a/src/changelog.lisp b/src/changelog.lisp index 500d17b..761a04c 100644 --- a/src/changelog.lisp +++ b/src/changelog.lisp @@ -12,6 +12,10 @@ "ERROR-ON-WARNINGS" "DYNAMIC-BINDINGS") :external-docs ("https://40ants.com/doc/")) + (0.11.0 2023-06-05 + "* Now docs builder tries to load system using either Quicklisp client or ASDF if system is not already loaded. + * Also a bug was fixed - previously DOCS-BUILDER:BUILD function hanged in recursion in case if asdf system wasn't found. + Now it will show an error.") (0.10.0 2022-11-16 "Support new refactored 40ANTS-DOC system.") (0.9.1 2022-10-26 diff --git a/src/guesser.lisp b/src/guesser.lisp index 3a44fe1..fa41a63 100644 --- a/src/guesser.lisp +++ b/src/guesser.lisp @@ -26,12 +26,28 @@ If you want to add support for a new documentation generator, use DEFGUESSER mac (pushnew ',name *guessers*))) +(defun find-or-load-system (system-name) + (let ((system (asdf:registered-system system-name))) + (cond + (system system) + (t + (let ((system (progn + #+quicklisp + (ql:quickload system-name) + #-quicklisp + (asdf:load-system system-name) + (asdf:registered-system system-name)))) + (unless system + (error "Unable to load system \"~A\" ensure it is accessible to ASDF or Quicklisp." + system-name)) + (values system)))))) + (defmethod guess-builder ((system symbol)) - (guess-builder (asdf:registered-system system))) + (guess-builder (find-or-load-system system))) (defmethod guess-builder ((system string)) - (guess-builder (asdf:registered-system system))) + (guess-builder (find-or-load-system system))) (defmethod guess-builder ((system asdf:system))