Class: Rubynew::Project

Inherits:
Object
  • Object
show all
Defined in:
lib/rubynew/project.rb

Instance Method Summary collapse

Constructor Details

#initialize(name) ⇒ Project

Returns a new instance of Project.



7
8
9
10
11
12
# File 'lib/rubynew/project.rb', line 7

def initialize(name)
  @name = name
  # ripped off from Bundler
  @underscored_name = @name.tr("-", "_")
  @constant_name = @name.gsub(/-[_-]*(?![_-]|$)/) { "::" }.gsub(/([_-]+|(::)|^)(.|$)/) { $2.to_s + $3.upcase }
end

Instance Method Details

#createObject



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/rubynew/project.rb', line 14

def create
  template_path = File.expand_path("../../../template", __FILE__)

  # copy the template
  FileUtils.cp_r template_path, @name

  # rename the files
  FileUtils.mv File.join(@name, "lib", "app"), File.join(@name, "lib", @underscored_name)
  FileUtils.mv File.join(@name, "lib", "app.rb"), File.join(@name, "lib", "#{@underscored_name}.rb")
  FileUtils.mv File.join(@name, "test", "app_test.rb"), File.join(@name, "test", "#{@underscored_name}_test.rb")
  FileUtils.mv File.join(@name, "bin", "app"), File.join(@name, "bin", @underscored_name)

  # apply templates
  [
    File.join(@name, "bin",  @underscored_name),
    File.join(@name, "lib",  "#{@underscored_name}.rb"),
    File.join(@name, "lib",  @underscored_name, "version.rb"),
    File.join(@name, "test", "#{@underscored_name}_test.rb"),
    File.join(@name, "README.md")
  ].each { |file| render_template_to_file file, binding }

end