Class: Dendrite::IO
- Inherits:
-
Object
- Object
- Dendrite::IO
- Defined in:
- lib/dendrite/io.rb
Class Method Summary collapse
- .load(source:) ⇒ Object
- .read(source:) ⇒ Object
- .services_from_file(source:) ⇒ Object
- .services_from_folder(source:) ⇒ Object
- .write(data:, destination:) ⇒ Object
Class Method Details
.load(source:) ⇒ Object
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
# 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:) ⇒ Object
34 35 36 |
# File 'lib/dendrite/io.rb', line 34 def read(source:) YAML::load(File.open(source)).deep_symbolize_keys end |
.services_from_file(source:) ⇒ Object
38 39 40 41 42 43 44 45 46 47 |
# 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:) ⇒ Object
49 50 51 52 |
# 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:) ⇒ Object
27 28 29 30 31 32 |
# 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 |