Skip to main content

An Alviss powered Template renderer where the context input can be files and entire directory structures can be rendered.

Project description

CCP Stencil

An Alviss and Jinja2 powered template renderer where the context input can be files and entire directory structures can be rendered.

This is a generalized variant of the "CCP Borg Bootstrapper" project bootstrapping and build and deployment tool which used entire "template" projects that were rendered to bootstrap entire projects and to render CI/CD manifests on demand.

The rest of this readme is (at the moment) just a "sketch" for how this package should work and was written before any actual code or functionality.

Context

  • No context (Weird use case...?!?)
  • kwargs context (via code)
  • Dict context (via code)
  • Alviss file context (json/yaml + inheritance)
  • Args context (from commandline)

Template

  • String template (via code)
  • File template
  • Args template (from commandline)
  • Directory template

Renderer

  • String renderer (via code)
  • Stdout renderer (for commandline)
  • File renderer
  • Directory renderer

Other features...?

  • ENV var rendering (can be done via ${ENV:FOO} in Alviss input)?
  • Meta-data header in files for Directory rendering that controls file names and/or if they should be rendered or not
    • Skip-if tag for skipping file rendering
    • Some meta-tag that can control the output name of a file via the FileRenderer
  • Meta-data file for directories in Directory rendering that control the directory name?
  • Proper Jinja2 Environment Template Loader to enable Jinja's include/extend stuff?
  • Custom macros/scripts/filters?

Use Cases

  • From commandline (main use case, e.g. rendering CI/CD manifests)
  • From code

Command Line Use Case Examples

Using these as a basis for functionality (this is written before any actual code)!

Example 1

$ ccp-stencil -i context.yaml -t template.html -o result.html
  • Alviss file input: -i context.yaml
  • Template file input: -t template.html
  • Render file output: -o result.html

Example 2

$ ccp-stencil -a name=Bob -a age=7 -a color=Red -s "My name is {{name}} and I am {{age}} years old and my favorite color is {{color}}"
My name is Bob and I am 7 years old and my favorite color is Red
  • Args input: -a name=Bob -a age=7 -a color=Red
  • String template input: -s "My name is {name} and I am {age} years old and my favorite color is {color}"
  • Print (stdout) output: No argument, this is default!

Example 3

$ ccp-stencil -T templates/ -O build/
  • No context input: No argument, this is default!
  • Template directory input: -T templates/
  • Render directory output: -O build/

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ccpstencil-0.8.0.tar.gz (17.5 kB view hashes)

Uploaded Source

Built Distribution

ccpstencil-0.8.0-py3-none-any.whl (24.7 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page