Hi Daniel,

I think there is a way to define a custom FreeMarker template path in IntelliJ 
- see 
https://intellij-support.jetbrains.com/hc/en-us/community/posts/115000686590-How-to-configure-the-freemarker-template-path-or-what-s-the-default-path-

Having said that we should take care that the IntelliJ plugin is happy 

* Some users do create web applications based on Apache FreeMarker
* Having FTL support built-in is a huge bonus for beginners

Regarding the intended role of "/templates"

* The implemented template loading tries to resolve the given template name as 
file and if there is no file the actual template loading is delegated to a 
"MultiTemplateLoader"
* In https://issues.apache.org/jira/browse/FREEMARKER-146 I split the existing 
templates into a reusable part (living now in "templates") and examples (living 
now in "examples")
* IMHO the "templates" directory should contain commonly useful templates - so 
they could be considered as guaranteed functionality
        * Transforming CSVs
        * Transforming Excel files to CSV, HTML & Markdown (and maybe 
Confluence Markup)
        * Transform JSON to YAML and the other way around
* I'm happy to have those templates as files in the installation directories - 
better visibility and user can add there own templates (if the want to play 
nasty)

What I want to change

* Use "templates" as FreeMarker template root for the CLI installation and 
"~/.freemarker-generator" directory
* Adopt the examples and documentation, e.g.  "freemarker-generator -t 
info.ftl" instead of "freemarker-generator -t templates/info.ftl"

What do you think?

Siegfried Goeschl


> On 05.08.2020, at 13:28, Daniel Dekany <daniel.dek...@gmail.com> wrote:
> 
> Ah, you have the FreeMarker plugin in IntelliJ, and that assumes something
> crazy like that? The Community Edition doesn't have that plugin, and I
> never saw it. But if that plugin indeed assumes that the template root is
> the project root... that wouldn't make sense, in any real world project.
> Even if some have a "templates" directory laying around in the directory as
> the POM, then that would be the template root (means, a template path is
> like "/foo.ftl", not "/templates/foo.ftl"), not the whole project. So, I
> certainly don't think we should align with a broken plugin, especially as
> most users won't be affected (they just use the binary).
> 
> Also, I'm a bit confused about the intended role of "/templates". Is it
> core (guaranteed) functionality in Generator CLI? As opposed to a core
> functionality of Generator itself? (Sure, for now Generator can be called
> via CLI only, but you see what I mean.) Or is it just some examples laying
> around, whose presence users shouldn't count on in their projects? If it's
> core functionality, then it certainly should be a Java resource, packed
> into the jar.
> 
> Also let's not skip the question from the earlier mail, regarding what path
> should this be available for the TemplateLoader (and for -t)?
> 
> On Wed, Aug 5, 2020 at 11:47 AM Siegfried Goeschl <
> siegfried.goes...@gmail.com> wrote:
> 
>> Hi Daniel,
>> 
>> When moving the "templates" to a subdirectory IntelliJ complains about not
>> finding the FTL include files - technically it is working but without
>> tweaking IntelliJ it spits out errors. And the Travis tests failed while my
>> local tests succeeded - see
>> https://travis-ci.org/github/apache/freemarker-generator/builds/714600403.
>> 
>> Regarding template root directory - I guess there is some room for
>> improvements
>> 
>> * I'm passing a list of template root directories (current directory, CLI
>> installation directory, ~/.freemarker-cli/"
>> * The "templates" directory is just the way I organised the overall file
>> structure
>> * Additional template root directory can be passed on the command line
>> * The implementation can pick up any FTL file using absolute or relative
>> file paths (and URLs)
>> 
>> Thanks in advance,
>> 
>> Siegfried Goeschl
>> 
>> 
>>> On 04.08.2020, at 22:12, Daniel Dekany <daniel.dek...@gmail.com> wrote:
>>> 
>>> Can you clarify, what part of IntelliJ is happy about that, and why?
>>> 
>>> Also it reminds me of another thing I wrote about earlier. Generally, we
>>> say that the template root directory shouldn't not contain anything but
>>> templates, so if the project root is the template root directory, or the
>>> freemarker-generator home directory, that's a bit fishy. Yes, the reason
>>> for this purist approach is partially security concerns with web
>>> applications, and this is not one. But whatever the original reasons are,
>>> FreeMarker has this omnipresent concept of the template root directory,
>>> which is kind of a virtual root directory for a template (i.e., they can
>>> leave it, and it's all templates, or rarely files referred from
>> templates,
>>> like images).
>>> 
>>> Also, it's strange/confusing if the template root directory has a
>>> "templates" subdirectory. I mean, the template root directory is what one
>>> would normally call the templates directory. As a template author, I
>> would
>>> expect some path like "/freemarker-generator/whatever.ftl" (also note
>> that
>>> it's an absolute path). There,  "/freemarker-generator/" tells me that
>> this
>>> is something included in freemarker-generator, and not templates of my
>>> project.
>>> 
>>> On Tue, Aug 4, 2020 at 8:51 PM Siegfried Goeschl <
>>> siegfried.goes...@gmail.com> wrote:
>>> 
>>>> I'm not happy about it :-)
>>>> 
>>>> * A top-level "templates" directory makes IntelliJ happy when includes
>> are
>>>> used
>>>> * I have an ExamplesTest which tests each documented command line usage
>>>> and I prefer to have it in sync with the documentation
>>>> * I actually tried it but reverted the changes since the Travis build
>> fails
>>>> 
>>>> Thanks in advance,
>>>> 
>>>> Siegfried Goeschl
>>>> 
>>>> 
>>>>> On 28.07.2020, at 22:34, Daniel Dekany <daniel.dek...@gmail.com>
>> wrote:
>>>>> 
>>>>> It's just that "templates" belongs to the "main" source code of the
>>>>> freemarker-generator-cli, similarly to
>> config/freemarker-cli.properties,
>>>>> which is under src/main. (I think many of us expect a Maven project
>> root
>>>>> directory to only contain the "noise" needed for build and legal, and
>>>> "src"
>>>>> that contains *all* the essential source code.) Also, as the source
>> tree
>>>>> doesn't mirror the binary distribution directory tree anyway, so I'm
>> not
>>>>> sure if there's any fundamental reason to make an exception with
>>>>> "templates", and put it under the root.
>>>>> 
>>>>> On Tue, Jul 28, 2020 at 4:09 PM Siegfried Goeschl <
>>>>> siegfried.goes...@gmail.com> wrote:
>>>>> 
>>>>>> Hi folks,
>>>>>> 
>>>>>> Back from the mountains and in front of the keyboard again :-O
>>>>>> 
>>>>>> * I created a JIRA ticket and will push a feature branch soon (bad
>>>> habits
>>>>>> die hard)
>>>>>> * I will go through the licences (review and collect in "licenses"
>>>>>> directory)
>>>>>> * Good point about plugin versions being defined in apache POM - will
>>>>>> rework them
>>>>>> * I will delete the existing configuration of the "release" profile
>>>>>> 
>>>>>> Some things to discuss
>>>>>> 
>>>>>> * What are the benefits to move "templates" to "src/main/templates"?
>>>>>> Currently they are in sync with "freemarker-cli" which is quite nice
>> for
>>>>>> tests & documentation ...
>>>>>> 
>>>>>> Thanks in advance,
>>>>>> 
>>>>>> Siegfried Goeschl
>>>>>> 
>>>>>> 
>>>>>>> On 26.07.2020, at 01:27, Daniel Dekany <daniel.dek...@gmail.com>
>>>> wrote:
>>>>>>> 
>>>>>>> I said I will help in the Apache release process, so only focusing on
>>>>>> that,
>>>>>>> so some points:
>>>>>>> 
>>>>>>> - We are required to have a so-called source release (every other
>>>>>>> artifact is optional in the policy). As we are using the
>>>>>> org.apache:apache
>>>>>>> parent, that should generate that automatically, with .asc and sha512
>>>>>> and
>>>>>>> all. But currently it doesn't, because maven-release-plugin
>>>>>> config/argument
>>>>>>> is overwritten with this:
>>>>>> <arguments>-Dmaven.javadoc.skip=true</arguments>.
>>>>>>> We should keep configuring release at minimum, to avoid such
>>>> accidents.
>>>>>>> Maybe as in
>>>>>>> https://github.com/apache/freemarker-docgen/blob/master/pom.xml#L70.
>>>>>>> - I assume we also want a binary release, for the CLI only, and
>>>>>>> freemarker-generator-cli-x.y.z-*app*.zip (note the "-app") will be
>> our
>>>>>>> binary release artifact. Then:
>>>>>>> - It bundles some dependency binaries that are not under ASL2
>> license.
>>>>>>>   Unfortunately, the licenses of those must be included in the
>>>>>>> distribution.
>>>>>>>   See the LICENSE at
>>>>>>>   https://github.com/apache/freemarker-docgen/blob/master/LICENSE.
>>>> At
>>>>>>>   the bottom, it lists the licenses, then it refers to the actual
>>>>>> license
>>>>>>>   files. As we will have many licenses, let's create a "licenses"
>>>>>> directory
>>>>>>>   for them. (In the future, the dependencies have to be checked
>>>>>>> for changes.
>>>>>>>   Even version upgrades my pull in sneaky transient dependencies.
>>>> Some
>>>>>>>   licenses are not even allowed, so anything but ASL2, MIT,
>>>>>>>   BSD-without-advertisement-clause, will need closer attention.)
>>>>>>>   - I noticed that the documentation is not included in the binary
>>>>>>>   distribution. But because of the extra legal burden including it
>>>>>> would
>>>>>>>   bring (we have fonts and icons under CC-SA and SIL OFL in the
>>>> Docgen
>>>>>>>   output), I actually prefer that to stay like that.
>>>>>>>   - .sha512 file is not yet generated
>>>>>>> - freemarker-generator-cli/src/site: If you agree, instead of this I
>>>>>>> will create freemarker-generator*-site*/src/docgen, and convert the
>>>>>>> Markdown to XDocBook. For now this will be only the CLI
>> documentation,
>>>>>> and
>>>>>>> the JavaDoc, as the freemarker-generator-maven-plugin is not ready.
>>>> One
>>>>>>> annoyance I realized is that we should have Docgen in Maven Central
>>>>>> for the
>>>>>>> builds to work reliably in the future, which means that Docgen has to
>>>>>> be
>>>>>>> officially released (it never was, it's an internal tool). That would
>>>>>> be a
>>>>>>> minimalistic release, means, no announcement, no web site, just the
>>>>>> bare
>>>>>>> minimum (i.e., source release, and deployment to Maven Central). I
>>>> have
>>>>>>> some backlog there (Google keeps nagging me about mobile issues), but
>>>> I
>>>>>>> hope I can fix that in the coming days, then go through the official
>>>>>>> release process (takes 1-2 weeks).
>>>>>>> - Some smaller things:
>>>>>>>   -
>>>>>>>   - Having a "release" profile is also hopefully unnecessary,
>> because
>>>>>>>   org.apache:apache takes care of signing.
>>>>>>>   - We should also remove most plugin version management, as many of
>>>>>>>   those versions are set in org.apache:apache.
>>>>>>>   - freemarker-generator-cli/templates should be inside
>>>>>>>   freemarker-generator-cli/src/main/templates, I guess.
>>>>>>> 
>>>>>>> P.s.: Siegfired asked our opinions in another thread. I did my part,
>>>> even
>>>>>>> too much (;, so, would be good if others participate in that as well.
>>>>>>> 
>>>>>>> --
>>>>>>> Best regards,
>>>>>>> Daniel Dekany
>>>>>> 
>>>>>> 
>>>>> 
>>>>> --
>>>>> Best regards,
>>>>> Daniel Dekany
>>>> 
>>>> 
>>> 
>>> --
>>> Best regards,
>>> Daniel Dekany
>> 
>> 
> 
> -- 
> Best regards,
> Daniel Dekany

Reply via email to