265 lines
9 KiB
HTML
265 lines
9 KiB
HTML
<html>
|
|
<head>
|
|
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
|
<link rel='stylesheet' type='text/css' href='style.css'>
|
|
<title>Quickproject - create a Common Lisp project skeleton</title>
|
|
</head>
|
|
<body>
|
|
|
|
<div id='content'>
|
|
<h2>Quickproject - create a Common Lisp project skeleton</h2>
|
|
|
|
<p>Quickproject is a library for creating a Common Lisp project
|
|
skeleton. It is available under a BSD-style license;
|
|
see <a href='LICENSE.txt'>LICENSE.txt</a> for details.
|
|
|
|
The latest version is 1.4.1, released on December 26th, 2019.
|
|
|
|
|
|
<p>Download
|
|
shortcut: <a href='http://www.xach.com/lisp/quickproject.tgz'>http://www.xach.com/lisp/quickproject.tgz</a>
|
|
|
|
<h2>Contents</h2>
|
|
|
|
<ul>
|
|
<li> <a href='#overview'>Overview</a>
|
|
<li> <a href='#examples'>Examples</a>
|
|
<li> <a href='#dictionary'>Dictionary</a>
|
|
<ul>
|
|
<li> <a href='#make-project'>make-project</a>
|
|
<li> <a href='#*author*'>*author*</a>
|
|
<li> <a href='#*include-copyright*'>*include-copyright*</a>
|
|
<li> <a href='#*license*'>*license*</a>
|
|
<li> <a href='#*template-directory*'>*template-directory*</a>
|
|
<li> <a href='#default-template-parameters'>default-template-parameters</a>
|
|
<li> <a href='#*template-parameter-functions*'>*template-parameter-functions*</a>
|
|
<li> <a href='#*after-make-project-hooks*'>*after-make-project-hooks*</a>
|
|
</ul>
|
|
<li> <a href='#feedback'>Feedback</a>
|
|
</ul>
|
|
|
|
<a name='overview'><h2>Overview</h2></a>
|
|
|
|
<p>Quickproject provides a quick way to make a Common Lisp
|
|
project. After creating a project, it extends the ASDF registry so
|
|
the project may be immediately loaded.
|
|
|
|
<a name='example'><h2>Examples</h2></a>
|
|
|
|
<pre class=code>
|
|
* <b>(quickproject:make-project #p"~/src/myproject/" :depends-on '(drakma cxml))</b>
|
|
"myproject"
|
|
|
|
* <b>(asdf:load-system "myproject")</b>
|
|
<i>load output</i>
|
|
</pre>
|
|
|
|
<pre class='code'>
|
|
* <b>(quickproject:make-project #p"~/src/websnarf/" :name "cl-websnarf")</b>
|
|
"cl-websnarf"
|
|
|
|
* <b>(directory #p"~/src/websnarf/*.*")</b>
|
|
(#p"~/src/websnarf/README.txt"
|
|
#p"~/src/websnarf/package.lisp"
|
|
#p"~/src/websnarf/cl-websnarf.asd"
|
|
#p"~/src/websnarf/cl-websnarf.lisp")
|
|
</pre>
|
|
|
|
<a name='dictionary'><h2>Dictionary</h2></a>
|
|
|
|
<p>The following symbols are exported from the <tt>quickproject</tt>
|
|
package.
|
|
|
|
<div class='item'>
|
|
<div class='type'><a name='make-project'>[Function]</a></div>
|
|
<div class='signature'>
|
|
<code class='name'>make-project</code>
|
|
<span class='args'>
|
|
<var>pathname</var> <code class='llkw'>&key</code>
|
|
<var>depends-on</var>
|
|
<var>author</var>
|
|
<var>include-copyright</var>
|
|
<var>license</var>
|
|
<var>name</var>
|
|
<var>template-directory</var>
|
|
<var>template-parameters</var>
|
|
</span>
|
|
<span class='result'>=> <var>project-name</var></span>
|
|
</div>
|
|
|
|
<blockquote class='description'>
|
|
<p>Create the skeleton of a Common Lisp project
|
|
in <var>directory</var>. If given, <var>name</var> is used as the
|
|
name of the project. Otherwise, the name is taken from the last
|
|
component in
|
|
the <a href="http://l1sp.org/cl/pathname-directory">pathname-directory</a>
|
|
of the pathname. For example, the last directory component
|
|
of <tt>#p"src/lisp/myproject/"</tt> is "myproject".
|
|
<p>The project skeleton consists of the following files:
|
|
|
|
<ul>
|
|
<li> README.txt
|
|
<li> package.lisp — defines a package named after the project
|
|
<li> <var>name</var>.asd — defines an ASDF system named after
|
|
the project, with a <tt>:depends-on</tt> list as given in the
|
|
function call
|
|
<li> <var>name</var>.lisp
|
|
</ul>
|
|
|
|
<p>If provided, <var>author</var> and <var>license</var> are used
|
|
to initialize certain parts of the default files with extra
|
|
information. The default values are taken
|
|
from <a href='#*author*'><tt>*AUTHOR*</tt></a>
|
|
and <a href='#*license*'><tt>*LICENSE*</tt></a>, respectively.
|
|
|
|
<p>If provided, the boolean argument to <var>include-copyright</var>
|
|
will determine whether copyright notices will be printed in the
|
|
header of each file.
|
|
|
|
<p>If provided, each file in <var>template-directory</var> is
|
|
rewritten
|
|
with <a href="http://weitz.de/html-template/">HTML-TEMPLATE</a>
|
|
into the new directory. The options are as follows:
|
|
|
|
<ul>
|
|
<li> The template markers are <tt>(#|</tt> and <tt>|#)</tt>
|
|
<li> No escaping is done in template values
|
|
<li> Template parameters are created by
|
|
appending <var>template-parameters</var> with the lists returned by
|
|
calling each entry
|
|
in <a href='#*template-parameter-functions*'><tt>*TEMPLATE-PARAMETER-FUNCTIONS*</tt></a>
|
|
</ul>
|
|
|
|
<p>After rewriting templates, each element
|
|
in <a href='#*after-make-project-hooks*'><tt>*AFTER-MAKE-PROJECT-HOOKS*</tt></a>
|
|
is called.
|
|
|
|
<p>After the project has been created, its pathname is added
|
|
to <tt>ASDF:*CENTRAL-REGISTRY*</tt>, so the project is immediately
|
|
loadable via <tt>ASDF:LOAD-SYSTEM</tt>.
|
|
</blockquote>
|
|
</div>
|
|
|
|
|
|
<div class='item'>
|
|
<div class='type'><a name='*author*'>[Special variable]</a></div>
|
|
<div class='signature'>
|
|
<code class='name'>*author*</code>
|
|
</div>
|
|
|
|
<blockquote class='description'>
|
|
<p>This string is used to initialize the <tt>:author</tt> argument
|
|
in the project system definition. The default initial value
|
|
is <tt>"Your Name <your.name@example.com>"</tt>.
|
|
</blockquote>
|
|
</div>
|
|
|
|
<div class='item'>
|
|
<div class='type'><a name='*include-copyright*'>[Special variable]</a></div>
|
|
<div class='signature'>
|
|
<code class='name'>*include-copyright*</code>
|
|
</div>
|
|
|
|
<blockquote class='description'>
|
|
<p>This variable is used to control whether a copyright notice (with
|
|
the author's name and the current year) should appear in the header
|
|
of each file.</tt>.
|
|
</blockquote>
|
|
</div>
|
|
|
|
<div class='item'>
|
|
<div class='type'><a name='*license*'>[Special variable]</a></div>
|
|
<div class='signature'>
|
|
<code class='name'>*license*</code>
|
|
</div>
|
|
|
|
<blockquote class='description'>
|
|
<p>This string is used to initialize the <tt>:description</tt>
|
|
argument in the project system definition. The default initial
|
|
value is <tt>"Specify license here"</tt>.
|
|
</blockquote>
|
|
</div>
|
|
|
|
<div class='item'>
|
|
<div class='type'><a name='*template-directory*'>[Special variable]</a></div>
|
|
<div class='signature'>
|
|
<code class='name'>*template-directory*</code>
|
|
</div>
|
|
|
|
<blockquote class='description'>
|
|
<p>If non-NIL, this variable should be bound to a pathname used as
|
|
the default value of <var>template-directory</var>
|
|
in <a href='#make-project'><tt>MAKE-PROJECT</tt></a>.
|
|
</blockquote>
|
|
</div>
|
|
|
|
<div class='item'>
|
|
<div class='type'><a name='default-template-parameters'>[Function]</a></div>
|
|
<div class='signature'>
|
|
<code class='name'>default-template-parameters</code>
|
|
<span class='args'>
|
|
</span>
|
|
<span class='result'>=> <var>parameters</var></span>
|
|
</div>
|
|
|
|
<blockquote class='description'>
|
|
<p>Return a plist with values for <tt>:name</tt>, <tt>:license</tt>,
|
|
and <tt>:author</tt> for the current project being created
|
|
via <a href='#make-project'><tt>MAKE-PROJECT</tt></a>. This
|
|
function is in the default value
|
|
of <a href='#*template-parameter-functions*'><tt>*TEMPLATE-PARAMETER-FUNCTIONS*</tt></a>.
|
|
|
|
</blockquote>
|
|
</div>
|
|
|
|
|
|
<div class='item'>
|
|
<div class='type'><a name='*template-parameter-functions*'>[Special variable]</a></div>
|
|
<div class='signature'>
|
|
<code class='name'>*template-parameter-functions*</code>
|
|
</div>
|
|
|
|
<blockquote class='description'>
|
|
<p>A list of functions that are called to produce template
|
|
parameters when rewriting templates
|
|
in <a href='#make-project'><tt>MAKE-PROJECT</tt></a>. Each
|
|
function is called with no arguments and should produce a list
|
|
of keyword/value pairs. The resulting lists are appended
|
|
together for use as template parameters
|
|
in <a href='http://weitz.de/html-template/#fill-and-print-template'><tt>HTML-TEMPLATE:FILL-AND-PRINT-TEMPLATE</tt></a>.
|
|
|
|
<p>The default value is <tt>(default-template-parameters)</tt>.
|
|
</blockquote>
|
|
</div>
|
|
|
|
|
|
<div class='item'>
|
|
<div class='type'><a name='*after-make-project-hooks*'>[Special variable]</a></div>
|
|
<div class='signature'>
|
|
<code class='name'>*after-make-project-hooks*</code>
|
|
</div>
|
|
|
|
<blockquote class='description'>
|
|
<p>A list of designators for functions to be called after a
|
|
project has been created. Each function should accept one required
|
|
argument, the pathname given
|
|
to <a href='#make-project'><tt>MAKE-PROJECT</tt></a>, and two
|
|
keyword arguments, <tt>:name</tt> and <tt>:depends-on</tt>, which
|
|
correspond to the name of the project (whether explicitly supplied
|
|
to <tt>MAKE-PROJECT</tt> or derived from the pathname) and the
|
|
<tt>:depends-on</tt> argument,
|
|
respectively. <tt>*default-pathname-defaults*</tt> is bound to the
|
|
newly created project pathname when hooks are called.
|
|
</blockquote>
|
|
</div>
|
|
|
|
|
|
<a name='feedback'><h2>Feedback</h2></a>
|
|
|
|
<p>For questions or comments about Quickproject, please email me, Zach
|
|
Beane <<a href='mailto:xach@xach.com'>xach@xach.com</a>>.
|
|
|
|
</div>
|
|
<br><br><br>
|
|
|
|
</body>
|