Class: Charming::Generators::AppGenerator

Inherits:
Base
  • Object
show all
Includes:
AppSpecTemplates, BasicTemplates, ComponentTemplates, ControllerTemplate, DatabaseTemplates, LayoutTemplate, ScreenSpecTemplates, StateTemplates, ViewTemplate
Defined in:
lib/charming/generators/app_generator.rb,
lib/charming/generators/app_generator/view_template.rb,
lib/charming/generators/app_generator/basic_templates.rb,
lib/charming/generators/app_generator/layout_template.rb,
lib/charming/generators/app_generator/state_templates.rb,
lib/charming/generators/app_generator/app_spec_templates.rb,
lib/charming/generators/app_generator/database_templates.rb,
lib/charming/generators/app_generator/component_templates.rb,
lib/charming/generators/app_generator/controller_template.rb,
lib/charming/generators/app_generator/screen_spec_templates.rb

Defined Under Namespace

Modules: AppSpecTemplates, BasicTemplates, ComponentTemplates, ControllerTemplate, DatabaseTemplates, LayoutTemplate, ScreenSpecTemplates, StateTemplates, ViewTemplate

Constant Summary collapse

BASE_FILE_TEMPLATES =
[
  ["Gemfile", :gemfile],
  ["Rakefile", :rakefile],
  ["README.md", :readme],
  ["%<name>s.gemspec", :gemspec],
  ["exe/%<name>s", :executable],
  ["lib/%<name>s.rb", :root_file],
  ["lib/%<name>s/application.rb", :application],
  ["lib/%<name>s/version.rb", :version],
  ["config/routes.rb", :routes],
  ["app/state/application_state.rb", :application_state],
  ["app/state/home_state.rb", :home_state],
  ["app/controllers/application_controller.rb", :application_controller],
  ["app/controllers/home_controller.rb", :controller],
  ["app/views/layouts/application.tui.erb", :layout],
  ["app/views/home/show.tui.erb", :view],
  ["app/components/app_frame_component.rb", :component],
  ["spec/spec_helper.rb", :spec_helper],
  ["spec/state/home_state_spec.rb", :spec_state],
  ["spec/controllers/home_controller_spec.rb", :spec_controller],
  ["spec/views/home/show_template_spec.rb", :spec_view],
  ["spec/components/app_frame_component_spec.rb", :spec_component]
].freeze
DATABASE_FILE_TEMPLATES =
[
  ["config/database.rb", :database_config],
  ["app/models/application_record.rb", :application_record],
  ["db/migrate/.keep", :keep],
  ["db/seeds.rb", :seeds]
].freeze

Instance Method Summary collapse

Methods included from AppSpecTemplates

#spec_component, #spec_controller, #spec_state, #spec_view

Methods included from ViewTemplate

#application, #database_require, #executable, #model_loader, #root_file, #version, #view

Methods included from ScreenSpecTemplates

#spec_controller, #spec_state, #spec_view

Methods included from StateTemplates

#application_state, #home_state

Methods included from LayoutTemplate

#layout

Methods included from DatabaseTemplates

#application_record, #database_config, #keep, #seeds

Methods included from ControllerTemplate

#application_controller, #controller, #controller_actions, #controller_helpers

Methods included from ComponentTemplates

#component, #component_helpers

Methods included from BasicTemplates

#database_dependencies, #gemfile, #gemspec, #gemspec_attributes, #gemspec_dependencies, #gemspec_file_glob, #rakefile, #readme

Constructor Details

#initialize(name, out:, destination:, force: false, database: nil) ⇒ AppGenerator

Returns a new instance of AppGenerator.



47
48
49
50
51
# File 'lib/charming/generators/app_generator.rb', line 47

def initialize(name, out:, destination:, force: false, database: nil)
  super(out: out, destination: File.join(destination, name), force: force)
  @name = Name.new(name)
  @database = database
end

Instance Method Details

#generateObject



53
54
55
56
57
58
# File 'lib/charming/generators/app_generator.rb', line 53

def generate
  file_templates.each do |path, template|
    create_file(file_path(path), send(template), executable: template == :executable)
  end
  initialize_git_repository
end