require 'ceedling/constants' require 'ceedling/file_path_utils' require 'ceedling/version'
desc “Display build environment version info.” task :version do
puts " Ceedling:: #{Ceedling::Version::CEEDLING}" puts " Unity:: #{Ceedling::Version::UNITY}" puts " CMock:: #{Ceedling::Version::CMOCK}" puts " CException:: #{Ceedling::Version::CEXCEPTION}"
end
desc “Set verbose output (silent: - obnoxious:).” task :verbosity, :level do |t, args|
verbosity_level = args.level.to_i if (PROJECT_USE_MOCKS) # don't store verbosity level in setupinator's config hash, use a copy; # otherwise, the input configuration will change and trigger entire project rebuilds hash = @ceedling[:setupinator].config_hash[:cmock].clone hash[:verbosity] = verbosity_level @ceedling[:cmock_builder].manufacture( hash ) end @ceedling[:configurator].project_verbosity = verbosity_level # control rake's verbosity with new setting verbose( ((verbosity_level >= Verbosity::OBNOXIOUS) ? true : false) )
end
desc “Enable logging” task :logging do
@ceedling[:configurator].project_logging = true
end
# non advertised debug task task :debug do
Rake::Task[:verbosity].invoke(Verbosity::DEBUG) Rake.application.options.trace = true @ceedling[:configurator].project_debug = true
end
# non advertised sanity checking task task :sanity_checks, :level do |t, args|
check_level = args.level.to_i @ceedling[:configurator].sanity_checks = check_level
end
# non advertised catch for calling upgrade in the wrong place task :upgrade do
puts "WARNING: You're currently IN your project directory. Take a step out and try" puts "again if you'd like to perform an upgrade."
end
# list expanded environment variables if (not ENVIRONMENT.empty?) desc “List all configured environment variables.” task :environment do
env_list = [] ENVIRONMENT.each do |env| env.each_key do |key| name = key.to_s.upcase env_list.push(" - #{name}: \"#{env[key]}\"") end end env_list.sort.each do |env_line| puts env_line end
end end
namespace :options do
COLLECTION_PROJECT_OPTIONS.each do |option_path| option = File.basename(option_path, '.yml') desc "Merge #{option} project options." task option.to_sym do hash = @ceedling[:project_config_manager].merge_options( @ceedling[:setupinator].config_hash, option_path ) @ceedling[:setupinator].do_setup( hash ) if @ceedling[:configurator].project_release_build load(File.join(CEEDLING_LIB, 'ceedling', 'rules_release.rake')) end end end # This is to give nice errors when typing options rule /^options:.*/ do |t, args| filename = t.to_s.split(':')[-1] + '.yml' filelist = COLLECTION_PROJECT_OPTIONS.map{|s| File.basename(s) } @ceedling[:file_finder].find_file_from_list(filename, filelist, :error) end # This will output the fully-merged tools options to their own project.yml file desc "Export tools options to a new project file" task :export, :filename do |t, args| outfile = args.filename || 'tools.yml' toolcfg = {} @ceedling[:configurator].project_config_hash.each_pair do |k,v| toolcfg[k] = v if (k.to_s[0..5] == 'tools_') end File.open(outfile,'w') {|f| f << toolcfg.to_yaml({:indentation => 2})} end
end
# do not present task if there's no plugins if (not PLUGINS_ENABLED.empty?) desc “Execute plugin result summaries (no build triggering).” task :summary do
@ceedling[:plugin_manager].summary puts "\nNOTE: Summaries may be out of date with project sources.\n\n"
end end