exe/mvc_one in mvc_one-0.1.0.pre.rc7 vs exe/mvc_one in mvc_one-0.1.0
- old
+ new
@@ -1,118 +1,39 @@
#!/usr/bin/env ruby
-# frozen_string_literal: true
-
require 'thor'
require 'erb'
-require 'pry'
module MvcOne
class MyCLI < Thor
- desc 'new PROJECT_NAME', 'Generate new application'
+ desc "new PROJECT_NAME", "Generate new application"
def new(name)
puts "Generating #{name}"
- project_template(name)
end
- desc 'generate controller/model/view/contract name', 'Generate new controller/model/view.'
+ desc "generate controller/model/view/contract name", "Generate new controller/model/view."
def generate(layer, layer_name)
case layer
- when 'controller'
- puts "Generating controller #{layer_name}"
- generate_controller layer_name
- when 'model'
- puts "Generating model #{layer_name}"
- generate_model layer_name
+ when 'controller' then puts "Generating controller #{layer_name}"
+ when 'model' then puts "Generating model #{layer_name}"
when 'view' then puts "Generating view #{layer_name}"
when 'contract' then puts "Generating contract #{layer_name}"
else
raise ArgumentError, "Undefined generator for #{layer}"
end
end
private
- def generate_controller(name)
- raise Error, 'cd into your project repository' unless Dir.exist? 'app/controllers'
-
- file_name = "app/controllers/#{name}_controller.rb"
- template = ERB.new(File.read(File.join(gem_path, 'templates/app/controller_template.erb')))
- File.write(file_name, template.result(binding))
- end
-
- def generate_model(name)
- raise Error, 'cd into your project repository' unless Dir.exist? 'app/models'
-
- file_name = "app/models/#{name}.rb"
- template = ERB.new(File.read(File.join(gem_path, 'templates/app/model_template.erb')))
- File.write(file_name, template.result(binding))
- end
-
def project_template(name)
- name_normalized = name.downcase.gsub(/\s/, '_')
- make_default_dirs(name_normalized)
- make_default_files(name_normalized)
- template = ERB.new <<-ERBTEMPLATE
+ template = ERB.new <<-EOF
class ApplicationController
def name
<%= name %>
end
end
- ERBTEMPLATE
+ EOF
template.result(binding)
end
-
- def make_default_files(name_normalized)
- config_ru = ERB.new(File.read(File.join(gem_path, 'templates/general/config_ru.erb')))
- File.write "#{name_normalized}/config.ru", config_ru.result(binding)
-
- rakefile = ERB.new(File.read(File.join(gem_path, 'templates/general/rakefile.erb')))
- File.write "#{name_normalized}/Rakefile", rakefile.result(binding)
-
- application_rb = ERB.new(File.read(File.join(gem_path, 'templates/general/application_rb.erb')))
- File.write "#{name_normalized}/application.rb", application_rb.result(binding)
-
- routes_rb = ERB.new(File.read(File.join(gem_path, 'templates/config/routes_rb.erb')))
- File.write "#{name_normalized}/app/config/routes.rb", routes_rb.result(binding)
-
- database_yml = ERB.new(File.read(File.join(gem_path, 'templates/general/database_yml.erb')))
- File.write "#{name_normalized}/config/database.yml", database_yml.result(binding)
-
- secrets_yml = ERB.new(File.read(File.join(gem_path, 'templates/general/secrets_yml.erb')))
- File.write "#{name_normalized}/config/secrets.yml", secrets_yml.result(binding)
-
- gemfile = ERB.new(File.read(File.join(gem_path, 'templates/general/gemfile.erb')))
- File.write "#{name_normalized}/Gemfile", gemfile.result(binding)
-
- app_layout = File.read(File.join(gem_path, 'templates/app/application_layout.slim'))
- File.write "#{name_normalized}/app/views/application_layout.slim", app_layout
-
- welcome_controller = ERB.new(File.read(File.join(gem_path, 'templates/app/welcome_controller_rb.erb')))
- File.write "#{name_normalized}/app/controllers/welcome_controller.rb", welcome_controller.result(binding)
-
- Dir.mkdir("#{name_normalized}/app/views/welcome")
- welcome_index = File.read(File.join(gem_path, 'templates/app/welcome_index.slim'))
- File.write "#{name_normalized}/app/views/welcome/index.slim", welcome_index
- end
-
- def make_default_dirs(root_dir_name)
- raise Error, "Project directory already exists: #{root_dir_name}" if Dir.exist? root_dir_name
-
- Dir.mkdir(root_dir_name)
-
- %w[app config db].each do |dir_name|
- Dir.mkdir("#{root_dir_name}/#{dir_name}")
- end
- Dir.mkdir("#{root_dir_name}/db/migrations")
-
- %w[controllers models views contracts config].each do |dir_name|
- Dir.mkdir("#{root_dir_name}/app/#{dir_name}")
- end
- end
-
- def gem_path
- File.expand_path("#{File.dirname(__FILE__)}/..")
- end
end
end
-MvcOne::MyCLI.start(ARGV)
+MvcOne::MyCLI.start(ARGV)
\ No newline at end of file