feat(config): enable reuse of mfm configuration variables
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
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:
parent
7953f9f3a7
commit
c21f175217
1 changed files with 25 additions and 2 deletions
|
@ -94,14 +94,37 @@ module GX
|
||||||
exit(1)
|
exit(1)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
## PASS 1
|
||||||
file_data = File.read(config_path)
|
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)
|
root = Models::RootConfig.from_yaml(file_patched)
|
||||||
|
|
||||||
mount_point_base_safe = root.global.mount_point_base
|
mount_point_base_safe = root.global.mount_point_base
|
||||||
raise Models::InvalidMountpointError.new("Invalid global mount point") if mount_point_base_safe.nil?
|
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|
|
root.filesystems.each do |selected_filesystem|
|
||||||
if !selected_filesystem.mount_point?
|
if !selected_filesystem.mount_point?
|
||||||
selected_filesystem.mount_point =
|
selected_filesystem.mount_point =
|
||||||
|
|
Loading…
Add table
Reference in a new issue