Sha256: 1deb33ba026e2b7c0332da743b9c9d0b21257c07ea18b9cc8b303095d1c964f1
Contents?: true
Size: 1.44 KB
Versions: 1
Compression:
Stored size: 1.44 KB
Contents
require "virtus" require "docktor/container" module Docktor class Manifest include Virtus.model class ContainerNotFound < StandardError; end values do attribute :containers_for_execution, Array[String] attribute :containers, Array[Docktor::Container] end def select_container_for_execution(container_name) select_containers_for_execution([container_name]) end def select_containers_for_execution(container_names) self.containers_for_execution = [] container_names.each do |name| container = find_container_by_name(name) fail ContainerNotFound, %(There is no container "#{name}") if container.nil? containers_for_execution << container self.containers_for_execution += find_container_links(container) end containers_for_execution.uniq! sort_containers_for_execution! end def find_container_by_name(name) containers.find { |container| container.name == name } end def find_container_links(container) container.links.map { |link| find_container_by_name link } end def sort_containers_for_execution! sorted_containers = [] containers_for_execution.each do |container| links_indexes = container.links.map { |link| sorted_containers.index link } sorted_containers.insert((links_indexes.max || -1) + 1, container) end self.containers_for_execution = sorted_containers end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
docktor-0.2.0 | lib/docktor/manifest.rb |