Note that template plugins are not available for external template engines.
You can call external applications as template functions. gnorm provides a
helper function for calling external functions called plugin
.
Take for instance the following template extracted from the tests.
{{plugin "nix" "echoPlugin" . }}
The snippet says call plugin nix
and pass echoPlugin
as the first argument,
we refer this argument as a function call on the plugin, and then pass the
current context to the plugin.
A plugin is a commandline executable with the following properties
stdin
i.e it reads the context from
stdin
stdout
in json formatThe context sent to plugins are of the shape { "data": SOME_VALUE}
where
SOME_VALUE
is any valid json object. It is up to the plugin author to decide
how to handle the shape and form of data.
The output should be in the same format as input. The plugin can exit with non
0
status and anything written to stderr
will be included in the error
message when executing templates.
Set PluginDirs
configuration value to the desired directories for plugin
lookup
## Add this to gnorm.toml
PluginDirs = ["/path/to/plugin/one" , "/path/to/plugin/two"]
So, say you call plugin foo
, gnorm will look for foo binary in the specified
directories.The lookup is done in the same order as the directories are
specified.