class Roger::Generators::NewGenerator

Generator to create a new HTML project based on an existing skeleton

Attributes

source_paths[R]

Public Instance Methods

create_project() click to toggle source
# File lib/roger/generators/new.rb, line 51
def create_project
  directory(".", ".")
end
setup_variables() click to toggle source
# File lib/roger/generators/new.rb, line 20
def setup_variables
  self.destination_root = path

  @source_paths = []

  # Stuff to rm -rf later
  @cleanup = []
end
validate_path_is_empty() click to toggle source
# File lib/roger/generators/new.rb, line 29
def validate_path_is_empty
  return unless File.directory?(destination_root)

  say "Directory #{destination_root} already exists, please only use this to create new projects"
  exit(1)
end
validate_template_path() click to toggle source
# File lib/roger/generators/new.rb, line 36
def validate_template_path
  template = options[:template] || File.dirname(__FILE__) + "/../../../examples/default_template"

  if File.exist?(template)
    say "Taking template from #{template}"
    @source_paths << template
  else
    say "Getting template from git remote #{template}"
    @source_paths << git_clone_template(template)
  end
rescue StandardError => e
  puts e
  puts e.backtrace.join("\n")
end

Protected Instance Methods

git_clone_template(template) click to toggle source
# File lib/roger/generators/new.rb, line 57
def git_clone_template(template)
  tmp_dir = temp_directory

  if run("git clone -q --depth=1 #{Shellwords.escape(template)} #{tmp_dir}")
    say "Cloned template from #{template}"
    run("rm -rf #{tmp_dir + '.git'}")
    @cleanup << tmp_dir.to_s
  else
    say "Template path #{template} doesn't seem to be a git remote or a local path"
    exit(1)
  end

  tmp_dir
end
temp_directory() click to toggle source
# File lib/roger/generators/new.rb, line 72
def temp_directory
  # Hack to create temp directory
  t = Tempfile.new("roger-generate-new")
  tmp_dir = Pathname.new(t.path)
  t.close
  t.unlink
  tmp_dir
end