But in preparation, hacked a bit on Xach's pretty decent
quickproject library. I've been using it to create project skeletons for Common Lisp for quite a while, but it's unsatisfying in a few ways I thought I'd fix up.
- it produces a
README.txtinstead of the
- it doesn't set up a default
- it doesn't set up any sort of test harness in the generated
asdfile or source tree
It's possible that the reason I find this unsatisfactory is that I've been writing a lot of Clojure lately, and the fantastic
lein utility there takes care of all of this and then some, but I still want the functionality.
quickproject theoretically has a template-capable subsystem that lets you point it at a directory somewhere and generate from that place instead. Which is a fine thing to have, except that most of its internals are not template based. There's a specific function that outputs the
README.txt file for instance, which means that even if you work up a template directory with a
.txt will be output regardless, and you'll presumably delete it by hand.
Also, because of the templating approach, it's extremely hard to make an output file named after the project. Which you'd need in order to effectively override the
<your-project>.lisp files generated by default.
The template engine used here is
quickproject messes with the template delimiters somewhat, which means that
html-template documentation is almost helpful, but doesn't give you something you could cut/paste to work up a new project template. Which isn't a huge deal, but docs are nice, and since
quickproject is the defacto default Common Lisp project generation tool, it'd be nice if those docs were present and as simple as possible to use.
In terms of interface, it's transparent. So if you're used to using
quickproject:make-project yourself, there are absolutely no changes to internalize from the activation perspective. However
- There is a
default-templatedirectory available that shows you what the base template looks like, and conveniently can be copied out and cut up for your own nefarious purposes.
- The internals of the library have been modified so that it automatically uses the template directory for everything, including
asdgeneration. This way you can easily remove pieces, not just add or replace them
- The output machinery looks for two specific files named
application.lispwhich get output as
<your-project>.lisprather than naively. This lets you generate your projects'
lispfiles trivially, at the admitted cost that you can't have files literally named "
system.asd" and "
application.lisp" in your project tree.
There's an open PR, so hopefully, this gets merged into the mainline
quickproject at some point. Given how busy Xach is, I wouldn't hold my breath, but you can still clone and use mine if you like.
EDIT: As of October 27, 2017, it has been merged. So, presumably, at this point you can get all this functionality out of the main