Class: KuberKit::ImageCompiler::ImageDependencyResolver
- Defined in:
- lib/kuber_kit/image_compiler/image_dependency_resolver.rb
Constant Summary collapse
- CircularDependencyError =
Class.new(KuberKit::Error)
- DependencyNotFoundError =
Class.new(KuberKit::NotFoundError)
Instance Method Summary collapse
- #get_deps(image_name) ⇒ Object
- #get_next(image_names, resolved: []) ⇒ Object
- #get_recursive_deps(image_name, dependency_tree: []) ⇒ Object
Instance Method Details
#get_deps(image_name) ⇒ Object
37 38 39 |
# File 'lib/kuber_kit/image_compiler/image_dependency_resolver.rb', line 37 def get_deps(image_name) image_store.get_definition(image_name).dependencies end |
#get_next(image_names, resolved: []) ⇒ Object
12 13 14 15 16 17 18 19 20 |
# File 'lib/kuber_kit/image_compiler/image_dependency_resolver.rb', line 12 def get_next(image_names, resolved: []) deps = Array(image_names).map { |i| get_recursive_deps(i) }.flatten.uniq ready_to_resolve = deps.select do |dep_name| unresolved_deps = get_deps(dep_name) - resolved unresolved_deps.empty? end ready_to_resolve - resolved end |
#get_recursive_deps(image_name, dependency_tree: []) ⇒ Object
22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
# File 'lib/kuber_kit/image_compiler/image_dependency_resolver.rb', line 22 def get_recursive_deps(image_name, dependency_tree: []) deps = get_deps(image_name) if dependency_tree.include?(image_name) raise CircularDependencyError, "Circular dependency found for #{image_name}. Dependency tree: #{dependency_tree.inspect}" end child_deps = [] deps.each do |i| child_deps += get_recursive_deps(i, dependency_tree: dependency_tree + [image_name]) end (deps + child_deps).uniq end |