__ __ ____
\ \ / /_____ ___ ____ / / /______
\ \ / __/ __ `__ \/ __ \/ / __/ ___/
/ / / /_/ / / / / / /_/ / / /_/ /
/_/ \__/_/ /_/ /_/ .___/_/\__/_/
/_/
This tool generates a set of files based on one or more templates in combination with a set of values used as tempalte variables.
For tempaltes, mustache is used. For the manifest file, YAML is used (*.yaml
and *.yml
are equally supported).
For execution, at least one *.mustache
template and one *.yml
manifest file are required.
tmpltr [workingDirectory] [--manifest <manifest yml file>] [--verbose] [--dryrun] [--console]
option | optional | default | description |
---|---|---|---|
workingDirectory | true | . | working directory in which to search for the templates and the manifest.yml files (if not further specified) |
--verbose | true | false | increased output on "debug" level |
--dryrun | true | false | do not write any templated files |
--console | true | false | print the templated files to the console |
--manifest | true | '' | location of the manifest.yml file. absolute or relative to the pwd |
--stdin | true | false | reads the manifest file data from stdin. useful for usage with secrets |
For mustache template files, please refer to the official documentation
manifest.yml
file structure:
---
# list of files to be generated
files:
# destination file relative to the working directory
- destination: ./foo.txt
# template file name. all template files must be in the working directory.
# *.mustache file extension is optional.
template: my-template[.mustache]
# object of values to be rendered into the template
values:
foo: "foo"
bar: "bar"
fizzBuzz: 42
The --manifest
switch of the tmpltr
command can be used to specify the manifest file. It has highest priority and is considered to be either absolute or relative to the pwd
.
/home/
├─ some-project/
│ ├─ templates/
│ │ ├─ manifest.yml
│ │ ├─ template-a.mustache
│ │ ├─ template-b.mustache
│ ├─ README.md
│ ├─ my-manifest.yml
cd /home/some-project/
tmpltr --manifest ./my-manifest.yml templates
# equivalent to
tmpltr --manifest /home/some-project/my-manifest.yml templates
If no --manifest
switch is specified, the manifest.y[a]ml
file is searched in the working directory.
cd /home/some-project/
tmpltr templates # uses the manifest.yml file in the templates directory
# equivalet to
cd /home/some-project/templates/
tmpltr # uses the pwd (/home/some-project/templates/) as working directory and uses the manifest.yml file
If no manifest.y[a]ml
file is found, all *.y[a]ml
files in the working directory are considered to be manifest files and checked against the YAML validator.
/home/
├─ some-project/
│ ├─ templates/
│ │ ├─ manifest-a.yml
│ │ ├─ manifest-b.yaml
│ │ ├─ template-a.mustache
│ │ ├─ template-b.mustache
│ ├─ README.md
│ ├─ my-manifest.yml
cd /home/some-project/
tmpltr templates # uses manifest-a.yml AND manifest-b.yaml
npm i -g tmpltr
# OR
npx tmpltr
docker run --rm -v ${PWD}:/usr/src mxcd/tmpltr
Made with ♥, pizza and beer by MaPa