A DataSource
consists of lazy-loaded data available in Apache FreeMarker's model (context) - it provides
charset
for reading textual contentcontent type
name
and a group
A DataSource
can be loaded from the file system, e.g. as positional command line argument
bin/freemarker-cli -t templates/info.ftl README.md FreeMarker CLI DataSources ------------------------------------------------------------------------------ [#1], name=README.md, group=default, contentType=text/markdown, charset=UTF-8, length=57,188 Bytes URI : file:/Users/sgoeschl/work/github/apache/freemarker-generator/freemarker-generator-cli/target/appassembler/README.md
from an URL
bin/freemarker-cli --data-source xkcd=https://xkcd.com/info.0.json -t templates/info.ftl FreeMarker CLI DataSources ------------------------------------------------------------------------------ [#1], name=xkcd, group=default, contentType=application/json, charset=UTF-8, length=-1 Bytes URI : https://xkcd.com/info.0.json
or from an environment variable, e.g. NGINX_CONF
having a JSON payload
export NGINX_CONF='{"NGINX_PORT":"8443","NGINX_HOSTNAME":"localhost"}' bin/freemarker-cli -t templates/info.ftl -s conf=env:///NGINX_CONF#mimetype=application/json FreeMarker CLI DataSources ------------------------------------------------------------------------------ [#1], name=conf, group=default, contentType=application/json, charset=UTF-8, length=50 Bytes URI : env:///NGINX_CONF
Of course you can load multiple DataSources
directly
bin/freemarker-cli -t templates/info.ftl README.md xkcd=https://xkcd.com/info.0.json FreeMarker CLI DataSources ------------------------------------------------------------------------------ [#1], name=README.md, group=default, contentType=text/markdown, charset=UTF-8, length=57,188 Bytes URI : file:/Users/sgoeschl/work/github/apache/freemarker-generator/freemarker-generator-cli/target/appassembler/README.md [#2], name=xkcd, group=default, contentType=application/json, charset=UTF-8, length=-1 Bytes URI : https://xkcd.com/info.0.json
or load them from a directory
bin/freemarker-cli -t templates/info.ftl -s site/sample/ FreeMarker CLI DataSources ------------------------------------------------------------------------------ [#1], name=combined-access.log, group=default, contentType=text/plain, charset=UTF-8, length=2,068 Bytes URI : file:/Users/sgoeschl/work/github/apache/freemarker-generator/freemarker-generator-cli/target/appassembler/site/sample/accesslog/combined-access.log ... [#22], name=swagger-spec.yaml, group=default, contentType=text/yaml, charset=UTF-8, length=17,555 Bytes URI : file:/Users/sgoeschl/work/github/apache/freemarker-generator/freemarker-generator-cli/target/appassembler/site/sample/yaml/swagger-spec.yaml
which can be combined with include
and exclude
filters
bin/freemarker-cli -t templates/info.ftl -s site/sample --data-source-include=*.json FreeMarker CLI DataSources ------------------------------------------------------------------------------ [#1], name=github-users.json, group=default, contentType=application/json, charset=UTF-8, length=7,168 Bytes URI : file:/Users/sgoeschl/work/github/apache/freemarker-generator/freemarker-generator-cli/target/appassembler/site/sample/json/github-users.json [#2], name=swagger-spec.json, group=default, contentType=application/json, charset=UTF-8, length=24,948 Bytes URI : file:/Users/sgoeschl/work/github/apache/freemarker-generator/freemarker-generator-cli/target/appassembler/site/sample/json/swagger-spec.json