Skip to content
/ qlmapper Public

Run Lisp code for each system or release in Quicklisp; SBCL-only

License

Notifications You must be signed in to change notification settings

xach/qlmapper

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

qlmapper is an SBCL-only library for loading some code in a fresh SBCL
environment for each system or release in Quicklisp.

It is available from https://github.com/xach/qlmapper/

MAP-SYSTEMS takes a file name, and for each system available via
Quicklisp, then:

  - ensures that the system is installed

  - starts a fresh SBCL instance

    - uses --non-interactive --no-userinit --no-sysinit

  - loads Quicklisp in the new instance

  - binds CL-USER:*QLMAPPER-OBJECT-NAME* to the name of the system

  - binds CL:*DEFAULT-PATHNAME-DEFAULTS* to the project directory for
    the system in question

  - loads the file given as the first argument via --load

The intent is to make it easy to write loadable Lisp files that
analyze each system in some way. For example, here's a file that will
gather all available ASDF system descriptions into a file:

    ;; ~/gather-descriptions.lisp
    (with-open-file (s "~/descriptions.sexp" :direction :output
		       :if-does-not-exist :create
		       :if-exists :append)
      (let ((system (asdf:find-system cl-user::*qlmapper-object-name*)))
	(print (list (asdf:component-name system)
		     (asdf:system-description system))
	       s)))

Then the following will load the file for each system:

    (qlmapper:map-systems "~/gather-descriptions.lisp")


MAP-RELEASES is like MAP-SYSTEMS except CL-USER:*QLMAPPER-OBJECT-NAME*
is bound to the name of each release rather than each system.

MAP-LOADED-SYSTEMS is like MAP-SYSTEMS but the system in question is
loaded with ql:quickloaded before loading the mapped file.

This could be used to determine which projects have license files,
documentation subdirectories, readme files, etc.

For any questions or comments, please email me or open an issue on github.

Zach Beane
<xach@xach.com>

About

Run Lisp code for each system or release in Quicklisp; SBCL-only

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published