class HecksDomain::Commands::Generate

Generate a Domainfile

Constants

HECKS_FILE_NAME

Public Class Methods

source_root() click to toggle source
# File lib/hecks/domain/commands/generate.rb, line 12
def self.source_root
  File.dirname(__FILE__) + '/../templates'
end

Public Instance Methods

domain_from_domain_file() click to toggle source
# File lib/hecks/domain/commands/generate.rb, line 19
def domain_from_domain_file
  generate_domain_objects(domain_get)
  generate_domain_files(domain_get)
  generate_roots(domain_get)
  generate_operations(domain_get, options)
  generate_specs(domain_get, options)
end

Private Instance Methods

domain_file() click to toggle source
# File lib/hecks/domain/commands/generate.rb, line 55
def domain_file
  return unless File.exist?(HECKS_FILE_NAME)

  File.open(HECKS_FILE_NAME).read
end
domain_get() click to toggle source
# File lib/hecks/domain/commands/generate.rb, line 51
def domain_get
  instance_eval(domain_file).domain
end
generate_domain_files(domain) click to toggle source
# File lib/hecks/domain/commands/generate.rb, line 61
def generate_domain_files(domain)
  Generators::DomainFiles.new([domain]).invoke_all
end
generate_domain_objects(domain) click to toggle source
# File lib/hecks/domain/commands/generate.rb, line 74
def generate_domain_objects(domain)
  domain.for_each_domain_object do |aggregate, domain_object|
    generate_entity(domain, aggregate, domain_object)
    generate_value_object(domain, aggregate, domain_object)
  end
end
generate_entity(domain, aggregate, domain_object) click to toggle source
# File lib/hecks/domain/commands/generate.rb, line 89
def generate_entity(domain, aggregate, domain_object)
  return unless domain_object.is_a?(HecksDomain::Parser::Entity)

  Generators::Entity.new(
    [domain, aggregate, domain_object]
  ).invoke_all
end
generate_operations(domain, options) click to toggle source
# File lib/hecks/domain/commands/generate.rb, line 65
def generate_operations(domain, options)
  domain.for_each_operation do |aggregate, domain_object, operation|
    Generators::Operation.new(
      [domain, aggregate, domain_object, operation],
      skip: options[:skip_operations]
    ).invoke_all
  end
end
generate_roots(domain) click to toggle source
# File lib/hecks/domain/commands/generate.rb, line 29
def generate_roots(domain)
  domain.aggregates.each do |aggregate|
    aggregate.domain_objects.each do |domain_object|
      next unless domain_object.is_a?(HecksDomain::Parser::Root)

      Generators::Root.new(
        [domain, aggregate, domain_object]
      ).invoke_all
    end
  end
end
generate_specs(domain, options) click to toggle source
# File lib/hecks/domain/commands/generate.rb, line 41
def generate_specs(domain, options)
  domain.for_each_domain_object do |aggregate, domain_object|
    next unless domain_object.is_a?(HecksDomain::Parser::Root)

    Generators::Spec.new(
      [domain, aggregate, domain_object], options
    ).invoke_all
  end
end
generate_value_object(domain, aggregate, domain_object) click to toggle source
# File lib/hecks/domain/commands/generate.rb, line 81
def generate_value_object(domain, aggregate, domain_object)
  return unless domain_object.is_a?(HecksDomain::Parser::ValueObject)

  Generators::ValueObject.new(
    [domain, aggregate, domain_object]
  ).invoke_all
end