1. Mock Skel Readme

1.1. Overview

status
WIP
forge
Heptapod
mirror
Github

This system provides functions and macros for building and deploying project skeletons. This is not a general purpose templating system. It is specifically for my software stack.

1.1.1. Goals

  • vaporize boilerplate code and docs
  • integrate reasonably well with my tools (Emacs/etc)
  • object-oriented project management

1.2. Quickstart

Make sure you have sbcl installed:

sbcl --version

Then compile the program. This command produces a binary called skel in the project root:

sbcl --noinform  --non-interactive --eval '(ql:quickload :app/cli/skel)' --eval '(asdf:make :app/cli/skel)'

Run the binary without any args, which will print a skeleton of the current project directory (*skel-project*).

skel -h

Here's skel's skelfile:


This is just a form without the top-level parentheses - you're free to omit them in a skelfile.

1.2.1. describe

The describe command can be used to check the currently active skelfile, printing any errors and the parsed object.

skel show

1.2.2. TODO compile

Skelfiles can be compiled to produce a new project skeleton or update an existing one.

Try compiling skel's skelfile:

skel compile

You may also compile individual components of the project structure, for example, to compile the rules into a makefile:

skel compile --rules
cat makefile

1.3. Examples

1.3.1. Default

When you run skel init this is the basic skelfile that will be generated in the current directory, depending on the following contexts:

  • default user config
  • directory contents
  • cli args

With no cli args or user config and an empty directory the output looks like this:

;;; examples @ 2023-10-09.23:38:23 -*- mode: skel; -*-
:name "examples"

1.3.2. Imports

1.3.3. Multi

1.4. Tests

The unit tests may also be a useful reference:

(ql:quickload :skel/tests)
(in-package :skel.tests)
(setq *log-level* nil)
;; (setq *catch-test-errors* nil)
(setq *compile-tests* t)
(list (multiple-value-list (do-tests :skel)) (test-results *test-suite*))

1.5. API

TODO
CLOS-based core classes
TODO
EIEIO-based wrapper classes
api.svg