dotnet / dotnet/docker-tools

Migrate off of Cottle templating engine

Open
#1,610 1 comment 0 reactions 0 assignees View on GitHub
area-infrastructure
Dominant language
C#
Stars
181
Forks
67
Avg merge
2d 15h
Merged PRs (30d)
10

Description

Cottle, our templating library, presents some usability issues with our Dockerfile and Readme templates:

1. Confusing syntax with no linter/syntax highlighting support
2. Errors are difficult to track down and it's sometimes unclear what the problem is
3. Managing whitespace is difficult

We should migrate to a different templating engine. The ideal templating engine would fulfill the following requirements:

1. Extensible, so that we can add our own custom functions/commands
2. Composable (Not strictly required, we currently shoehorn this into Cottle via its extensibility)
3. General-purpose enough to work for both Dockerfiles and text (Markdown)
4. Syntax highlighting and clear errors
5. Good support

Some options immediately come to mind:
1. [Razor](https://learn.microsoft.com/en-us/aspnet/core/mvc/views/razor?view=aspnetcore-9.0) - built in to .NET, but requires ASP.NET Core libraries
2. [T4](https://learn.microsoft.com/en-us/visualstudio/modeling/writing-a-t4-text-template?view=vs-2022)
3. [Fluid (Liquid)](https://github.com/sebastienros/fluid) - port of Liquid templating engine to .NET, maintained by .NET team member, popular on NuGet

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.