mirror of
https://github.com/apple/pkl.git
synced 2026-01-11 22:30:54 +01:00
[feat] Render to INI-style formats #59
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @moritztim on GitHub (Feb 13, 2024).
I know your bandwidth is limited, just putting it out there. I would love to see support for INI-like formats, such as systemd configuration files or even just plain ini files.
Here are the INI-style formats I can think of:
Feel free to suggest more and I'll add them to the list
@holzensp commented on GitHub (Feb 13, 2024):
It's a totally legit ask. For other output formats, especially "simpler" ones, we recommend implementing them in Pkl itself. We did this with the TOML renderer, for example: https://github.com/apple/pkl-pantry/tree/main/packages/pkl.toml
Since bandwidth is indeed limited, you might want to have a go at it that way yourself; we're more than happy to support / review / etc. and since this can be written in Pkl itself, it doesn't require expertise about Pkl internals.
@Madmegsox1 commented on GitHub (Feb 13, 2024):
Hi, ill have a look at starting to create a
INIRenderer.@moritztim commented on GitHub (Feb 13, 2024):
I love that
Unfortunately my bandwith is also limited 💀 but I might get into making some other renderers at a later point, sounds like a fun challenge
@Madmegsox1 commented on GitHub (Feb 13, 2024):
Its looking good so far the
IniRendererrenders ini files in the correct structure just need to handle escape codes and correctly formatting (breakline after each nest) the ini file. Here is a look at what the test outputted.@Madmegsox1 commented on GitHub (Feb 14, 2024):
Its now outputting correctly and handles escape chars. Is there anywhere else i need to add the
IniRendererto?@bioball commented on GitHub (Feb 14, 2024):
Nice! Do you want to PR this? That will make it a little easier to iterate.
To add a new in-language renderer, you will need to create a new standard library module. To do that:
stdlib/ini.pklorg.pkl.core.runtimethat extendsStdlibModule, and add it toorg.pkl.core.runtime.ModuleCache#getOrLoad(see the existing source code to look at what's currently already there).class RendererNodesin new packageorg.pkl.core.stdlib.ini(see the other stdlib packages that are in there for reference)You will also need to add language snippet tests for this renderer, in pkl-core/src/test/files/LanguageSnippetTests/input/api/
@moritztim commented on GitHub (Feb 14, 2024):
Also make sure that you follow the contribution guidelines
@Madmegsox1 commented on GitHub (Feb 14, 2024):
Created PR. Ill create the new in-language renderer soon and open another PR.
Thank you for the help.