75 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
		
		
			
		
	
	
			75 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
|   | require 'fileutils' | ||
|  | 
 | ||
|  | # get directory containing this here file, back up one directory, and expand to full path | ||
|  | CEEDLING_ROOT    = File.expand_path(File.dirname(__FILE__) + '/..') | ||
|  | CEEDLING_LIB     = File.join(CEEDLING_ROOT, 'lib') | ||
|  | CEEDLING_VENDOR  = File.join(CEEDLING_ROOT, 'vendor') | ||
|  | CEEDLING_RELEASE = File.join(CEEDLING_ROOT, 'release') | ||
|  | 
 | ||
|  | $LOAD_PATH.unshift( CEEDLING_LIB ) | ||
|  | $LOAD_PATH.unshift( File.join(CEEDLING_VENDOR, 'unity/auto') ) | ||
|  | $LOAD_PATH.unshift( File.join(CEEDLING_VENDOR, 'diy/lib') ) | ||
|  | $LOAD_PATH.unshift( File.join(CEEDLING_VENDOR, 'constructor/lib') ) | ||
|  | $LOAD_PATH.unshift( File.join(CEEDLING_VENDOR, 'cmock/lib') ) | ||
|  | $LOAD_PATH.unshift( File.join(CEEDLING_VENDOR, 'deep_merge/lib') ) | ||
|  | 
 | ||
|  | require 'rake' | ||
|  | 
 | ||
|  | require 'diy' | ||
|  | require 'constructor' | ||
|  | 
 | ||
|  | require 'constants' | ||
|  | require 'target_loader' | ||
|  | 
 | ||
|  | 
 | ||
|  | # construct all our objects | ||
|  | @ceedling = DIY::Context.from_yaml( File.read( File.join(CEEDLING_LIB, 'objects.yml') ) ) | ||
|  | @ceedling.build_everything | ||
|  | 
 | ||
|  | # one-stop shopping for all our setup and such after construction | ||
|  | @ceedling[:setupinator].ceedling = @ceedling | ||
|  | 
 | ||
|  | project_config = | ||
|  |   begin | ||
|  |     cfg = @ceedling[:setupinator].load_project_files | ||
|  |     TargetLoader.inspect(cfg, ENV['TARGET']) | ||
|  |   rescue TargetLoader::NoTargets | ||
|  |     cfg | ||
|  |   rescue TargetLoader::RequestReload | ||
|  |     @ceedling[:setupinator].load_project_files | ||
|  |   end | ||
|  | 
 | ||
|  | @ceedling[:setupinator].do_setup( project_config ) | ||
|  | 
 | ||
|  | 
 | ||
|  | # tell all our plugins we're about to do something | ||
|  | @ceedling[:plugin_manager].pre_build | ||
|  | 
 | ||
|  | # load rakefile component files (*.rake) | ||
|  | PROJECT_RAKEFILE_COMPONENT_FILES.each { |component| load(component) } | ||
|  | 
 | ||
|  | # tell rake to shut up by default (overridden in verbosity / debug tasks as appropriate) | ||
|  | verbose(false) | ||
|  | 
 | ||
|  | 
 | ||
|  | # end block always executed following rake run | ||
|  | END { | ||
|  |   # cache our input configurations to use in comparison upon next execution | ||
|  |   @ceedling[:cacheinator].cache_test_config( @ceedling[:setupinator].config_hash )    if (@ceedling[:task_invoker].test_invoked?) | ||
|  |   @ceedling[:cacheinator].cache_release_config( @ceedling[:setupinator].config_hash ) if (@ceedling[:task_invoker].release_invoked?) | ||
|  | 
 | ||
|  |   # delete all temp files unless we're in debug mode | ||
|  |   if (not @ceedling[:configurator].project_debug) | ||
|  |     @ceedling[:file_wrapper].rm_f( @ceedling[:file_wrapper].directory_listing( File.join(@ceedling[:configurator].project_temp_path, '*') )) | ||
|  |   end | ||
|  | 
 | ||
|  | 	# only perform these final steps if we got here without runtime exceptions or errors | ||
|  | 	if (@ceedling[:system_wrapper].ruby_success) | ||
|  | 
 | ||
|  |     # tell all our plugins the build is done and process results | ||
|  | 	  @ceedling[:plugin_manager].post_build | ||
|  | 	  @ceedling[:plugin_manager].print_plugin_failures | ||
|  | 	  exit(1) if (@ceedling[:plugin_manager].plugins_failed?) | ||
|  | 	end | ||
|  | } |