class Dendrite::IO
Public Class Methods
load(source:)
click to toggle source
# File lib/dendrite/io.rb, line 6 def load(source:) graph = Dendrite::ServiceGraph.new services = IO.services_from_folder(source: source) services.each do |service| graph << ServiceNode.new(service) end services.each do |service| node = ServiceNode.new(service) if service[:dependencies] service[:dependencies].each do |deps| dependency_name = "#{service[:organization]}_#{deps[:component]}_#{deps[:subcomponent]}" graph[node.name].add_dependency(service: graph[dependency_name], latency: deps[:latency], identifier: deps[:identifier], read_only: deps.fetch(:read_only, false)) end end end graph end
read(source:)
click to toggle source
# File lib/dendrite/io.rb, line 34 def read(source:) YAML::load(File.open(source)).deep_symbolize_keys end
services_from_file(source:)
click to toggle source
# File lib/dendrite/io.rb, line 38 def services_from_file(source:) data = read(source: source) data[:subcomponents].collect do |service| service[:organization] = data[:organization] service[:component] = data[:component] service[:lead_email] = data[:lead_email] service[:team_email] = data[:team_email] service end end
services_from_folder(source:)
click to toggle source
# File lib/dendrite/io.rb, line 49 def services_from_folder(source:) Dir["#{source}/**/*.yml"].collect {|file| services_from_file(source: file)} .flatten end
write(data:, destination:)
click to toggle source
# File lib/dendrite/io.rb, line 27 def write(data:, destination:) FileUtils::mkdir_p(File.dirname(destination)) File.open(destination, 'w') do |file| file.write(data) end end