Common Lisp Package: UK.CO.DEOXYBYTE-SYSTEMS

The deoxybyte-systems system provides tools for managing Common Lisp systems in batch mode and from the REPL. It provides convenient wrapper functions for ASDF operations and collects my ASDF extensions in one place, instead of copy-pasting them into the system definition files that need them. It does not add symbols to the ASDF package. This system is required by most of my other Common Lisp systems because it supplies the unit test and documentation configurations (using LIFT {http://common-lisp.net/project/lift/} and CLDOC {http://common-lisp.net/project/cldoc/} respectively. Two new ASDF components are provided by this system: - lift-test-config: Loads a LIFT test configuration file when an ASDF:TEST-OP operation is run. - cldoc-config: Specifies a package in which to run CLDOC, thereby extracting the docstrings in HTML format. One new ASDF operation is provided by this system: - cldoc-op: Runs CLDOC to extract docstrings in HTML format. To use these new components in an ASDF file, first load these extensions (this may be omitted if you can be sure that the extensions will be loaded in some other way): ;;; (eval-when (:compile-toplevel :load-toplevel :execute) ;;; (when (asdf:find-system :deoxybyte-systems nil) ;;; (asdf:load-system :deoxybyte-systems))) Then use standard ASDF syntax to add new components: ;;; (defsystem example-system ;;; :name "Example system" ;;; :components ((:module :src ;;; :serial t ;;; :pathname "src/" ;;; :components ((:file "package.lisp") ;;; (:file "example.lisp"))) ;;; (:lift-test-config :lift-tests ;;; :pathname "example-test" ;;; :target-system :example-system) ;;; (:cldoc-config :cldoc-documentation ;;; :pathname "doc/html/" ;;; :target-system :example-system))) To load a system: ;;; (dxs:load-system :example-system) or the equivalent: ;;; (asdf:load-system :example-system) To run tests: ;;; (dxs:load-system :example-system) or the equivalent: ;;; (asdf:test-system :example-system) To generate system documentation: ;;; (dxs:document-system :example-system)

README:

FUNCTION

Public

COMPILE-SYSTEM (SYSTEM &REST ARGS &KEY FORCE VERBOSE VERSION &ALLOW-OTHER-KEYS)

Shorthand for `(asdf:operate 'asdf:compile-op system)`. See OPERATE for details.

DOCUMENT-SYSTEM (SYSTEM &KEY FORCE)

Extracts documentation from SYSTEM using ASDF and CLDOC. When FORCE is T, forces the operation.

Private

Undocumented

SYSTEM-RELATIVE-PATHNAME (SYSTEM NAME &KEY TYPE)

MACRO

Private

Undocumented

DEFSYSTEM (NAME &BODY OPTIONS)

GENERIC-FUNCTION

Private

COMPONENT-PATHNAME (COMPONENT)

Extracts the pathname applicable for a particular component.

OPERATE (OPERATION-CLASS SYSTEM &KEY ((VERBOSE *ASDF-VERBOSE*) *ASDF-VERBOSE*) VERSION FORCE &ALLOW-OTHER-KEYS)

Operate does three things: 1. It creates an instance of OPERATION-CLASS using any keyword parameters as initargs. 2. It finds the asdf-system specified by SYSTEM (possibly loading it from disk). 3. It then calls TRAVERSE with the operation and system as arguments The traverse operation is wrapped in WITH-COMPILATION-UNIT and error handling code. If a VERSION argument is supplied, then operate also ensures that the system found satisfies it using the VERSION-SATISFIES method. Note that dependencies may cause the operation to invoke other operations on the system or its components: the new operations will be created with the same initargs as the original one.

Undocumented

FIND-SYSTEM (SYSTEM &OPTIONAL ERROR-P)

INPUT-FILES (OPERATION COMPONENT)

OPERATION-DONE-P (OPERATION COMPONENT)

PERFORM (OPERATION COMPONENT)

SOURCE-FILE-TYPE (COMPONENT SYSTEM)

SLOT-ACCESSOR

Private

TARGET-SYSTEM (OBJECT)

The system to be documented e.g. :cl-sam

SETFTARGET-SYSTEM (NEW-VALUE OBJECT)

The system to be documented e.g. :cl-sam

CLASS

Public

CLDOC-CONFIG

An ASDF component that represents a CLDOC documentation extraction configuration file.

LIFT-TEST-CONFIG

An ASDF component that represents a LIFT unit testing configuration file.

Private

DOC-OP

An ASDF operation that extracts docstring documentation from Lisp code using CLDOC.

Undocumented

CL-SOURCE-FILE

COMPILE-OP

COMPONENT

LOAD-OP

MODULE

OPERATION

STATIC-FILE

TEST-OP