class MRubyGenerate::CreateCliProject

Constants

TEMPLATE_FILES

Attributes

project_name[R]
your_name[R]

Public Class Methods

new(project_name) click to toggle source
# File lib/mruby_generate/create_cli_project.rb, line 21
def initialize(project_name)
  @project_name = project_name
  @your_name = `git config --global --get user.name`.strip
  @template_path = File.expand_path('../../templates/cli_project', __dir__)
  @dest_path = @project_name
end

Public Instance Methods

create() click to toggle source
# File lib/mruby_generate/create_cli_project.rb, line 28
def create
  create_and_copy_template_dir
  apply_templates
  rename_files
end

Private Instance Methods

apply_templates() click to toggle source
# File lib/mruby_generate/create_cli_project.rb, line 40
def apply_templates
  TEMPLATE_FILES.each do |path|
    full_path = File.join(@dest_path, path)
    t = File.read(full_path)
    File.open(full_path, 'w') { |f| f << ERB.new(t).result(binding) }
  end
end
create_and_copy_template_dir() click to toggle source
# File lib/mruby_generate/create_cli_project.rb, line 36
def create_and_copy_template_dir
  FileUtils.cp_r @template_path, @project_name
end
rename_files() click to toggle source
# File lib/mruby_generate/create_cli_project.rb, line 48
def rename_files
  FileUtils.mkdir File.join(@project_name, "tools", @project_name)

  [
    [File.join(@project_name, 'your_project.gem'), File.join(@project_name, "#{project_name}.gem")],
    [File.join(@project_name, 'mrblib', 'mrb_your_project.rb'), File.join(@project_name, 'mrblib', "mrb_#{project_name}.rb")],
    [File.join(@project_name, 'tools', 'your_project', 'mrb_your_project.c'), File.join(@project_name, 'tools', @project_name, "mrb_#{project_name}.c")]
  ].each { |from, to| FileUtils.mv(from, to) }

  FileUtils.rmdir File.join(@project_name, "tools", "your_project")
end