class Grate::NewProject

Public Class Methods

source_root() click to toggle source
# File lib/grate/new_project.rb, line 9
def self.source_root
  File.dirname(__FILE__)
end

Public Instance Methods

copy_bin() click to toggle source
# File lib/grate/new_project.rb, line 35
def copy_bin
  bin_dir = File.join(__dir__, '..', '..', 'bin')
  
  FileUtils.copy_entry(bin_dir, File.join(@project_dir, 'bin'))
end
create_directory() click to toggle source
# File lib/grate/new_project.rb, line 14
def create_directory
  Dir.mkdir name
  @project_dir = File.join(Dir.pwd, name)
end
create_files() click to toggle source
# File lib/grate/new_project.rb, line 19
def create_files
  @camel_name = classify(name)
  @snake_name = snake_case(name)
  templates_dir = File.join(__dir__, '..', '..', 'templates')
  Find.find(templates_dir) do |file|
    case File.extname(file)
    when '.tt'
      template(file, File.join(@project_dir, to_relative(file).gsub('.tt', '')))
    when '.dot'
      template(file, File.join(@project_dir, ".#{to_relative(file).chomp('.dot')}"))
    when /\.[A-Za-z]+/
      template(file, File.join(@project_dir, to_relative(file)))
    end
  end
end

Private Instance Methods

classify(name) click to toggle source
# File lib/grate/new_project.rb, line 49
def classify(name)
  name.gsub('-', '_').camelize
end
snake_case(name) click to toggle source
# File lib/grate/new_project.rb, line 46
def snake_case(name)
  name.gsub('_', '-').underscore
end
to_relative(path) click to toggle source
# File lib/grate/new_project.rb, line 42
def to_relative(path)
  path.gsub(/.*templates\//, '')
end