39 lines
		
	
	
		
			988 B
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			39 lines
		
	
	
		
			988 B
		
	
	
	
		
			Ruby
		
	
	
	
	
	
module TargetLoader
 | 
						|
  class NoTargets    < Exception; end
 | 
						|
  class NoDirectory  < Exception; end
 | 
						|
  class NoDefault    < Exception; end
 | 
						|
  class NoSuchTarget < Exception; end
 | 
						|
 | 
						|
  class RequestReload < Exception; end
 | 
						|
 | 
						|
  def self.inspect(config, target_name=nil)
 | 
						|
    unless config[:targets]
 | 
						|
      raise NoTargets
 | 
						|
    end
 | 
						|
 | 
						|
    targets = config[:targets]
 | 
						|
    unless targets[:targets_directory]
 | 
						|
      raise NoDirectory("No targets directory specified.")
 | 
						|
    end
 | 
						|
    unless targets[:default_target]
 | 
						|
      raise NoDefault("No default target specified.")
 | 
						|
    end
 | 
						|
 | 
						|
    target_path = lambda {|name| File.join(targets[:targets_directory], name + ".yml")}
 | 
						|
 | 
						|
    target = if target_name
 | 
						|
               target_path.call(target_name)
 | 
						|
             else
 | 
						|
               target_path.call(targets[:default_target])
 | 
						|
             end
 | 
						|
 | 
						|
    unless File.exists? target
 | 
						|
      raise NoSuchTarget.new("No such target: #{target}")
 | 
						|
    end
 | 
						|
 | 
						|
    ENV['CEEDLING_MAIN_PROJECT_FILE'] = target
 | 
						|
 | 
						|
    raise RequestReload
 | 
						|
  end
 | 
						|
end
 |