class LaTeXProjectTemplate

Constants

DEFAULT_CONFIG

Public Class Methods

new(dir, template, home_directory = nil) click to toggle source
# File lib/latex_project_template.rb, line 216
def initialize(dir, template, home_directory = nil)
  @config = LaTeXProjectTemplate::Configuration.new(home_directory)
  @target_dir = File.expand_path(dir)
  unless @template = @config.template_exist?(template)
    raise ArgumentError, "Can not find template: #{template}"
  end
  if File.exist?(@target_dir)
    raise ArgumentError, "File #{@target_dir} exists."
  end
  @project_name = File.basename(dir).sub(/\/$/, '')
end

Public Instance Methods

create(opts = {}) click to toggle source
# File lib/latex_project_template.rb, line 240
def create(opts = {})
  FileUtils.mkdir_p(@target_dir)
  git = Git.init(@target_dir)
  files = create_files
  git.add
  git.commit("Copy template: #{@template.name}.")
  if io = opts[:io]
    files.map! do |path|
      path.sub!(@target_dir, '')
      path.sub!(/^\//, '')
    end
    io.puts "Create the following files from template '#{@template.name}' and commit to git."
    io.puts files.join("\n")
  end
end

Private Instance Methods

create_files() click to toggle source
# File lib/latex_project_template.rb, line 228
def create_files
  erb_obj = LaTeXProjectTemplate::ErbObject.new(@project_name, @config.user_variables, @config)
  created_files = @template.copy_to_directory(@target_dir, erb_obj)
  @template.files_to_import.each do |name, files|
    if template_to_import = @config.template_exist?(name)
      created_files.concat(template_to_import.copy_to_directory(@target_dir, erb_obj, files))
    end
  end
  created_files.sort!
end