main
1require 'build_utilities.rb'
2require 'local_properties.rb'
3require 'project.rb'
4require 'rake/clean'
5require 'fileutils'
6
7#load settings that differ by machine
8local_settings = LocalSettings.new
9
10if local_settings[:debug] == "TRUE"
11 COMPILE_TARGET = 'debug'
12else
13 COMPILE_TARGET = 'release'
14end
15
16CLEAN.include('artifacts','**/bin','**/obj')
17
18def create_sql_fileset(folder)
19 FileList.new(File.join('product','sql',folder,'**/*.sql'))
20end
21
22template_files = TemplateFileList.new('**/*.template')
23template_code_dir = File.join('product','templated_code')
24
25#configuration files
26config_files = FileList.new(File.join('product','config','*.template')).select{|fn| ! fn.include?('app.config')}
27app_config = TemplateFile.new(File.join('product','config',local_settings[:app_config_template]))
28
29#target folders that can be run from VS
30project_startup_dir = File.join('product',"#{Project.startup_dir}")
31project_test_dir = File.join('product',"#{Project.tests_dir}",'bin','debug')
32
33output_folders = [project_startup_dir,project_test_dir]
34
35task :default => [:test]
36
37task :clean do
38 FileUtils.rm_rf('artifacts')
39end
40
41task :init => :clean do
42 mkdir 'artifacts'
43 mkdir 'artifacts/coverage'
44 mkdir 'artifacts/deploy'
45 mkdir "artifacts/deploy/#{Project.name}"
46end
47
48task :compile do
49 MSBuildRunner.compile :compile_target => COMPILE_TARGET, :solution_file => 'solution.sln'
50end
51
52task :test, :category_to_exclude, :needs => [:compile] do |t,args|
53 runner = MbUnitRunner.new :compile_target => COMPILE_TARGET, :category_to_exclude => 'SLOW', :show_report => true, :report_type => "text"
54 runner.execute_tests ["#{Project.tests_dir}"]
55end
56
57task :test_xml, :category_to_exclude, :needs => [:compile] do |t,args|
58 runner = MbUnitRunner.new :compile_target => COMPILE_TARGET, :category_to_exclude => 'SLOW'
59 runner.execute_tests ["#{Project.tests_dir}"]
60end
61
62task :test_all, :category_to_exclude, :needs => [:compile] do |t,args|
63 runner = MbUnitRunner.new :compile_target => COMPILE_TARGET, :category_to_exclude => 'none', :show_report => true, :report_type => "text"
64 runner.execute_tests ["#{Project.tests_dir}"]
65end
66
67task :info do
68 puts "project name: " + Project.name
69 puts "project tests dir: " + Project.tests_dir
70 puts "project startup dir: " + Project.startup_dir
71 puts "project startup config: " + Project.startup_config
72 puts "project startup extension: " + Project.startup_extension
73 puts COMPILE_TARGET
74end
75
76task :run_test_report => [:test_xml] do
77 runner = BDDDocRunner.new
78 runner.run(File.join('product',"#{Project.tests_dir}",'bin','debug',"application.tests.dll"))
79end
80
81task :deploy => [:init,:compile] do
82 deploy_folder = File.join('artifacts','deploy')
83 copy_project_outputs(File.join(deploy_folder,Project.name),['*.dll','*.exe','*.pdb'])
84 FileUtils.cp_r(File.join('thirdparty','mbunit'),deploy_folder)
85 FileUtils.cp_r(File.join('thirdparty','rhino.mocks'),deploy_folder)
86 FileUtils.cp_r(File.join('thirdparty','developwithpassion.commons'),deploy_folder)
87end
88
89task :run do
90 deploy_folder = File.join('artifacts','deploy')
91 sql_folder = File.join(Dir.getwd,'product','sql')
92 command_line = "\"-migrations_dir:'#{sql_folder}' -connection_string:'#{local_settings[:config_connectionstring]}' -data_provider:'System.Data.SqlClient'\""
93 sh "#{deploy_folder}/#{Project.name}/#{Project.name}.console.exe '#{command_line}'"
94end
95
96def copy_project_outputs(folder,extensions)
97 extensions.each do |extension|
98 puts "#{Project.name}#{extension}"
99 Dir.glob(File.join('product','**',"#{Project.name}#{extension}")).each do |file|
100 FileUtils.cp file,folder
101 end
102 end
103end