lib/dry/web/roda/generators/sub_app.rb in dry-web-roda-0.6.3 vs lib/dry/web/roda/generators/sub_app.rb in dry-web-roda-0.7.0

- old
+ new

@@ -1,30 +1,51 @@ -require "dry/web/roda/generate" -require "dry/web/roda/generators/inflections" +require "dry/web/roda/generators/abstract_generator" module Dry module Web module Roda module Generators - class SubApp - attr_reader :generate + class SubApp < AbstractGenerator + def populate_templates + add_lib + add_system + add_web + end - def initialize - @generate = Dry::Web::Roda::Generate.new("sub_app") + private + + def destination + options.fetch(:to) { File.join("apps", target_dir) } end - def call(target_dir, options = {}) - umbrella_name = options.fetch(:umbrella) - generate_to = options.fetch(:to) { File.join("apps", target_dir) } + def umbrella_name + options.fetch(:umbrella) + end - generate.(generate_to, prepare_scope(target_dir, umbrella_name)) + def add_lib + add_template('subapp/view_context.rb.tt', "lib/#{underscored_project_name}/view/context.rb") + add_template('subapp/view_controller.rb.tt', "lib/#{underscored_project_name}/view/controller.rb") + add_template('welcome.rb.tt', "lib/#{underscored_project_name}/views/welcome.rb") + add_template('.keep', "lib/#{underscored_project_name}/.keep") end - private + def add_system + %w(application container).each do |file| + add_template("subapp/#{file}.rb.tt", "system/#{underscored_project_name}/#{file}.rb") + end + add_template('import.rb.tt', "system/#{underscored_project_name}/import.rb") + add_template('subapp/boot.rb.tt', 'system/boot.rb') + end - def prepare_scope(target_dir, umbrella_name) + def add_web + add_template('example_routes.rb.tt', 'web/routes/example.rb') + add_template('application.html.slim', 'web/templates/layouts/application.html.slim') + add_template('welcome.html.slim', 'web/templates/welcome.html.slim') + end + + def template_scope { - underscored_app_name: Inflections.underscored_name(target_dir), + underscored_project_name: underscored_project_name, camel_cased_app_name: Inflections.camel_cased_name(target_dir), underscored_umbrella_name: Inflections.underscored_name(umbrella_name), camel_cased_umbrella_name: Inflections.camel_cased_name(umbrella_name), } end