Sha256: e23942ae29e2aa73baaa815670c30fdff8f5b57b0d59ef26104d7d94578adfaf

Contents?: true

Size: 1.74 KB

Versions: 2

Compression:

Stored size: 1.74 KB

Contents

require "erb"
require "fileutils"

module GGem; end
class GGem::Template
  def initialize(ggem)
    @ggem = ggem
  end

  def save
    save_folder # (gem root path)
    save_folder "lib/#{@ggem.ruby_name}"
    save_folder "test/support"
    save_folder "test/system"
    save_folder "test/unit"
    save_folder "log"
    save_folder "tmp"

    save_file("ruby-version.erb", ".ruby-version")
    save_file("gitignore.erb", ".gitignore")
    save_file("Gemfile.erb",   "Gemfile")
    save_file("gemspec.erb",   "#{@ggem.name}.gemspec")
    save_file("README.md.erb", "README.md")
    save_file("LICENSE.erb",   "LICENSE")

    save_file("lib.rb.erb",         "lib/#{@ggem.ruby_name}.rb")
    save_file("lib_version.rb.erb", "lib/#{@ggem.ruby_name}/version.rb")

    save_file("test_helper.rb.erb",          "test/helper.rb")
    save_file("test_support_factory.rb.erb", "test/support/factory.rb")

    save_empty_file("log/.keep")
    save_empty_file("test/system/.keep")
    save_empty_file("test/unit/.keep")
    save_empty_file("tmp/.keep")
  end

  private

  def save_folder(relative_path=nil)
    path = File.join([@ggem.path, relative_path].compact)
    FileUtils.mkdir_p(path)
  end

  def save_empty_file(relative_path)
    path = File.join(@ggem.path, relative_path)
    FileUtils.touch(path)
  end

  def save_file(source, output)
    source_file = File.join(File.dirname(__FILE__), "template_file", source)
    output_file = File.join(@ggem.root_path, @ggem.name, output)

    if File.exists?(source_file)
      FileUtils.mkdir_p(File.dirname(output_file))
      erb = ERB.new(File.read(source_file))
      File.open(output_file, "w") {|f| f << erb.result(binding) }
    else
      raise ArgumentError, "the source file `#{source_file}` does not exist"
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
ggem-1.9.3 lib/ggem/template.rb
ggem-1.9.2 lib/ggem/template.rb