#template-string #source #template #templating #variables #aws #external

bin+lib germinate

A templating library for injecting variables from multiple external sources

7 releases (breaking)

0.7.0 Sep 21, 2021
0.6.0 Aug 12, 2020
0.5.0 Jun 19, 2020
0.4.0 May 27, 2020
0.1.0 May 18, 2020

#250 in Template engine

GPL-3.0 license

51KB
549 lines

germinate

Crates.io docs.rs GitHub Workflow Status (branch) Crates.io

This crate provides a method of injecting variables from multiple external sources into a template string. Sources can be anything as long as they implement the Loader trait which handles the loading of the variables in a standard way.

Features

  • default - ["aws"]
  • aws - Enable the AWS value sources

Sources

Built In

These are the currently implemented sources and their associated template keys

Source Key Feature Description
AWS EC2 Instance Tags awsec2tag aws Load the value of AWS EC2 Instance Tags by their key
AWS EC2 Metadata Service awsec2metadata aws Load a value from the AWS EC2 Metadata Service by it's path
AWS SSM Parameter awsssm aws Load a value from the AWS SSM Parameter Store by it's name. LIMITATION when running on an EC2 instance, the parameter must be in the same region as the instance
Environment Variables env - Load the value of an environment variable

Example

let mut seed = Seed::new("Hi %env:NAME%!");
let output = seed.germinate().await?;

assert_eq!("Hi John!", output);

Custom Sources

You can also include your own sources using the Seed::add_custom_loader method. The only requirement is that the custom loader must implement the Loader trait

Example

let mut seed = Seed::new("Hi %name:name%");

// Add a custom loader for the name key. This is the loader that will be used whenever
// germinate finds %name:...% in the template string
seed.add_custom_loader("name".to_string(), Box::new(NameLoader {}));

let output = seed.germinate().await?;

assert_eq!("Hi John", output);

Binary

Germinate provides a CLI for templating files, available from the Github releases. To run the CLI, cimply download the binary for your system and check the usage with germinate --help

Example

The CLI can be used to parse an template file and output it either to stdout or optionally, an output file

# To print the parsed result to stdout
germinate myfile.txt.tmpl

# To write the output to a file
germinate myfile.txt.tmpl -o myfile.txt

License

GPL-3.0

Dependencies

~12–31MB
~475K SLoC