mirror of
https://github.com/apple/pkl.git
synced 2026-01-11 22:30:54 +01:00
Output path placeholders don't expose ValueRenderer.extension
#164
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 @lilyball on GitHub (May 17, 2024).
The
--output-pathflag supports placeholders for generating the output filename from inputs. Unfortunately there is no placeholder that will provide the file extension.%{outputFormat}exists but it corresponds to the--formatflag rather than the actualValueRenderersubclass used, and it's the name of the format rather than the extension (which is the same for some formats, but not for others).I'd like to see two things. First, a new placeholder
%{outputExtension}that evaluates toif (output.renderer.extension != null) ".\(output.renderer.extension)" else "". The inclusion of the leading period here is becauseValueRenderer.extensionis optional. This way I can write something likepkl eval -o 'config%{outputExtension}' config.pkland get the appropriate extension no matter how it's rendering. The second is a shorthand for%{moduleName}%{outputExtension}. This could be another placeholder, but for ease of use I'd prefer a separate flag-O, --output-dirthat takes a directory (supporting placeholders). So with this,-O dirwould be equivalent to saying-o dir/%{moduleName}%{outputExtension}.Given that the Pkl Style Guide recommends that Pkl files representing static config files be named to match the target filename, this means the
-Oflag would be the simplest way to render static config files.