class Skeletor::Skeletons::Loader

Loader is a wrapper class to handle loading in the template file from the various possible load paths.

While accessible externally this is generally called internally.

Constants

TEMPLATE_PATH

TEMPLATE_PATH specifies the internal directory for any included project templates.

USER_TEMPLATE_PATH

USER_TEMPLATE_PATH specifies the path to the users personal template directory

Public Class Methods

load_template(template) click to toggle source

Searches for the specified template and loads it into a variable

Also adds the path where it was found to the returned Hash

# File lib/skeletor/skeletons/loader.rb, line 22
def self.load_template(template)
  
  puts 'Loading Template - ' + template
  
  #if File.exists?(template) && !File.directory?(template)
  #  skeleton = YAML.load_file(template)
  #  path = File.dirname(template)
  #elsif File.exists?(File.join(template,File.basename(template) + '.yml'))
  #  skeleton = YAML.load_file(File.join(template,File.basename(template) + '.yml'))
  #  path = template
  #elsif File.exists?(File.join(USER_TEMPLATE_PATH,template,template+'.yml'))
  #  skeleton = YAML.load_file(File.join(USER_TEMPLATE_PATH,template,template+'.yml'))
  #  path = File.join(USER_TEMPLATE_PATH,template)
  #elsif File.exists?(File.join(TEMPLATE_PATH,template,template+'.yml'))
  #  skeleton = YAML.load_file(File.join(TEMPLATE_PATH,template,template+'.yml'))
  #  path = File.join(TEMPLATE_PATH,template)
  #else
  #  raise LoadError, 'Error: Template File ' + File.basename(template) + ' Could Not Be Found'
  #end
  
  if File.exists?(template) && !File.directory?(template)
    result = template
  else
    trail = Hike::Trail.new "/"
    trail.append_extensions ".yml", ".json" 
    
    if File.directory?(template)
      trail.append_paths template
      result = trail.find File.basename(template)
    else
      trail.append_paths USER_TEMPLATE_PATH, TEMPLATE_PATH
      result = trail.find File.basename(template) + "/" + File.basename(template)
    end
          
  end
  
  if result
    begin
      file = File.basename(result)
      path = File.dirname(result)
      skeleton = Grayskull::DataFile.load(result)
      skeleton['file'] = file
      skeleton['path'] = path
      puts 'Template ' + file + ' loaded from ' + path
   rescue Exception => e
    puts e.message
    exit
   end
  end
  
  puts 'Template ' + file + ' loaded from ' + path
          
  return skeleton
  
end