Sounds good! Maybe dataSources should also implement TemplateSequenceModel. Then you can also write dataSources?filter(...) and such, no need for ?values.
On Sat, Jul 11, 2020 at 10:59 PM Siegfried Goeschl < siegfried.goes...@gmail.com> wrote: > Hi folks, > > merged FREEMARKER-148 > ( > https://issues.apache.org/jira/projects/FREEMARKER/issues/FREEMARKER-148?filter=allopenissues) > > bringing the following changes > > * Tools are exposed as map, e.g. `tools.csv` or `tools["csv"]` > * Data sources are exposed as map, e.g. `dataSources.user` or > `dataSources["user.csv"]` > * For data sources without user-supplied name I'm using the underlying > URI to enforce uniqueness > * Data sources can be accessed using list semantics using > `dataSources?values` > * Filtering can be done using `filter` built-in, e.g. `<#list > dataSources?values?filter(ds -> ds.match("filePath", > "*/src/test/data/properties")) as ds>` > * As a consequence `DataSources`helper class is no longer exposed > > Thanks in advance, > > Siegfried Goeschl > > > Forwarded message: > > > From: Daniel Dekany <daniel.dek...@gmail.com> > > To: FreeMarker developer list <dev@freemarker.apache.org> > > Subject: Re: Current state of "freemarker-generator" > > Date: Tue, 7 Jul 2020 20:20:03 +0200 > > > > See some quick reaction below. > > > > On Tue, Jul 7, 2020 at 3:25 PM Siegfried Goeschl < > > siegfried.goes...@gmail.com> wrote: > > > >> Hi folks, > >> > >> I assembled the open discussions & TODOs - see below > >> > >> Thanks in advance, > >> > >> Siegfried Goeschl > >> > >> > >> 1. Open Discussions > >> > >> > ============================================================================= > >> > >> > >> 1.1 Naming of CLI file > >> > >> > ----------------------------------------------------------------------------- > >> > >> It is currently named "freemarker-cli" but it was suggested to call > >> it > >> "freemarker-generator" - I'm happy with "freemarker-cli" since it > >> reflects the Maven project layout > >> > > > > To clarify, mainly for others, the idea behind that is that we have a > > single tool, called "freemarker-generator". That tool can be called > > through > > CLI for now, but in the future maybe can be also called Maven, Gradle, > > or > > directly through Java API. This unification didn't happen though; we > > only > > have a CLI tool. freemarker-generator-maven is currently totally > > separate, > > both technically and conceptually. > > > > My opinion about the naming: That you are calling the CLI interface is > > obvious when you are doing it, so it's not very helpful to restate. > > Seeing > > "freemarker-generator" tells more. Also people who use the > > "freemarker-cli" > > script will call the whole product "freemarker CLI", which wasn't our > > intent when we named this subroject freemarker-generator. Also note > > that > > the Maven module name is "freemarker-generator-cli" (not just > > "freemarker-cli"). > > > > 1.2 Complex Transformations using the CLI > >> > >> > ----------------------------------------------------------------------------- > >> > >> That a large topic (seed templates, seed datasources, shared > >> datasources, aggregation versus generation) - currently low on my > >> priority list because > >> > >> * Transforming multiple templates and template directories is > >> supported > >> * Personally I would not use a command-line tool for source code > >> generation but use a plugin (to avoid extra dependencies to be > >> installed) > >> > > > > Sure, for source code generation most will use a > > Maven/Gradle/whatever-build-tool plugin (regardless of the number of > > dependencies). But data-seeded-generation is not tied to source code > > generation (that was just what we happened to run into here). Also > > people may prefer doing non-source-code generation from > > Maven/Gradle/etc > > too (for example, to generate a site as part of the build), so > > template-seeded-generation is not tied to the CLI either. It's less > > guess-work regarding user needs if we let these mix, instead of > > separating > > features into specialized bubbles (like maven-plugin does data-seeded > > only, > > CLI does template-seeded only). This fragmentation also makes it more > > likely that some of these "bubbles" will become unmaintained, which is > > my > > primary fear when it comes to any FreeMarker satellite projects. > > > > To keep the number of dependencies under control, probably the data > > loaders > > should go into separate modules. For the CLI binary distribution it's > > fine > > to pack all of them (if licenses allow that), but for anything else, > > of > > course that would be awkward. > > > > > >> > >> Question being discussed are > >> > >> * Is this an important feature? > >> * Can it be implemented later (if required) without breaking stuff? > >> > >> > >> 1.3 Site Generation > >> > >> > ----------------------------------------------------------------------------- > >> > >> Currently Maven & Markdown is used but it is suggested to migrate to > >> XDocBook to match the existing FreeMarker documentation. > >> > >> * Daniel is having a look at it > >> > > > > Yeah. I try to apply the same solution everywhere as much as possible > > here, given our constraints. > > > > > >> 1.4 Data Loaders > >> > >> > ----------------------------------------------------------------------------- > >> > >> Currently it is possible to materialize certain files types directly > >> in > >> the model using "-m" or "--data-model" parameter which parses the > >> given > >> content based on the content type > >> > >> ``` > >> freemarker-cli --data-model > >> post=https://jsonplaceholder.typicode.com/posts/2 -i 'post title is: > >> ${post.title}'; echo > >> ``` > >> > >> It was suggested to change to something like > >> > >> ``` > >> -s 'post=json("https://jsonplaceholder.typicode.com/posts/2")' > >> ``` > >> > >> which adds more flexibility > >> > > > > An additional major point there was that then pretty much the same > > could > > work from templates as well, where we currently use a different (and > > IMO > > quite verbose) approach. Two places (-m, and inside the template), > > same(ish) solution. Easier to grasp for users, and hopefully easier to > > maintain for us in the long term. > > > > > >> 1.5 Named URIs > >> > >> > ----------------------------------------------------------------------------- > >> > >> Currently Named URIs are supported to provide a name and additional > >> metadats (mimetype, encoding) - the current implementation is not > >> complete but it should look like > >> > >> ``` > >> -s 'myTable=foo/bar.csv#format=EXCEL&delimiter=TAB' > >> ``` > >> > >> Current suggestion is to switch to something like > >> > >> ``` > >> -s 'myTable=csv("foo/bar.csv", {"format": "EXCEL", "delimiter": > >> ";"})' > >> ``` > >> > >> 1.6 Exposing DataSources > >> > >> > ----------------------------------------------------------------------------- > >> > >> Currently a class `DataSources` is used which keeps a list of data > >> sources and allows lookup by name (mixture of list and map) - we have > >> ongoing discussions > >> > >> * Does a DataSource has a name when not directly specified by the > >> user? > >> * Shall we enforce unique data source names? > >> > >> > >> 1.7 Making Usage More FreeMarker Friendly > >> > >> > ----------------------------------------------------------------------------- > >> > >> In FREEMARKER-148 I wrapped the `DataSources` into a `BeanModel` > >> allowing better FTL support, e.g. > >> > >> * `DataSources[0]` instead of `DataSources.get(0)` > >> * `DataSources["user"]` instead of `DataSource.get("user")` > >> > > > > Or rather: DataSources.user > > That's the same as DataSources["user"], but nicer. > > > > > >> > >> Care must be taken regarding name collisions of data sources and > >> exposed > >> methods of `DataSources` > >> > >> > >> 1.8 Overlap Of CLI And Maven Plugin > >> > >> > ----------------------------------------------------------------------------- > >> > >> Both artifacts reside in the same Maven build but currently the > >> `Maven > >> Plugin` is completely independent > >> > >> * This might change in the future but I spend little time on the > >> Maven > >> plugin > >> > > > > I don't think the maven plugin should be in freemaker-generator in > > this > > form. There's useful functionality there, but then it's practically > > like > > if we started another project next to what you have worked on, and, > > see my > > fragmentation argument earlier. We got enough to maintain. Anyway, > > rest of > > my stand point () it already known. > > > > > >> 1.9 Support Of Backward Compatibility > >> > >> > ----------------------------------------------------------------------------- > >> > >> I lean towards 0.X.Y release and not guaranteeing backward > >> compatibility > >> - little field testing and no real users. > >> > >> > >> 1.10 Support Of Groups > >> > >> > ----------------------------------------------------------------------------- > >> > >> The Named URI allow to assign an optional group which can be used to > >> lookup up data sources > >> > >> ``` > >> -data-source 'myTable:data=foo/bar.csv' > >> ``` > >> > >> * I implemented it since I though it would be a nice feature but not > >> so > >> sure about it any longer :-) > >> * It was suggest to swap name and group, e.g. `-data-source > >> 'data:myTable=foo/bar.csv'` > >> > > > > Can you show the intended use cases for groups? > > > > 2. TODOs > >> > >> > ============================================================================= > >> > >> > >> 2.1 Discuss And Prioritise The Open Topics > >> > >> > ----------------------------------------------------------------------------- > >> > >> Discuss and define what needs to be done for the first public > >> release. > >> > >> > >> 2.2 Get The Release Process Going > >> > >> > ----------------------------------------------------------------------------- > >> > >> FreeMarker project is using `Ant` for the release process (see > >> https://freemarker.apache.org/committer-howto.html) but that does not > >> work out-of-the-box with the `freemarker-generator` Maven project. > >> > >> > >> 2.3 Tool Access in FreeMarker Model > >> > >> > ----------------------------------------------------------------------------- > >> > >> All tools are directly exposed which adds a lot of noise - might be a > >> map a better idea? > >> > >> ``` > >> tools["csv"] > >> tools["gson"] > >> ``` > >> > > > > The nicer syntax for the same: > > tools.csv > > tools.gson > > > > Seems to be a good idea to me. > > > > > >> > >> instead of > >> > >> ``` > >> ${CSVTool} > >> ${GsonTool} > >> ``` > >> > >> > >> 2.3 DataSource Access in FreeMarker Model > >> > >> > ----------------------------------------------------------------------------- > >> > >> As discussed above a `DataSources` instance is exposed - maybe it > >> should > >> be called `dataSources` since it might be only a dumb list/map? > >> > > > > I think so, but because it was never like a static utility, unlike > > CSVTool, > > etc. > > > > > >> On 5 Jul 2020, at 18:38, Daniel Dekany wrote: > >> > >>> On Sun, Jul 5, 2020 at 4:13 PM Siegfried Goeschl < > >>> siegfried.goes...@gmail.com> wrote: > >>> > >>>> Hi Daniel, > >>>> > >>>> No problem with the XDocBook if you feel strongly about it :-) Will > >>>> the > >>>> Maven site also be published somehow? > >>>> > >>>> Regarding releasing "freemarker-generator" > >>>> > >>>> * At the end of the day it is a command line tool people might use > >>>> sporadically - having said that the Maven plugin is a slightly > >>>> different > >>>> story > >>>> * As far as I'm concerned my use-cases (data-centric processing & > >>>> cloud > >>>> configuration stuff) are reasonably working > >>>> * I guess we can spend another 12 months discussing assumptions, > >>>> architectural decisions and implementation details (while > >>>> appreciating your > >>>> knowledge and insights) > >>>> > >>> > >>> Let's not do that, but it's not what is happening either, as far as > >>> I > >>> see. > >>> There were like 3(ish) issues of the more fundamental nature (not > >>> details) > >>> that I brought up. Actually, re-raised them now after a few months, > >>> because > >>> I see no closure on your side. I mean, you agree but can't invest > >>> into > >>> it, > >>> or you don't think these serve real demands, or... what is it? > >>> > >>> I also said that as far as I'm concerned, we can do a release, if > >>> users are > >>> properly informed about what we do not promise. > >>> > >>> > >>>> * As long as there is no release & real users out there those > >>>> discussion > >>>> are mostly an intellectual exercise > >>>> > >>> > >>> In general, yes, but it depends on the concrete cases. For example, > >>> data-file-seeded generation. The Maven plugin donators did that at > >>> work. > >>> FMPP users did both directions too. Those are real users. That we > >>> don't > >>> address that can have some valid reasons, but not having real/proven > >>> value > >>> is not one of them. Or at least I guess you will agree with that. > >>> > >>> > >>>> * There is a danger that we never get a release out as it happened > >>>> with > >>>> the Maven plugin > >>>> > >>> > >>> The maven plugin was abandoned by the donators right after the > >>> donation. > >>> Nobody cared, or had the time they may wanted to have, so nobody did > >>> anything with it. (That's really the #1 issue with OS development, > >>> when > >>> there's no company with paid developers behind it.) > >>> > >>> > >>>> I think the code base went a long way already so we should clearly > >>>> define > >>>> what's ABSOLUTELY missing to get it out the door . > >>>> > >>> > >>> Sure, let's see what others find (I have already told my > >>> observations). > >>> > >>> > >>>> Please note that there are a couple of additional tasks actually to > >>>> create > >>>> a user base > >>>> > >>>> * No idea how to get the Apache release procedures working > >>>> (signing, > >>>> staging, etc ..) > >>>> > >>> > >>> It's documented here, but we (or at least I) will help: > >>> https://freemarker.apache.org/committer-howto.html > >>> Whatever you will find missing from there, we should add. > >>> > >>> > >>>> * Need to look int Brew and Linux distributions > >>>> > >>> > >>> And Windows, if you have access... tests fail on that for example. > >>> (Some > >>> charset or line ending mess... didn't investigate yet.) > >>> > >>> > >>>> * Getting some public awareness - blogs, presentations, ApacheCon > >>>> anyone? > >>>> > >>> > >>> Tweet is where we have some people... and of course menu item on > >>> freemarker.apache.org. > >>> > >>> Thanks in advance, > >>>> > >>>> Siegfried Goeschl > >>>> > >>>> > >>>>> On 05.07.2020, at 15:18, Daniel Dekany <daniel.dek...@gmail.com> > >>>>> wrote: > >>>>> > >>>>> Find answers inline. > >>>>> > >>>>> On Sun, Jul 5, 2020 at 9:31 AM Siegfried Goeschl < > >>>>> siegfried.goes...@gmail.com <mailto:siegfried.goes...@gmail.com>> > >>>>> wrote: > >>>>> > >>>>>> Hi Daniel, > >>>>>> > >>>>>> thanks for your feedback ... > >>>>>> > >>>>>> # 1. Site Generation > >>>>>> > >>>>>> Maven is not soo bad - I uploaded the generated site to > >>>>>> http://www.senilesoftwareengineer.org/freemarker-generator/ - I > >>>>>> personally have no problem using FreeMarker documentation > >>>>>> approach > >>>>>> but > >>>>>> decided no to follow it up for the time being due to time > >>>>>> constraints. > >>>>>> > >>>>> > >>>>> So if I convert the markdown to XDocBook, and set up site > >>>>> generation > >>>>> for > >>>>> it, and thereafter you will edit XDocBook (I recommend XXE for > >>>>> that), > >>>> will > >>>>> that be OK with you? > >>>>> > >>>>> # 2. Design/Architectural Doubts > >>>>>> > >>>>>> ## 2.1 Parsed Data > >>>>>> > >>>>>> Currently we can load files/URLs as "DataSource" (which need to > >>>>>> be > >>>>>> processed in FTL) or we can use "-m / --data-model" to parse and > >>>>>> expose > >>>>>> the content directly (see > >>>>>> > >>>>>> > >>>> > >> > http://www.senilesoftwareengineer.org/freemarker-generator/freemarker-generator-cli/cli/concepts/data-models.html > >>>>>> ). > >>>>>> > >>>>> > >>>>> (Yeah, that's where I said that it looks like a quick ad-hoc > >>>>> solution, > >>>> and > >>>>> as such is quite limited.) > >>>>> > >>>>> Regarding a less programmatic way - Named URIs are used (see > >>>>>> > >>>>>> > >>>> > >> > http://www.senilesoftwareengineer.org/freemarker-generator/freemarker-generator-cli/cli/concepts/named-uris.html > >>>> < > >>>> > >> > http://www.senilesoftwareengineer.org/freemarker-generator/freemarker-generator-cli/cli/concepts/named-uris.html > >>>>> ) > >>>>>> > >>>>>> to pass additional metadata but the implementation requires some > >>>>>> re-work > >>>>>> to pass arbitrary metadata in the fragment. > >>>>>> > >>>>>> E.g. what should be possible is > >>>>>> > >>>>>> ``` > >>>>>> freeMarker-cli -t some.ftl -m > >>>>>> > >>>>>> > >>>> > >> > user=somepath/user.csv#delimiter=TAB&format=DEFAULT&charset=UTF-16&header=false > >>>>>> ${CSVtool.parse(DataSources["user"])} > >>>>>> ``` > >>>>>> > >>>>> The idea is to be able to pass all metadata being used to parse > >>>>> the > >>>>> data > >>>>>> source - that would be also helpful for defining a SQL data > >>>>>> source. > >>>>>> > >>>>> > >>>>> Yes. But I guess we should break out from the preconception that a > >>>>> data > >>>>> source must be an URL, and also that therefore we have to encode > >>>>> all > >>>>> the > >>>>> parsing and selection parameters into the anchor as name-value > >>>>> pairs > >>>> (which > >>>>> also implies that you might have % escapes). Because we sometimes > >>>>> List > >>>> and > >>>>> Map<String, Object>-like data structures as well, etc. (Also, > >>>>> using > >>>>> the > >>>>> anchor is kind of an abuse of the URL syntax, and &name=value is > >>>>> query > >>>>> parameter syntax, not anchor syntax. So this is maybe confusing > >>>>> for > >>>> users, > >>>>> like they will keep writing ? instead of #.) > >>>>> > >>>>> My idea is that a Data Source should be the name of a Data Loader > >>>>> (like, > >>>>> "csv", "excel", "jdbc", etc.), plus its parameters. To specify > >>>>> that, > >>>>> we > >>>>> should use FTL method call syntax, because that syntax the users > >>>>> have to > >>>>> learn anyway, and it's still relatively expressive (and can be > >>>>> re-used in > >>>>> actual templates - see that later): > >>>>> -s 'myTable=csv("foo/bar.csv", {"format": "EXCEL", "delimiter": > >>>>> ";"})' > >>>>> > >>>>> If we have this (which has basically the same meaning as it has > >>>> currently): > >>>>> -s myRawTable=foo/bar.csv > >>>>> that could be just a shorthand for: > >>>>> -s myRawTable='raw("foo/bar.csv")' > >>>>> > >>>>> So "raw" data is what you pass to "tools" for parsing in the > >>>>> current > >>>>> version. > >>>>> > >>>>> If you prefer do parsing in the templates, then you can reuse what > >>>>> you > >>>>> learned about -s, as it's pretty much the same: > >>>>> <#assign myTable = DataLoaders.csv(DataSources.myRawTable, { > >>>>> "format": > >>>>> "EXCEL", "delimiter": ";" })> > >>>>> > >>>>> Also, if you decide to parse data inside the template, doing it > >>>>> will > >>>>> be > >>>>> very similar as in the -s switch. > >>>>> > >>>>> > >>>>>> ## Data versus Template Driven Generation > >>>>>> > >>>>>> Currently a variety of transformations are supported on the > >>>>>> command > >>>>>> line > >>>>>> (see > >>>>>> > >>>>>> > >>>> > >> > http://www.senilesoftwareengineer.org/freemarker-generator/freemarker-generator-cli/cli/concepts/transformation.html > >>>>>> ) > >>>>>> > >>>>>> * single template > >>>>>> * multiple templates > >>>>>> * directory of templates > >>>>>> > >>>>>> Regarding "template versus data driven" generation - CLI does not > >>>>>> support data-driven generation where one output file is generated > >>>>>> per > >>>>>> data source. > >>>>>> > >>>>> > >>>>> Yes. That's exactly what I feel is a major mistake on the long > >>>>> run. > >>>>> At > >>>>> least we should be able to add it later, but I guess, to ensure > >>>>> that, we > >>>>> pretty much have to implement it. So what will happen with this, > >>>>> what's > >>>>> your standpoint? > >>>>> > >>>>> Furthermore, I don't think that we should have a "mode" for this, > >>>>> which > >>>>> applies for a whole run. I think I'm repeating myself from some > >>>>> months > >>>> ago, > >>>>> but, to recap, there are simply "seeds" that cause generating an > >>>>> output > >>>>> file. That "seed" can be a template, or a data file, or part of > >>>>> loaded > >>>> data > >>>>> (like each row in a table is a "seed"). And I believe it's worth > >>>>> it > >>>>> to > >>>>> allow mixing these in the same run, because then > >>>>> freemarker-generator > >>>> will > >>>>> be good enough fit for more use-cases. So for example, you have > >>>>> some > >>>>> JSON > >>>>> files in your project, each will generate a java file (typical > >>>>> source > >>>> code > >>>>> generation), but you also have templates for pom.xml, etc., that > >>>>> will > >>>>> generate its own output. > >>>>> > >>>>> ## 2.2 Convergence of Maven Plugin & CLI > >>>>>> > >>>>>> It is on my list but does not have high priority since it should > >>>>>> not > >>>>>> affect Maven plugin usage (regarding backward compatibility). > >>>>>> > >>>>> > >>>>> But that would be a completely new pugin, I assume. > >>>>> > >>>>> # 3. Maturity / Backward Compatibility > >>>>>> > >>>>>> The project is not mature - we have no real users and little > >>>>>> field > >>>>>> testing - in short I don't want to guarantee > >>>>>> backward-compatibility > >>>>>> for > >>>>>> now because some of my decisions might turn out to be plain wrong > >>>>>> (or > >>>>>> even stupid) :-) > >>>>>> > >>>>>> According to https://semver.org we can release 0.x.y and follow > >>>>>> https://semver.org/#spec-item-4 - not so nice but pragmatic. > >>>>>> > >>>>> > >>>>> > >>>>>> # 4. General Considerations > >>>>>> > >>>>>> There is a danger we never get "freemarker-generator" out of the > >>>>>> door > >>>>>> ("perfect is the enemy of good") therefore the whole PMC should > >>>>>> look > >>>>>> into the questions/answers > >>>>> > >>>>> * "freemarker-generator" needs community usage to become really > >>>>> useful - > >>>>>> the unreleased stuff does not add any value > >>>>>> > >>>>> * Is it acceptable to release a 0.X.Z where we not > >>>>> backward-compatible > >>>>>> until 1.0.0? > >>>>>> > >>>>> > >>>>> With the clear warning that we won't maintain this "branch" (a > >>>>> series of > >>>>> backward compatible releases), etc. we can release. That, however, > >>>>> discourages usage. And that's really the problem, not that we > >>>>> can't > >>>>> release, because we can publish stuff in whatever development > >>>>> stage > >>>>> (assuming users will be well informed). But if we are to hope for > >>>>> any > >>>>> significant user base, I believe we should be able to promise some > >>>>> stability, and maintenance of the BC branch. That's why I'm saying > >>>>> that > >>>> we > >>>>> should get the core architecture about right, and the project > >>>>> scope. > >>>>> (I'm > >>>>> not talking about missing features that can be added later, nor > >>>>> about > >>>> bugs > >>>>> and other rough edges.) > >>>>> > >>>>> > >>>>>> * Are there any deal breakers which needs to fixed before we > >>>>>> start > >>>>>> with > >>>>>> a first public release? > >>>>>> > >>>>> > >>>>> As far as I'm concerned (but I'm just one of the PMC members), if > >>>>> you > >>>> have > >>>>> strong feelings for doing a release, with the proper warnings, > >>>>> sure, > >>>>> I > >>>> will > >>>>> collaborate. The deal breaker is more for the users, who get no > >>>>> good > >>>>> BC > >>>>> promise or maintenance. > >>>>> > >>>>> Thanks in advance, > >>>>>> > >>>>>> Siegfried Goeschl > >>>>>> > >>>>>> On 4 Jul 2020, at 1:10, Daniel Dekany wrote: > >>>>>> > >>>>>>> It should be in https://freemarker.apache.org/generator/. You > >>>>>>> will > >>>>>>> need to > >>>>>>> commit/push into > >>>>>>> https://github.com/apache/freemarker-site/tree/asf-site > >>>>>>> for that. (See > >>>>>>> > https://freemarker.apache.org/committer-howto.html#updating-homepage > >> ) > >>>>>>> > >>>>>>> We need to generate the web pages somehow though. I saw you try > >>>>>>> to > >>>>>>> do > >>>>>>> that > >>>>>>> with Maven "site", but personally, I can't imagine that it can > >>>>>>> be > >>>>>>> tweaked > >>>>>>> to generate reasonable output. Not sure how others see this. > >>>>>>> Maven > >>>>>>> "site" > >>>>>>> is basically the Maven model dumped into HTML pages, and > >>>>>>> "reports" > >>>>>>> like > >>>>>>> even the log of the Rat run etc. Dozens of menus and sub-pages > >>>>>>> for > >>>>>>> details > >>>>>>> users mostly don't care about. The actual content users do care > >>>>>>> about > >>>>>>> is > >>>>>>> stuffed under "About", and from there it's not properly > >>>>>>> navigable > >>>>>>> or > >>>>>>> searchable, as apparently it's assumed to be a single page. I > >>>>>>> know > >>>>>>> back > >>>>>>> then you didn't want to use the tool that's used both for the > >>>>>>> main > >>>>>>> web > >>>>>>> site > >>>>>>> and for the FreeMarker documentation, but I think that's the > >>>>>>> most > >>>>>>> economical solution currently (and then we also have common > >>>>>>> styling, > >>>>>>> and > >>>>>>> common place to fix whatever technical issues), so please > >>>>>>> reconsider > >>>>>>> that. > >>>>>>> (I can help setting that up, of course.) > >>>>>>> > >>>>>>> Now, some more difficult-to-address problematic things. My > >>>>>>> problem > >>>>>>> is > >>>>>>> that > >>>>>>> these just weren't concluded. Discussion just died. To be > >>>>>>> concluded > >>>>>>> can > >>>>>>> even mean that other PMC members say we should step over these, > >>>>>>> even > >>>>>>> if I > >>>>>>> disagree. But these should be understood, and considered. So, > >>>>>>> these > >>>>>>> are: > >>>>>>> > >>>>>>> - Design/architectural doubts that are probably not realistic > >>>>>>> to > >>>>>>> address > >>>>>>> much later: > >>>>>>> - Currently, data sources are just URL-s (locations), and > >>>>>>> templates > >>>>>>> are meant to call tool API-s to parse them. As I said back > >>>>>>> then, > >>>>>>> one > >>>>>>> consequence is that then, you can't put parsed data into > >>>>>>> the > >>>>>>> data-model > >>>>>>> shared by all templates (i.e., via -m/--data-model). > >>>>>>> Because, > >>>>>>> you have no > >>>>>>> convenient/concise way to load the actual (parsed) data, > >>>>>>> instead > >>>>>>> you have > >>>>>>> to "program it" in FTL, because the assumption was that you > >>>>>>> only > >>>>>>> want to do > >>>>>>> that in templates anyway. Furthermore, as I saw it just > >>>>>>> now, > >>>>>>> --data-model > >>>>>>> actually supports some ad-hoc way of parsing the data > >>>>>>> pointed > >>>>>>> by > >>>>>>> a > >>>>>>> data-source-like URL, as JSON, YAML, maybe some more. > >>>>>>> Here's > >>>>>>> an > >>>>>>> example of > >>>>>>> that: `-m > >>>>>>> config=env:///DB_CONFIG#mimetype=application/json`. > >>>>>>> So > >>>>>>> there is a > >>>>>>> need actually. But compared to what you can do in > >>>>>>> templeats, > >>>>>>> it's totally > >>>>>>> different, and of course very restrictive. I was also > >>>>>>> looking > >>>>>>> for a less > >>>>>>> "programmatic" way of loading data because even doing it in > >>>>>>> templates is > >>>>>>> not very friendly as it is. (For ultimate flexibility you > >>>>>>> might > >>>>>>> need > >>>>>>> program logic for sure, but certainly not just to grab a > >>>>>>> worksheet from an > >>>>>>> Excel file.) We also should have a POC for loading from a > >>>>>>> less > >>>>>>> file centric > >>>>>>> data source, like from a DB with a SQL query, to see if the > >>>>>>> concept works. > >>>>>>> - Not sure what's with template-driven VS data driven > >>>>>>> output > >>>>>>> generation. Data driven is when you generate one output > >>>>>>> file > >>>>>>> per > >>>>>>> some data > >>>>>>> unit (like per JSON file, or per DB record), and all is > >>>>>>> transformed by a > >>>>>>> common template. How would that look currently in > >>>>>>> freemarker-cli? > >>>>>>> - The Maven plugin provides very different functionality than > >>>>>>> the > >>>>>>> CLI. > >>>>>>> The original concept was that they are just two interfaces to > >>>>>>> the > >>>>>>> same > >>>>>>> product. That was also brought up, and I don't think it was > >>>>>>> addressed much, > >>>>>>> like, why you disagree, if you do, or what's going on. Anyway, > >>>>>>> regarding > >>>>>>> what we have now. The naming implies that, as both are > >>>>>>> "FreeMarker > >>>>>>> Generator", just one is "CLI", and the other is "Maven". But > >>>>>>> as > >>>>>>> far > >>>>>>> as I > >>>>>>> see, they are two different "products" really, focusing on > >>>>>>> different use > >>>>>>> cases. So, if it stays like this, then some of them have to be > >>>>>>> renamed at > >>>>>>> least. Or I don't know what others think we can do. (Then it's > >>>>>>> still > >>>>>>> somewhat weird to release them together.) > >>>>>>> > >>>>>>> (I have also run through the CLI documentation, and found a lot > >>>>>>> of > >>>>>>> less > >>>>>>> fundamental things to address, but I don't want to overload the > >>>>>>> thread.) > >>>>>>> > >>>>>>> Also, if the project is released mostly as it is now, what will > >>>>>>> we > >>>>>>> promise > >>>>>>> regarding backward compatibility? What do we communicate about > >>>>>>> the > >>>>>>> matureness of the project? > >>>>>>> > >>>>>>> On Wed, Jul 1, 2020 at 8:29 AM Siegfried Goeschl < > >>>>>>> siegfried.goes...@gmail.com> wrote: > >>>>>>> > >>>>>>>> Hi folks, > >>>>>>>> > >>>>>>>> I'm pretty much finished with the stuff I would like to have > >>>>>>>> for > >>>>>>>> the > >>>>>>>> first > >>>>>>>> public release but there is a still a lot of work ahead > >>>>>>>> > >>>>>>>> * FREEMARKER-148 [freemarker-cli] Make usage of "DataSources" > >>>>>>>> more > >>>>>>>> "Freemarker" like > >>>>>>>> * FREEMARKER-150 [freemarker-cli] Setup "freemarker-generator" > >>>>>>>> web > >>>>>>>> site > >>>>>>>> * Setup the release process (Daniel, I guess I need some help > >>>>>>>> here) > >>>>>>>> * An iteration of reviews and discussions > >>>>>>>> > >>>>>>>> Some thought along the line > >>>>>>>> > >>>>>>>> * I would like to finish FREEMARKER-148 this week > >>>>>>>> * Daniel, any suggestion where to host the public website? > >>>>>>>> > >>>>>>>> Thanks in advance, > >>>>>>>> > >>>>>>>> Siegfried Goeschl > >>>>>>>> > >>>>>>>> > >>>>>>> > >>>>>>> -- > >>>>>>> Best regards, > >>>>>>> Daniel Dekany > >>>>>> > >>>>> > >>>>> > >>>>> -- > >>>>> Best regards, > >>>>> Daniel Dekany > >>>> > >>>> > >>> > >>> -- > >>> Best regards, > >>> Daniel Dekany > >> > > > > > > -- > > Best regards, > > Daniel Dekany > -- Best regards, Daniel Dekany