class Asteroid::Generator

Public Class Methods

new(project_root) click to toggle source
# File lib/asteroid/generator.rb, line 16
def initialize(project_root)
  @project_root = File.expand_path project_root
end

Public Instance Methods

cp(from, to) click to toggle source
# File lib/asteroid/generator.rb, line 86
def cp(from, to)
  if File.directory?(to)
    to = File.join(to, File.basename(from))
  end
  if File.exists?(to)
    puts "exists\t#{to}"
  else
    puts "add\t#{to}"
    FileUtils.cp from, to
  end
end
cp_erb(from, to, data) click to toggle source
# File lib/asteroid/generator.rb, line 70
def cp_erb(from, to, data)
  if File.directory?(to)
    to = File.join(to, File.basename(from))
  end
  if File.exists?(to)
    puts "exists\t#{to}"
  else
    puts "add\t#{to}"
    template_string = File.read from
    template = Template.new(:erb, template_string)        
    File.open(to, 'w') do |f|
      f.write template.render data
    end
  end
end
g(*paths) click to toggle source
# File lib/asteroid/generator.rb, line 7
def g(*paths)
  @gen_root ||= File.expand_path File.join File.dirname(__FILE__), '../../generator'
  File.join *([@gen_root] + paths)
end
generate!() click to toggle source
# File lib/asteroid/generator.rb, line 20
def generate!
  
  c = Asteroid::Config.default_config(@project_root)
  c[:asteroid_dir]

  mkdir p
  cp    g('/README.md'), p
  cp    g('/gitignore'), p('/.gitignore')
  cp    g('/Rakefile'), p

  mkdir c[:asteroid_dir]

  mkdir c[:file_dir]
  mkdir c[:script_dir]
  mkdir c[:server_dir]
  cp    g('/asteroid/servers/default.yml'), c[:server_dir]

  mkdir c[:config_dir]
  cp_erb    g('/config/asteroid.rb'), c[:config_dir], {
    name: File.basename(@project_root)
  }

  mkdir c[:secret_dir]
  touch File.join(c[:secret_dir], '.keep')

  mkdir c[:secret_config_dir]
  touch File.join(c[:secret_config_dir], '.keep')
  cp    g('/secrets/config/providers.rb'), c[:secret_provider_file]
  cp    g('/secrets/config/secrets.yml'), c[:secret_config_file]

  mkdir c[:secret_file_dir]
  touch File.join(c[:secret_file_dir], '.keep')
  
  mkdir c[:secret_script_dir]
  touch File.join(c[:secret_script_dir], '.keep')

  mkdir c[:secret_key_dir]
  touch File.join(c[:secret_key_dir], '.keep')
end
mkdir(directory) click to toggle source
# File lib/asteroid/generator.rb, line 61
def mkdir(directory)
  if File.directory?(directory)
    puts "exists\t#{directory}"
  else
    puts "mkdir\t#{directory}"
    FileUtils.mkdir directory
  end      
end
p(*paths) click to toggle source
# File lib/asteroid/generator.rb, line 12
def p(*paths)
  File.join *([@project_root] + paths)
end
touch(file) click to toggle source
# File lib/asteroid/generator.rb, line 98
def touch(file)
  if File.exists?(file)
    puts "exists\t#{file}"
  else
    puts "touch\t#{file}"
    FileUtils.touch file
  end
end