You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@freemarker.apache.org by sg...@apache.org on 2020/07/01 05:49:28 UTC
[freemarker-generator] 02/02: FREEMARKER-149 Support multiple
template transformation on the command line
This is an automated email from the ASF dual-hosted git repository.
sgoeschl pushed a commit to branch FREEMARKER-149
in repository https://gitbox.apache.org/repos/asf/freemarker-generator.git
commit 9235311f7c7133e816232963f6f9ce88388fa74b
Author: Siegfried Goeschl <si...@gmail.com>
AuthorDate: Wed Jul 1 07:49:12 2020 +0200
FREEMARKER-149 Support multiple template transformation on the command line
---
.../generator/base/template/TemplateOutput.java | 8 +++
.../base/template/TemplateTransformation.java | 8 +++
.../org/apache/freemarker/generator/cli/Main.java | 4 +-
.../site/markdown/cli/concepts/transformation.md | 61 ++++++++++++++++------
4 files changed, 62 insertions(+), 19 deletions(-)
diff --git a/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/template/TemplateOutput.java b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/template/TemplateOutput.java
index 426c0f1..818d66d 100644
--- a/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/template/TemplateOutput.java
+++ b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/template/TemplateOutput.java
@@ -75,6 +75,14 @@ public class TemplateOutput {
return writer != null ? writer : fileWriter();
}
+ @Override
+ public String toString() {
+ return "TemplateOutput{" +
+ "writer=" + writer +
+ ", file=" + file +
+ '}';
+ }
+
private FileWriter fileWriter() {
Validate.notNull(file, "Output file is null");
diff --git a/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/template/TemplateTransformation.java b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/template/TemplateTransformation.java
index b13a799..8c19478 100644
--- a/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/template/TemplateTransformation.java
+++ b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/template/TemplateTransformation.java
@@ -41,4 +41,12 @@ public class TemplateTransformation {
public TemplateOutput getTemplateOutput() {
return templateOutput;
}
+
+ @Override
+ public String toString() {
+ return "TemplateTransformation{" +
+ "templateSource=" + templateSource +
+ ", templateOutput=" + templateOutput +
+ '}';
+ }
}
diff --git a/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/Main.java b/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/Main.java
index f9d135a..8b3b853 100644
--- a/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/Main.java
+++ b/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/Main.java
@@ -208,6 +208,8 @@ public class Main implements Callable<Integer> {
.isReadFromStdin(readFromStdin)
.setArgs(args)
.setConfiguration(configuration)
+ .setDataModels(dataModels)
+ .setDataSources(getCombinedDataSources())
.setDataSourceIncludePattern(dataSourceIncludePattern)
.setDataSourceExcludePattern(dataSourceExcludePattern)
.setInputEncoding(inputEncoding)
@@ -216,8 +218,6 @@ public class Main implements Callable<Integer> {
.setOutputEncoding(outputEncoding)
.setOutputs(outputs)
.setParameters(parameterModelSupplier.get())
- .setDataSources(getCombinedDataSources())
- .setDataModels(dataModels)
.setSystemProperties(systemProperties != null ? systemProperties : new Properties())
.setTemplateDirectories(templateDirectories)
.setTemplateNames(templateSourceOptions.templates)
diff --git a/freemarker-generator-cli/src/site/markdown/cli/concepts/transformation.md b/freemarker-generator-cli/src/site/markdown/cli/concepts/transformation.md
index f7788ee..73477eb 100644
--- a/freemarker-generator-cli/src/site/markdown/cli/concepts/transformation.md
+++ b/freemarker-generator-cli/src/site/markdown/cli/concepts/transformation.md
@@ -1,47 +1,74 @@
## Transformation
-The `freemarker-cli` generates text output based on FreeMarker templates and data
+The `freemarker-cli` generates text output based on processing FreeMarker templates and data
* A command line invocation requires 1..n `templates` and 0..n `data sources` / `data models`
-* A command line invocation is mapped to a series of `transformations`
-* The `transformation` consists of exactly one `template`, 0..n `data sources` / `data models` and an `output`
-* An `output` is either written to
+* A command line invocation is mapped to a series of `template transformations`
+* The `transformation` consists of exactly one `template`, 0..n `data sources` / `data models` written to an `output`
+* The `output` is either written to
* `stdout`
- * an output file
- * an output directory
+ * one or more output files
+ * one or output directories
* When the output is written to a directory
* the structure of the input directory is preserved
* a `ftl` file extension is removed
-Transforming a single template and data source to `stdout`
+### Examples
+
+Transforming a single template to a single output file
```
freemarker-cli \
--t templates/csv/md/transform.ftl examples/data/csv/contract.csv
+-t templates/csv/md/transform.ftl examples/data/csv/contract.csv \
+-o target/contract.md
```
-Transforming multiple templates to multiple output files
+Transforming multiple templates to multiple output files (1:1 mapping between templates and outputs)
```
-freemarker-cli \
+> freemarker-cli \
-t templates/csv/md/transform.ftl -o target/contract.md \
-t templates/csv/html/transform.ftl -o target/contract.html \
examples/data/csv/contract.csv
+
+> tree target
+target
+|-- contract.html
+`-- contract.md
```
Transforming single template directory to single output directory
```
-freemarker-cli \
--P NGINX_HOSTNAME=localhost \
--t examples/data/template -o target/out/template1
+> freemarker-cli \
+-t examples/data/template -o target/template1
+
+> tree target
+target
+`-- template1
+ |-- application.properties
+ `-- nginx
+ `-- nginx.conf
+
+
```
Transforming multiple template directories to multiple output directories
```
-freemarker-cli \
--P NGINX_HOSTNAME=localhost \
--t examples/data/template -o target/out/template1 \
--t examples/data/template -o target/out/template2
+freemarker-cli \
+-t examples/data/template -o target/template1 \
+-t examples/data/template -o target/template2
+
+> tree target
+target
+|-- template1
+| |-- application.properties
+| `-- nginx
+| `-- nginx.conf
+`-- template2
+ |-- application.properties
+ `-- nginx
+ `-- nginx.conf
+
```