Releases: ccpgames/ccp-stencil
Releases · ccpgames/ccp-stencil
Version 0.8.0 - Line ending change
Changed
FileRenderer
(and thusDirectoryRenderer
) now use\n
line endings in the
resulting file. This should probably just be an option with the default being
to preserve the line ending format of the template file, but since this is
being used to render files that should run on Linux and apparently incorrect
line endings mess up the shebang reading and sht like that so I'm applying
this "sht fix" for now.
Version 0.7.0 - Directory Rendering
[0.7.0] - 2024-05-30
Added
- A new
DirectoryRenderer
andDirectoryTemplate
to render entire directories
of templates in one go - Support for
{% skip_if %}
and{% setfilename %}
tags to control directory
names and skipping by adding them to a file called__stencil_meta__
placed in
any directory in aDirectoryTemplate
- The ability to run directory rendering via command line with the
-d
flag
Version 0.6.1 - FileRenderer Fix
Fixed
- Issue where
FileRenderer
output path got truncated by one directory if the target location didn't exist
Changed
- The
FileRenderer
output is now evaluated as a directory if it ends with a slash (or backslash), otherwise a file
Version 0.6.0 - SetFilename Update
[0.6.0] - 2024-05-30
Added
- A new
{% setfilename %}
tag where you can set the desired filename of the
rendered file dynamically in the tags body with normal template code e.g.
using the template context
Changed
- The
FileRenderer
can now define a directory as output location which will
result in the rendered file to be the same as the input template file name
(if any) unless set explicitly via the{% setfilename %}
tag.
Version 0.5.1
Version 0.5.1 - Fix to FileRenderer Loop
Fixed
- FileRenderer was hitting an infinite loop
- Added dynamic path extension to include cwd to enable
${__PY__:...}
injecting from project roots
Version 0.5.0 - Alviss version bump
Version 0.5.0 - Alviss version bump
Changed
- Bumped the version requirement of Alviss to 3.3 to get support for the new
${__PY__:...}
expressions in order to inject module versions into Alviss
contexts for CI/CD manifests
Version 0.4.0 - The "Skip If" tag update
Added
- New Extension that adds a
{% skip_if %}
tag where you can insert any
condition (e.g. checking the Context) and if it evals as True, a
CancelRendering
exception is raised and caught by the Renderers causing
them to silently just skip rendering that template.- The
StringRenderer
returnsNone
- The
StoutRenderer
prints out nothing - The
FileRenderer
doesn't create an output file
- The
- Added unittests for the
{% skip_if %}
tag
Version 0.3.0
Fixed
- A bug in the
guess_template_by_argument
method that raised exceptions while
checking to see if a given string could be interpreted as a path to an
existing file (which should be allowed to fail silently and then the string
returned as aStringTemplate
)
Version 0.2.0 - Embedding Extension & Base64 Filter update
Version 0.2.0 - Embedding Extension & Base64 Filter update
Added
- The
EmbedExtension
to the Jinja2 environment used that enables using the
{% embed 'my_file.txt' %}
to embed the requested file "as-is" (so not
parsed as a template or anything like that) into templates wholesale with
these optional arguments:indent
(default: 0) to indent each line of the embedded file by a certain
number of spaces, e.g. for embedding into YAML files, where indent is
syntactically importantalviss
(default:False
) to run the embedded file though the Alviss
"render_loader" before embedding the resultsenv
(default:False
) to make the Alviss parser render${__ENV__:...}
expressionsfidelius
(default:False
) to make the Alviss parser render
${__FID__:...}
expressions
- The main use case here was considered things like creating Kubernetes File
Config maps where e.g. config file content is embedded wholesale into the
manifest's YAML - The
base64
filter to the Jinja2 environment used to quicly encode context
variables as base64 encoded strings- The main use case here was considered things like rendering of Kubernetes
Secret manifests where keys need to be base64 encoded
- The main use case here was considered things like rendering of Kubernetes
- A bunch of "proper" unittests for the new embedding and filter functions
Changed
- The
FileTemplate
now uses the Jinja2 environment'sFileSystemLoader
,
pre-seeded with search paths of the current working directory (os.getcwd()
)
as well as the root directory of the script being executed (sys.argv[0]
)
plus whatever paths are defined in theSTENCIL_TEMPLATE_PATH
environment
variable, if any (multiple paths seperated by;
)
Version 0.1.0 - Initial Build
- Giving this a spin