forked from Open-Systems-Pharmacology/Reporting-Engine
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathrakefile
153 lines (125 loc) · 4.05 KB
/
rakefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
require_relative 'scripts/setup'
require_relative 'scripts/copy-dependencies'
require_relative 'scripts/wix'
PROJECT_NAME = 'ReportingEngine'
PRODUCT_NAME = 'Reporting Engine'
MANUFACTURER = 'Open Systems Pharmacology'
PRODUCT_ID = Utils.uuid.to_s
WIX = {
code: 'CODE_DIR',
matlab_toolbox: 'MATLAB_TOOLBOX_DIR',
lib: 'LIB_DIR',
testInstallation: 'TEST_INSTALLATION_DIR'
}
task :create_setup,[:product_version] do |t, args|
@product_version = args.product_version
release_version_split= @product_version.split('.')
@product_release_version = "#{release_version_split[0]}.#{release_version_split[1]}"
@product_full_name = "#{PRODUCT_NAME} #{@product_release_version}"
Rake::Task['execute_light'].invoke
end
desc "create heat files for all required dynamic elements"
task :create_heat_files => :prepare do
WIX.each do |name,value|
folder = File.join(src_dir, name.to_s)
Rake::Task[:heat].execute OpenStruct.new(
source_directory: folder,
component_name: name.to_s,
output_dir: deploy_dir,
install_dir: value
)
end
end
task :execute_light => :run_all_candles do
all_wixobj = []
Dir.glob("#{deploy_dir}/*.wixobj").each{|f| all_wixobj << f}
all_options = %W[-o #{deploy_dir}/#{PROJECT_NAME}.#{@product_version}.msi -nologo -ext WixUIExtension -ext WixNetFxExtension -sice:ICE61 -spdb -b #{deploy_dir}/ -cultures:en-us]
Utils.run_cmd Wix.light, all_wixobj + all_options
end
desc "Run candles"
task :run_all_candles => :create_heat_files do
variables = {}
variables[:ProductId] = PRODUCT_ID
variables[:ProductName] = PRODUCT_NAME
variables[:Manufacturer] = MANUFACTURER
variables[:ProductFullName] = @product_full_name
variables[:ProductVersion] = @product_version
variables[:ProductReleaseVersion] = @product_release_version
# dynamic components
WIX.each_key do |name|
execute_candle name.to_s, File.join(src_dir, name.to_s), variables
end
#setup
execute_candle 'setup', deploy_dir, variables
end
desc "cleanup files before starting compilation"
task :prepare do
FileUtils.rm_rf deploy_dir
FileUtils.rm_rf deploy_lib_dir
FileUtils.mkdir_p deploy_dir
FileUtils.mkdir_p deploy_lib_dir
copy_setup_files
end
desc "Copy all required binaries under the lib folder located under src."
task :copy_lib do
src_lib_dir = File.join(src_dir, 'lib')
copy_to_lib_dir src_lib_dir
end
desc "restore all nuget packages in the packages folder"
task :restore_nuget_packages do
command_line = %W[restore -PackagesDirectory packages]
Utils.run_cmd 'nuget', command_line
end
task :restore_nuget_and_copy_to_lib => [:restore_nuget_packages] do
Rake::Task['copy_lib'].invoke
end
private
def copy_setup_files
copy_depdencies setup_dir, deploy_dir do
copy_files '**', ['wxs', 'msm', 'rtf', 'bmp']
end
copy_to_lib_dir deploy_lib_dir
end
def copy_to_lib_dir(target_lib_dir)
copy_depdencies lib_dir, target_lib_dir do
copy_files File.join('DCI','x64'), 'dll'
copy_schema_xsd
copy_dcimatlab_dll
copy_dcimatlab_mexw64
copy_dimensions_xml
end
architecture = '/**/x64/**/Release'
packages_dir = File.join(solution_dir, 'packages')
copy_depdencies packages_dir, target_lib_dir do
copy_files 'OSPSuite.SimModelComp', 'xml'
copy_files "OSPSuite.SimModelComp#{architecture}", 'dll'
copy_files "OSPSuite.SimModel#{architecture}", 'dll'
copy_files "OSPSuite.FuncParser#{architecture}", 'dll'
copy_files "OSPSuite.SimModelSolver_CVODES282#{architecture}", 'dll'
end
end
def execute_candle(component_name, deploy, variables)
all_variables = variables.each.collect do |k, v|
"-d#{k}=#{v}"
end
command_line = %W[#{File.join(deploy_dir, "#{component_name}.wxs")} -dDeployDir=#{deploy} -o #{deploy_dir}/]
Utils.run_cmd Wix.candle, command_line + all_variables
end
def deploy_dir
File.join(setup_dir,"deploy")
end
def deploy_lib_dir
File.join(src_dir, "lib")
end
def setup_dir
File.join(solution_dir, "setup")
end
def solution_dir
File.dirname(__FILE__)
end
def src_dir
File.join(solution_dir,'src')
end
def lib_dir
File.join(solution_dir,'lib')
end