1
0
Fork 0
forked from glenux/mfm

feat(config): enable reuse of mfm configuration variables

This change introduces a two-pass parsing approach to allow reuse of mfm
configuration variables within other configuration parts. This initial
implementation does not handle recursive dependencies, which is
acceptable for the current requirements.

- Implemented a two-pass parsing mechanism for configuration files.
- Added mfm configuration variables to the Crinja render context in both
  passes.
- Ensured the global mount point base is safely retrieved and validated
  in each pass.

Signed-off-by: Glenn Y. Rolland <glenux@glenux.net>
This commit is contained in:
Glenn Y. Rolland 2025-04-11 12:32:23 +02:00
parent 7953f9f3a7
commit c21f175217

View file

@ -94,14 +94,37 @@ module GX
exit(1)
end
## PASS 1
file_data = File.read(config_path)
file_patched = Crinja.render(file_data, {"env" => ENV.to_h})
file_patched = Crinja.render(
file_data,
{
"env" => ENV.to_h,
"mfm" => {
"global" => {"mount_point_base" => "" }
}
}
)
root = Models::RootConfig.from_yaml(file_patched)
mount_point_base_safe = root.global.mount_point_base
raise Models::InvalidMountpointError.new("Invalid global mount point") if mount_point_base_safe.nil?
## PASS 2
file_patched = Crinja.render(
file_data,
{
"env" => ENV.to_h,
"mfm" => {
"global" => {"mount_point_base" => mount_point_base_safe }
}
}
)
root = Models::RootConfig.from_yaml(file_patched)
mount_point_base_safe = root.global.mount_point_base
raise Models::InvalidMountpointError.new("Invalid global mount point") if mount_point_base_safe.nil?
root.filesystems.each do |selected_filesystem|
if !selected_filesystem.mount_point?
selected_filesystem.mount_point =