Plaster - Past, Present, and Future
jdhitsolutions opened this issue · comments
Now that the Plaster module has a new home, we want to let everyone know where we are headed. First, this module has not been abandoned, although it certainly hasn't gotten much love lately. Here is what we are planning.
- First, our goal is to bring the module up-to-date and fully compatible with Windows PowerShell 5.1 and PowerShell 7.x.
- Next, expect to see many issues closed. There are issues going back 5 years that are most likely stale and should have been handled a long time ago. We will make notes of comments from these issues that are still relevant today.
- Existing pull requests will be looked at, but we may not accept anything until our design review is complete. Please do not submit new pull requests at this time.
- Finally, we want to look at this project with fresh eyes. It is possible that there will be significant design changes, if we feel they are warranted to meet our primary goal.
We intend to open up the Discussion section of this repository. Issues should be for bug and problem reporting.
If there is an opportunity to reimagine Plaster, this might be a good time to consider if it needs its own template language or if it would be better to leverage an existing template engine. Generating text files with templates is a solved problem. Plaster can leverage an existing templating engine to reduce the footprint of the plaster code base as well as the documentation overhead.
Leveraging an existing template language would even come with the benefit of syntax hilighting plugins for vs code with no additional work.
With all the great templating tools available, it might even be worth considering support for more than one language especially if there was a desire to preserve compatibility with the existing plaster templating language.
T4
T4 would be an option as it is meant for generating code type files, technically it is a part of the visual studio SDK but mono has a port.
- https://github.com/mono/t4
- https://docs.microsoft.com/en-us/visualstudio/modeling/processing-text-templates-by-using-a-custom-host?view=vs-2019
Razor Syntax
Razor Syntax is originally used in asp.net MVC but there are projects which have liberated it.
- https://github.com/toddams/RazorLight
- https://github.com/volkovku/RazorTemplates
- https://github.com/Antaris/RazorEngine
dotnet new
dotnet new has a template engine which would also be an option, this also has a defined the interface for prompting the parameters from the user
Liquid & Other Text-Template Engines
Liquid is a popular templating language for web developers and there are a number of C# projects which implement the spec.
- https://github.com/scriban/scriban - Liquid seems to be very popular with web devs
- https://github.com/Handlebars-Net/Handlebars.Net - Handlebars templates
- https://yeoman.io/ - It's javascript based so probably not a great fit for plaster but might be interesting to look at
- https://jsonnet.org/ - json with templates
This is good information which I will move to Discussions. You are right that now is the time to revisit the overall strategy