Module: Strata::CLI::Utils::YamlImportResolver
- Defined in:
- lib/strata/cli/utils/yaml_import_resolver.rb
Overview
Resolves YAML imports and merges fields with granular override logic.
Class Method Summary collapse
Class Method Details
.resolve(file_path, project_path, visited = Set.new) ⇒ Object
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
# File 'lib/strata/cli/utils/yaml_import_resolver.rb', line 14 def resolve(file_path, project_path, visited = Set.new) return {} unless File.exist?(file_path) absolute_path = File.(file_path) if visited.include?(absolute_path) raise Strata::CircularImportError, "Circular import detected: #{format_cycle(visited, absolute_path)}" end visited.add(absolute_path) content = YAML.safe_load_file(file_path, permitted_classes: [Date, Time], aliases: true) return {} unless content.is_a?(Hash) resolved_content = content.dup resolved_content.delete("imports") if content["imports"].is_a?(Array) merged_fields = resolve_imports(content["imports"], file_path, project_path, visited) resolved_content["fields"] = merge_fields(merged_fields, content["fields"] || []) else resolved_content["fields"] = content["fields"] || [] end resolved_content end |