Coder Social home page Coder Social logo

qlmapper's Introduction

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
<[email protected]>

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.