class EtherDev::ProjectGenerator

Public Class Methods

new(project_name) click to toggle source
# File lib/ether_dev/generators/project_generator.rb, line 7
def initialize(project_name)
  @project_name = project_name
end

Public Instance Methods

generate() click to toggle source
# File lib/ether_dev/generators/project_generator.rb, line 11
    def generate
      $stdout.sync = true
      create_directory(@project_name)
      create_file(project_templates["Gemfile"], @project_name, "Gemfile")
      create_file(project_templates["Rakefile"], @project_name, "Rakefile")

      create_directory(@project_name, "contracts")
      create_file(project_templates["Greeter.sol"], @project_name, "contracts", "Greeter.sol")

      create_directory(@project_name, "config")
      create_file(project_templates["blockchain.yml"], @project_name, "config", "blockchain.yml")

      create_directory(@project_name, "test")
      create_file(project_templates["test_helper.rb"], @project_name, "test", "test_helper.rb")

      create_directory(@project_name, "test", "contracts")
      create_file(project_templates["greeter_test.rb"], @project_name, "test", "contracts", "greeter_test.rb")

      run_bundler

      puts
      puts
      puts <<~EOF
        🎉🎉🎉 Get started with EtherDev\n

        Your new EtherDev project is now generated. Now start Ganache and run
        the following command to compile, deploy and test the example Greeter.sol
        contract:

        $ bundle exec rake

        Check out the Wiki for next steps:
        https://github.com/michiels/ruby-etherdev/wiki
      EOF
    end

Private Instance Methods

create_directory(directory_name, *args) click to toggle source
# File lib/ether_dev/generators/project_generator.rb, line 49
def create_directory(directory_name, *args)
  directory_path = File.join([directory_name] + args)
  FileUtils.mkdir_p(directory_path)
  puts "- Created #{directory_path}"
end
create_file(template, directory_name, *args) click to toggle source
# File lib/ether_dev/generators/project_generator.rb, line 55
def create_file(template, directory_name, *args)
  filepath = File.join([directory_name] + args)
  File.open(filepath, "w+") do |f|
    f.write template
  end
  puts "- Generated file #{filepath}"
end
run_bundler() click to toggle source
# File lib/ether_dev/generators/project_generator.rb, line 63
def run_bundler
  puts
  puts "Running bundler..."
  IO.popen("cd #{@project_name} && bundle install") do |io|
    while (line = io.gets) do
      puts line
    end
  end
end