class Brotorift
Public Class Methods
new()
click to toggle source
# File lib/brotorift.rb, line 27 def initialize @generated_nodes = {} end
Public Instance Methods
find_generator(language, side)
click to toggle source
# File lib/brotorift.rb, line 99 def find_generator language, side Generator.generators.find { |g| g.language == language and g.side == side } end
generate_all_code(runtime, generate_diagram)
click to toggle source
# File lib/brotorift.rb, line 48 def generate_all_code runtime, generate_diagram runtime.directions.each do |direction| generate_code runtime, direction.client, :client generate_code runtime, direction.server, :server generate_bot_code runtime, direction.client end generate_sequence_diagrams runtime if generate_diagram end
generate_bot_code(runtime, node)
click to toggle source
# File lib/brotorift.rb, line 88 def generate_bot_code runtime, node generator = find_generator 'bot', :client if generator == nil puts "Generator for bot is not found.".red return end puts "Generating bot code for node '#{node.name}'..." generator.generate node, runtime end
generate_code(runtime, node, side)
click to toggle source
# File lib/brotorift.rb, line 69 def generate_code runtime, node, side old_sides = @generated_nodes[node.name] return if old_sides != nil and old_sides.include? side generator = find_generator node.language, side if generator == nil puts "Generator for language '#{node.language}' and side #{side} is not found.".red return end puts "Generating #{node.language} #{side} code for node '#{node.name}'..." generator.generate node, runtime if old_sides != nil old_sides.push side else @generated_nodes[node.name] = [side] end end
generate_sequence_diagrams(runtime)
click to toggle source
# File lib/brotorift.rb, line 59 def generate_sequence_diagrams runtime begin Dir.mkdir 'docs' Dir.mkdir 'docs/diagrams' rescue end SequenceDiagramGenerator.generate runtime end
load_generators()
click to toggle source
# File lib/brotorift.rb, line 31 def load_generators root_folder = File.expand_path File.dirname __FILE__ generators_pattern = root_folder + '/generators/*.rb' Dir.glob generators_pattern do |generator_file| require generator_file end end
print_compile_errors(errors)
click to toggle source
# File lib/brotorift.rb, line 40 def print_compile_errors errors errors.each do |e| puts e end puts 'Your brotorift files contain errors. Please fix them before go on.'.red end
run(file_name, generate_diagram)
click to toggle source
# File lib/brotorift.rb, line 103 def run file_name, generate_diagram load_generators compiler = Compiler.new compiler.compile file_name, true if compiler.errors.length > 0 print_compile_errors compiler.errors exit 1 else generate_all_code compiler.runtime, generate_diagram end end