TMPL: Line-based templator
Last modification on
Motivation
While working on a simpler alternative to make,
I found the need to template build files to select between debug and release builds.
Instead of integrating templating into the build system,
I figured creating a generalized templator could prevent feature bloat and
perform better, since build files would only need to be "compiled" once during
initial configuration. The result is tmpl
.
Program
The program fits inside a single, small C file (~240 LOC).
The syntax is intentionally similar to that of the C preprocessor, since it is easy to parse, familiar and intuitive.
Key-value pairs for templating are specified via commandline arguments using
-D KEY=VALUE
, through a config file using -c CONFIG
, or the environment.
The source code is available at: https://git.sinitax.com/sinitax/tmpl
Examples
A Makefile to demonstrate templating:
#default PREFIX /usr/local
#default BINDIR /bin
#default CC gcc
#ifdef DEBUG
#define OPT_CFLAGS -Og -g
#else
#define OPT_CFLAGS -O2
#endif
all: test
test: test.c
#{CC} -o $@ $< #{OPT_CFLAGS} #{EXTRA_CFLAGS}
clean:
rm -f test
install:
install -m755 -t "#{DESTDIR}#{PREFIX}#{BINDIR}"
uninstall:
rm -f "#{DESTDIR}#{PREFIX}#{BINDIR}/test"
.PHONY: all clean install uninstall