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
 | 
						|
}
 |