This is an automated email from the ASF dual-hosted git repository. sgoeschl pushed a commit to branch FREEMARKER-172 in repository https://gitbox.apache.org/repos/asf/freemarker-generator.git
commit 302ee6b857db3a6d4575761c31c8ab52a928d73d Author: Siegfried Goeschl <[email protected]> AuthorDate: Mon Feb 8 22:53:09 2021 +0100 FREEMARKER-172 [freemarker-generator] Propagate properties to data sources --- .../generator/base/datasource/DataSource.java | 15 ++-- .../base/datasource/DataSourcesSupplier.java | 8 +- .../loader/EnvironmentDataSourceLoader.java | 4 +- .../datasource/loader/FileDataSourceLoader.java | 10 +-- .../datasource/loader/HttpDataSourceLoader.java | 6 +- .../freemarker/generator/base/uri/NamedUri.java | 14 ++-- .../src/app/scripts/run-examples.bat | 9 +- .../src/app/scripts/run-examples.sh | 9 +- .../freemarker-generator/lib/commons-csv.ftl | 18 ++++ .../src/site/markdown/cli/concepts/data-sources.md | 36 +++++++- .../src/site/markdown/cli/concepts/named-uris.md | 96 ++++++++++++++++++++-- .../freemarker/generator/cli/ExamplesTest.java | 5 ++ .../freemarker/generator/cli/ManualTest.java | 2 +- 13 files changed, 193 insertions(+), 39 deletions(-) diff --git a/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/datasource/DataSource.java b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/datasource/DataSource.java index 5d5d42d..6a9ac96 100644 --- a/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/datasource/DataSource.java +++ b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/datasource/DataSource.java @@ -137,6 +137,10 @@ public class DataSource implements Closeable, javax.activation.DataSource { return name; } + public String getGroup() { + return group; + } + /** * Get the content type. * @@ -167,10 +171,6 @@ public class DataSource implements Closeable, javax.activation.DataSource { closeables.close(); } - public String getGroup() { - return group; - } - /** * Get the file name from the underlying "FileDataSource". All * other data sources will return an empty string. @@ -227,6 +227,10 @@ public class DataSource implements Closeable, javax.activation.DataSource { return properties; } + public String getProperty(String key) { + return getProperties().get(key); + } + /** * Try to get the length lazily, efficient and without consuming the input stream. * @@ -365,7 +369,8 @@ public class DataSource implements Closeable, javax.activation.DataSource { } /** - * Get all metadata parts as map. + * Get all metadata parts as map. Please note that a <code>UrlDataSource</code> + * triggers multiple network calls to determine the content type and encoding. * * @return Map of metadata parts */ diff --git a/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/datasource/DataSourcesSupplier.java b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/datasource/DataSourcesSupplier.java index 7f7906e..9c4afdd 100644 --- a/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/datasource/DataSourcesSupplier.java +++ b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/datasource/DataSourcesSupplier.java @@ -112,8 +112,8 @@ public class DataSourcesSupplier implements Supplier<List<DataSource>> { private static List<DataSource> resolveFileOrDirectory(String source, String include, String exclude, Charset charset) { final NamedUri namedUri = NamedUriStringParser.parse(source); final String path = namedUri.getFile().getPath(); - final String group = namedUri.getGroupOrElse(DEFAULT_GROUP); - final Charset currCharset = getCharsetOrElse(namedUri, charset); + final String group = namedUri.getGroupOrDefault(DEFAULT_GROUP); + final Charset currCharset = getCharsetOrDefault(namedUri, charset); final Map<String, String> parameters = namedUri.getParameters(); return fileSupplier(path, include, exclude).get().stream() .map(file -> fromFile(getDataSourceName(namedUri, file), group, file, currCharset, parameters)) @@ -124,8 +124,8 @@ public class DataSourcesSupplier implements Supplier<List<DataSource>> { return new RecursiveFileSupplier(singletonList(source), singletonList(include), singletonList(exclude)); } - private static Charset getCharsetOrElse(NamedUri namedUri, Charset def) { - return Charset.forName(namedUri.getParameter(NamedUri.CHARSET, def.name())); + private static Charset getCharsetOrDefault(NamedUri namedUri, Charset def) { + return Charset.forName(namedUri.getParameterOrDefault(NamedUri.CHARSET, def.name())); } private static boolean isHttpUri(String value) { diff --git a/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/datasource/loader/EnvironmentDataSourceLoader.java b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/datasource/loader/EnvironmentDataSourceLoader.java index 41eeeef..fdad400 100644 --- a/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/datasource/loader/EnvironmentDataSourceLoader.java +++ b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/datasource/loader/EnvironmentDataSourceLoader.java @@ -47,9 +47,9 @@ public class EnvironmentDataSourceLoader implements DataSourceLoader { public DataSource load(String source) { final NamedUri namedUri = NamedUriStringParser.parse(source); final String key = stripRootDir(namedUri.getUri().getPath()); - final String contentType = namedUri.getMimeTypeOrElse(Mimetypes.MIME_TEXT_PLAIN); + final String contentType = namedUri.getMimeTypeOrDefault(Mimetypes.MIME_TEXT_PLAIN); final String name = firstNonEmpty(namedUri.getName(), key, Location.ENVIRONMENT); - final String group = namedUri.getGroupOrElse(DEFAULT_GROUP); + final String group = namedUri.getGroupOrDefault(DEFAULT_GROUP); if (StringUtils.isEmpty(key)) { return DataSourceFactory.fromEnvironment(name, group, contentType); } else { diff --git a/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/datasource/loader/FileDataSourceLoader.java b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/datasource/loader/FileDataSourceLoader.java index 1a0aec5..97b837c 100644 --- a/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/datasource/loader/FileDataSourceLoader.java +++ b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/datasource/loader/FileDataSourceLoader.java @@ -41,10 +41,10 @@ public class FileDataSourceLoader implements DataSourceLoader { @Override public DataSource load(String source) { final NamedUri namedUri = NamedUriStringParser.parse(source); - final String group = namedUri.getGroupOrElse(FreeMarkerConstants.DEFAULT_GROUP); - final Charset charset = namedUri.getCharsetOrElse(UTF_8); + final String group = namedUri.getGroupOrDefault(FreeMarkerConstants.DEFAULT_GROUP); + final Charset charset = namedUri.getCharsetOrDefault(UTF_8); final File file = namedUri.getFile(); - final String name = namedUri.getNameOrElse(file.getName()); + final String name = namedUri.getNameOrDefault(file.getName()); final Map<String, String> parameters = namedUri.getParameters(); return DataSourceFactory.fromFile(name, group, file, charset, parameters); } @@ -52,9 +52,9 @@ public class FileDataSourceLoader implements DataSourceLoader { @Override public DataSource load(String source, Charset charset) { final NamedUri namedUri = NamedUriStringParser.parse(source); - final String group = namedUri.getGroupOrElse(FreeMarkerConstants.DEFAULT_GROUP); + final String group = namedUri.getGroupOrDefault(FreeMarkerConstants.DEFAULT_GROUP); final File file = namedUri.getFile(); - final String name = namedUri.getNameOrElse(UriUtils.toStringWithoutFragment(file.toURI())); + final String name = namedUri.getNameOrDefault(UriUtils.toStringWithoutFragment(file.toURI())); final Map<String, String> parameters = namedUri.getParameters(); return DataSourceFactory.fromFile(name, group, file, charset, parameters); } diff --git a/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/datasource/loader/HttpDataSourceLoader.java b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/datasource/loader/HttpDataSourceLoader.java index aac4bc0..8aebcb0 100644 --- a/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/datasource/loader/HttpDataSourceLoader.java +++ b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/datasource/loader/HttpDataSourceLoader.java @@ -43,11 +43,11 @@ public class HttpDataSourceLoader implements DataSourceLoader { public DataSource load(String source) { final NamedUri namedUri = NamedUriStringParser.parse(source); final URI uri = namedUri.getUri(); - final String group = namedUri.getGroupOrElse(DEFAULT_GROUP); - final Charset charset = namedUri.getCharsetOrElse(null); + final String group = namedUri.getGroupOrDefault(DEFAULT_GROUP); + final Charset charset = namedUri.getCharsetOrDefault(null); final String mimeType = namedUri.getMimeType(); final URL url = toUrl(uri); - final String name = namedUri.getNameOrElse(UriUtils.toStringWithoutFragment(uri)); + final String name = namedUri.getNameOrDefault(UriUtils.toStringWithoutFragment(uri)); final Map<String, String> parameters = namedUri.getParameters(); return DataSourceFactory.fromUrl(name, group, url, mimeType, charset, parameters); } diff --git a/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/uri/NamedUri.java b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/uri/NamedUri.java index 6003d3c..bd84549 100644 --- a/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/uri/NamedUri.java +++ b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/uri/NamedUri.java @@ -65,7 +65,7 @@ public class NamedUri { return name; } - public String getNameOrElse(String def) { + public String getNameOrDefault(String def) { return isEmpty(name) ? def : name; } @@ -73,7 +73,7 @@ public class NamedUri { return group; } - public String getGroupOrElse(String def) { + public String getGroupOrDefault(String def) { return isEmpty(group) ? def : group; } @@ -89,8 +89,8 @@ public class NamedUri { return parameters.get(key); } - public String getParameter(String key, String defaultValue) { - return parameters.getOrDefault(key, defaultValue); + public String getParameterOrDefault(String key, String def) { + return parameters.getOrDefault(key, def); } public boolean hasName() { @@ -109,8 +109,8 @@ public class NamedUri { return getParameter(NamedUri.MIMETYPE); } - public String getMimeTypeOrElse(String def) { - return getParameter(NamedUri.MIMETYPE, def); + public String getMimeTypeOrDefault(String def) { + return getParameterOrDefault(NamedUri.MIMETYPE, def); } public Charset getCharset() { @@ -118,7 +118,7 @@ public class NamedUri { return Charset.forName(charsetName); } - public Charset getCharsetOrElse(Charset def) { + public Charset getCharsetOrDefault(Charset def) { final String charsetName = getParameter(NamedUri.CHARSET); return StringUtils.isEmpty(charsetName) ? def : Charset.forName(charsetName); } diff --git a/freemarker-generator-cli/src/app/scripts/run-examples.bat b/freemarker-generator-cli/src/app/scripts/run-examples.bat index 6ef6f9a..5fc0e1c 100644 --- a/freemarker-generator-cli/src/app/scripts/run-examples.bat +++ b/freemarker-generator-cli/src/app/scripts/run-examples.bat @@ -37,6 +37,13 @@ REM ========================================================================= echo "examples\templates\demo.ftl" %FREEMARKER_CMD% -t examples\templates\demo.ftl README.md --output-encoding CP1252 > target\out\demo.txt +############################################################################# +# DataSources +############################################################################# + +echo "examples\templates\datasources.ftl" +$FREEMARKER_CMD -t examples\templates\datasources.ftl -s :data=examples/data > target\out\datasources.txt + REM ========================================================================= REM Interactive Mode REM ========================================================================= @@ -177,4 +184,4 @@ echo "templates\freemarker-generator\yaml\json\transform.ftl" %FREEMARKER_CMD% -t freemarker-generator\yaml\json\transform.ftl examples\data\yaml\swagger-spec.yaml > target\out\swagger-spec.json echo "Created the following sample files in .\target\out" -dir .\target\out \ No newline at end of file +dir .\target\out diff --git a/freemarker-generator-cli/src/app/scripts/run-examples.sh b/freemarker-generator-cli/src/app/scripts/run-examples.sh index 034774f..d0f42b7 100755 --- a/freemarker-generator-cli/src/app/scripts/run-examples.sh +++ b/freemarker-generator-cli/src/app/scripts/run-examples.sh @@ -43,6 +43,13 @@ echo "examples/templates/demo.ftl" $FREEMARKER_CMD -t examples/templates/demo.ftl README.md > target/out/demo.txt || { echo >&2 "Test failed. Aborting."; exit 1; } ############################################################################# +# DataSources +############################################################################# + +echo "examples/templates/datasources.ftl" +$FREEMARKER_CMD -t examples/templates/datasources.ftl -s :data=examples/data > target/out/datasources.txt || { echo >&2 "Test failed. Aborting."; exit 1; } + +############################################################################# # Interactive Mode ############################################################################# @@ -198,4 +205,4 @@ echo "templates/freemarker-generator/yaml/json/transform.ftl" $FREEMARKER_CMD -t freemarker-generator/yaml/json/transform.ftl examples/data/yaml/swagger-spec.yaml > target/out/swagger-spec.json || { echo >&2 "Test failed. Aborting."; exit 1; } echo "Created the following sample files in ./target/out" -ls -l ./target/out \ No newline at end of file +ls -l ./target/out diff --git a/freemarker-generator-cli/src/app/templates/freemarker-generator/lib/commons-csv.ftl b/freemarker-generator-cli/src/app/templates/freemarker-generator/lib/commons-csv.ftl index e8b0538..881a2f2 100644 --- a/freemarker-generator-cli/src/app/templates/freemarker-generator/lib/commons-csv.ftl +++ b/freemarker-generator-cli/src/app/templates/freemarker-generator/lib/commons-csv.ftl @@ -17,6 +17,24 @@ --> <#--- + Detemine the CSV format for reading a CSV files from properties of the data source. + + * format - see https://commons.apache.org/proper/commons-csv/apidocs/org/apache/commons/csv/CSVFormat.html + * delimiter - symbolic name of delimiter, e.g. "COLON" or "SEMICOLON" + * header - whether the first rows are headers +--> +<#function dataSourceFormat dataSource> + <#assign format = tools.csv.formats[dataSource.properties.format!"DEFAULT"]> + <#assign delimiter = tools.csv.toDelimiter(dataSource.properties.delimiter!format.getDelimiter())> + <#assign withHeader = dataSource.properties.header!"true"> + <#assign format = format.withDelimiter(delimiter)> + <#if withHeader?boolean> + <#assign format = format.withFirstRecordAsHeader()> + </#if> + <#return format> +</#function> + +<#--- Detemine the CSV format for reading a CSV files using user-supplied parameters from the data model. diff --git a/freemarker-generator-cli/src/site/markdown/cli/concepts/data-sources.md b/freemarker-generator-cli/src/site/markdown/cli/concepts/data-sources.md index b4205e3..7ad0daf 100644 --- a/freemarker-generator-cli/src/site/markdown/cli/concepts/data-sources.md +++ b/freemarker-generator-cli/src/site/markdown/cli/concepts/data-sources.md @@ -171,7 +171,7 @@ Charset : ${dataSource.charset} Extension : ${dataSource.extension} Nr of chars : ${dataSource.text?length} Nr of bytes : ${dataSource.bytes?size} -File name : ${dataSource.metadata["filename"]} +File name : ${dataSource.fileName} Iterating Over Metadata Of A Datasource --------------------------------------------------------------------------- @@ -207,4 +207,38 @@ uri : file:/Users/sgoeschl/work/github/apache/freemarker-generator/f group : default ``` +### Inspecting A DataSource + +``` +> freemarker-generator -t examples/templates/datasources.ftl user:csv=examples/data/csv/transactions.csv#delimiter=TAB + +Invoke Arbitrary Methods On DataSource +--------------------------------------------------------------------------- +Name : user +Group : csv +Nr of lines : 101 +Content Type : text/csv +Charset : UTF-8 +Extension : csv +Nr of chars : 12,643 +Nr of bytes : 12,643 +File name : transactions.csv +URI schema : file + +Iterating Over Metadata Of A Datasource +--------------------------------------------------------------------------- +extension : csv +basename : transactions +filename : transactions.csv +filepath : /Users/sgoeschl/work/github/apache/freemarker-generator/freemarker-generator-cli/target/appassembler/examples/data/csv +name : user +mimetype : text/csv +uri : file:/Users/sgoeschl/work/github/apache/freemarker-generator/freemarker-generator-cli/target/appassembler/examples/data/csv/transactions.csv +group : csv + +Iterating Over Properties Of A Datasource +--------------------------------------------------------------------------- +delimiter : TAB +``` + diff --git a/freemarker-generator-cli/src/site/markdown/cli/concepts/named-uris.md b/freemarker-generator-cli/src/site/markdown/cli/concepts/named-uris.md index 55bf420..164a07a 100644 --- a/freemarker-generator-cli/src/site/markdown/cli/concepts/named-uris.md +++ b/freemarker-generator-cli/src/site/markdown/cli/concepts/named-uris.md @@ -9,7 +9,7 @@ A Named URI consists of As a refresher, a URI is made up of the following components (inspired by https://docs.gomplate.ca/datasources/) -``` +```text foo://[email protected]:8042/over/there?name=ferret#nose \_/ \_______________________/\_________/ \_________/ \__/ | | | | | @@ -20,15 +20,17 @@ For our purposes, the scheme and the path components are especially important, t | Component | Purpose | |-----------|-----------------------------------------------------------------------------------------------------------| -| scheme | All data sources require a scheme (except for file when using relative paths) | -| authority | Used only by remote data sources, and can be omitted in some of those cases. | +| scheme | All data sources require a scheme (except for file when using relative paths) | +| authority | Used only by remote data sources, and can be omitted in some of those cases. | | path | Can be omitted, but usually used as the basis of the locator for the datasource. | | query | Used mainly for HTTP and HTTPS URLs | | fragment | Used rarely for providing additional attributes, e.g. `mimeType` of `charset` | +### Using Named URIs For A File + The following Named URI loads a "user.csv" and the data source is available as `my_users` -``` +```text freemarker-generator -t freemarker-generator/info.ftl my_users=examples/data/csv/user.csv FreeMarker Generator DataSources @@ -39,7 +41,7 @@ URI : file:/Users/sgoeschl/work/github/apache/freemarker-generator/freemarker-ge A Named URI allows to pass additional information as part of the fragment, e.g. the charset of the text file -``` +```text freemarker-generator -t freemarker-generator/info.ftl my_users=examples/data/csv/user.csv#charset=UTF-16 FreeMarker Generator DataSources @@ -50,8 +52,8 @@ URI : file:/Users/sgoeschl/work/github/apache/freemarker-generator/freemarker-ge In addition to the simplified file syntax full URIs can be used -``` -freemarker-generator -t freemarker-generator/info.ftl http://google.com?foo=bar +```text +freemarker-generator -t freemarker-generator/info.ftl 'http://google.com?foo=bar' FreeMarker Generator DataSources ------------------------------------------------------------------------------ @@ -61,11 +63,87 @@ URI : http://google.com?foo=bar and also combined with a name -``` -freemarker-generator -t freemarker-generator/info.ftl page=http://google.com\?foo\=bar +```text +freemarker-generator -t freemarker-generator/info.ftl 'page=http://google.com?foo=bar' FreeMarker Generator DataSources ------------------------------------------------------------------------------ [#1]: name=page, group=default, fileName=page mimeType=text/html, charset=ISO-8859-1, length=-1 Bytes URI : http://google.com?foo=bar ``` + +### Using Named URIs For Directories + +A Name URI can be also combined with file directories. + +Load all CVS files of a directory using the group "csv" + +```text +freemarker-generator -t freemarker-generator/info.ftl :csv=examples/data/csv + +FreeMarker Generator DataSources +------------------------------------------------------------------------------ +[#1]: name=file:/Users/sgoeschl/work/github/apache/freemarker-generator/freemarker-generator-cli/target/appassembler/examples/data/csv/contract.csv, group=csv, fileName=contract.csv, mimeType=text/csv, charset=UTF-8, length=6,328 Bytes +URI : file:/Users/sgoeschl/work/github/apache/freemarker-generator/freemarker-generator-cli/target/appassembler/examples/data/csv/contract.csv +... +[#7]: name=file:/Users/sgoeschl/work/github/apache/freemarker-generator/freemarker-generator-cli/target/appassembler/examples/data/csv/user.csv, group=csv, fileName=user.csv, mimeType=text/csv, charset=UTF-8, length=376 Bytes +URI : file:/Users/sgoeschl/work/github/apache/freemarker-generator/freemarker-generator-cli/target/appassembler/examples/data/csv/user.csv +``` + +or use a charset for all files of a directory + +```text +freemarker-generator -t freemarker-generator/info.ftl 'examples/data/csv#charset=UTF-16&mimetype=text/plain' + +FreeMarker Generator DataSources +------------------------------------------------------------------------------ +[#1]: name=file:/Users/sgoeschl/work/github/apache/freemarker-generator/freemarker-generator-cli/target/appassembler/examples/data/csv/contract.csv, group=default, fileName=contract.csv, mimeType=text/csv, charset=UTF-16, length=6,328 Bytes +URI : file:/Users/sgoeschl/work/github/apache/freemarker-generator/freemarker-generator-cli/target/appassembler/examples/data/csv/contract.csv +... +[#7]: name=file:/Users/sgoeschl/work/github/apache/freemarker-generator/freemarker-generator-cli/target/appassembler/examples/data/csv/user.csv, group=default, fileName=user.csv, mimeType=text/csv, charset=UTF-16, length=376 Bytes +URI : file:/Users/sgoeschl/work/github/apache/freemarker-generator/freemarker-generator-cli/target/appassembler/examples/data/csv/user.csv +``` + +It is also possible to provide data source properties to all files being loaded + +```text +freemarker-generator -t examples/templates/datasources.ftl 'examples/data/csv#format=DEFAULT' + +file:/Users/sgoeschl/work/github/apache/freemarker-generator/freemarker-generator-cli/target/appassembler/examples/data/csv/user.csv +============================================================================== + +Invoke Arbitrary Methods On DataSource +--------------------------------------------------------------------------- +Name : file:/Users/sgoeschl/work/github/apache/freemarker-generator/freemarker-generator-cli/target/appassembler/examples/data/csv/user.csv +Group : default +Nr of lines : 5 +Content Type : text/csv +Charset : UTF-8 +Extension : csv +Nr of chars : 376 +Nr of bytes : 376 +File name : user.csv +URI schema : file + +Iterating Over Metadata Of A Datasource +--------------------------------------------------------------------------- +extension : csv +basename : user +filename : user.csv +filepath : /Users/sgoeschl/work/github/apache/freemarker-generator/freemarker-generator-cli/target/appassembler/examples/data/csv +name : file:/Users/sgoeschl/work/github/apache/freemarker-generator/freemarker-generator-cli/target/appassembler/examples/data/csv/user.csv +mimetype : text/csv +uri : file:/Users/sgoeschl/work/github/apache/freemarker-generator/freemarker-generator-cli/target/appassembler/examples/data/csv/user.csv +group : default + +Iterating Over Properties Of A Datasource +--------------------------------------------------------------------------- +format : DEFAULT + +``` + + + + + + diff --git a/freemarker-generator-cli/src/test/java/org/apache/freemarker/generator/cli/ExamplesTest.java b/freemarker-generator-cli/src/test/java/org/apache/freemarker/generator/cli/ExamplesTest.java index 5c5ebd5..88067b2 100644 --- a/freemarker-generator-cli/src/test/java/org/apache/freemarker/generator/cli/ExamplesTest.java +++ b/freemarker-generator-cli/src/test/java/org/apache/freemarker/generator/cli/ExamplesTest.java @@ -48,6 +48,11 @@ public class ExamplesTest extends AbstractMainTest { } @Test + public void shouldRunDataSourceExamples() throws IOException { + assertValid(execute("-t src/app/examples/templates/datasources.ftl -s :csv=src/app/examples/data/csv")); + } + + @Test public void shouldRunCsvExamples() throws IOException { assertValid(execute("-t freemarker-generator/csv/html/transform.ftl src/app/examples/data/csv/contract.csv")); assertValid(execute("-t freemarker-generator/csv/md/transform.ftl src/app/examples/data/csv/contract.csv")); diff --git a/freemarker-generator-cli/src/test/java/org/apache/freemarker/generator/cli/ManualTest.java b/freemarker-generator-cli/src/test/java/org/apache/freemarker/generator/cli/ManualTest.java index f08e38b..1e6600a 100644 --- a/freemarker-generator-cli/src/test/java/org/apache/freemarker/generator/cli/ManualTest.java +++ b/freemarker-generator-cli/src/test/java/org/apache/freemarker/generator/cli/ManualTest.java @@ -24,7 +24,7 @@ import java.io.IOException; public class ManualTest extends AbstractMainTest { // private static final String CMD = "-V"; - private static final String CMD = "-t src/app/examples/templates/datasources.ftl -s :csv-data=src/app/examples/data/csv#separator=COLON https://xkcd.com/info.0.json"; + private static final String CMD = "-t src/app/examples/templates/datasources.ftl -s :csv-data=src/app/examples/data/csv#separator=COLON https://xkcd.com/info.0.json envvars=env:///"; @Override public String execute(String commandLine) throws IOException {
