-
Notifications
You must be signed in to change notification settings - Fork 1
/
build.rake
218 lines (164 loc) · 6.23 KB
/
build.rake
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
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
require 'rake/clean'
CLEAN.include('build/**/*')
CLOBBER.include('stage/**/*')
desc "build the server"
multitask build: %w[build_erb build_untouched build_mods build_extra_missions]
task :default => [:build]
directory 'build'
directory 'stage'
# ================= this is for handling files outside of PBOs =============
# files to be pre-processed via Erubis
erb_files = Rake::FileList[
'source/A3DS/server.cfg',
'source/@ExileServer/config.cfg'
]
# files to be copied directly
untouched_files = Rake::FileList[
'source/keys/*.bikey'
]
task :build_erb do
erb_files.each do |f|
process(f,f.pathmap("%{^source,build}p"))
stage(f.pathmap("%{^source,build}p"),f.pathmap("%{^source,stage}p"))
end
end
task :build_untouched do
untouched_files.each do |f|
stage(f,f.pathmap("%{^source,stage}p"))
end
end
# from redned70's instructions... tanoa missions
task :build_extra_missions do
missions_static = [
'Comms_Alpha_DMS_Static/comms_alpha.sqf',
'Georgetown_Invasion_DMS_Static/georgetown.sqf',
'Hotel_Invasion_DMS_Static/hotel_invasion.sqf']
missions_static.each do |f|
stage(
f.pathmap("source/mods/DMSStaticMissions/Tanoa Static/%p"),
f.pathmap("build/mods/a3_dms/missions/static/%f")
)
end
objects_static = [
'Comms_Alpha_DMS_Static/comms_alpha_buildings.sqf',
'Georgetown_Invasion_DMS_Static/georgetown_buildings.sqf',
'Hotel_Invasion_DMS_Static/hotel_invasion_buildings.sqf']
objects_static.each do |f|
stage(
f.pathmap("source/mods/DMSStaticMissions/Tanoa Static/%p"),
f.pathmap("build/mods/a3_dms/objects/static/%f")
)
end
bandit_missions = ['banditsZ.sqf', 'blackhawkdownZ.sqf', 'foodtransportZ.sqf', 'lost_battalionZ.sqf',
'medicalZ.sqf', 'mercenariesZ.sqf', 'thievesZ.sqf']
bandit_missions.each do |f|
stage(
f.pathmap("source/mods/DMSBanditMissions/Z-Theme Missions/%p"),
f.pathmap("build/mods/a3_dms/missions/bandit/%f")
)
end
end
# ================== ExileServer PBOs =====================
# https://github.com/Defent/DMS_Exile
build_pbo({
name: "a3_dms",
source_dir: "source/mods/DMS_Exile/@ExileServer/addons/a3_dms",
build_dir: "build/mods/a3_dms",
target_pbo: "stage/@ExileServer/addons/a3_dms.pbo",
prefix: "x\\addons\\DMS"
})
# https://github.com/kuplion/a3_exile_occupation
build_pbo({
name: "a3_exile_occupation",
source_dir: "source/mods/occupation/source/a3_exile_occupation",
build_dir: "build/mods/a3_exile_occupation",
target_pbo: "stage/@ExileServer/addons/a3_exile_occupation.pbo",
prefix: "x\\addons\\a3_exile_occupation"
})
# not under github, but you can go to http://www.exilemod.com/downloads/
# and download the server zip, depbo the exile_server_config.pbo part to the source dir.
build_pbo({
name: "exile_server_config",
source_dir: "source/mods/exile_server_config",
target_pbo: "stage/@ExileServer/addons/exile_server_config.pbo",
prefix: "exile_server_config"
}) do |conf|
conf.process_files = Rake::FileList["#{conf.source_dir}/**/config.cpp"]
end
# https://github.com/patrix87/ExileZ-2
build_pbo({
name: "exilez",
source_dir: "source/mods/ExileZ-2/exilez",
build_dir: "build/mods/exilez",
target_pbo: "stage/@ExileServer/addons/exilez.pbo",
prefix: "exilez"
})
# commercial product. see https://infistar.de/eng/product/infistar-exile
build_pbo({
name: "infiSTAR_Exile",
source_dir: "source/mods/infiSTAR.de_EXILE/SERVER_ARMA3_FOLDER/@infiSTAR_Exile/addons/a3_infiSTAR_Exile",
build_dir: "build/mods/a3_infiSTAR_Exile",
target_pbo: "stage/@ExileServer/addons/a3_infiSTAR_Exile.pbo",
prefix: "a3_infiSTAR_Exile"
}) do |conf|
conf.process_files = Rake::FileList["#{conf.source_dir}/**/EXILE_AHAT_CONFIG.hpp"]
# additional copy files...
dlls = Rake::FileList["source/mods/infiSTAR.de_EXILE/SERVER_ARMA3_FOLDER/@infiSTAR_Exile/*.dll"]
dlls.each do |f|
stage(f,f.pathmap("stage/%f"))
end
end
# ===================== MAP/MISSION PBOs =======================
# also from the server zip at http://www.exilemod.com/downloads/
# however, my copy is also modified for NeboLand's Arma Server.
# you can take mine or use your own.
#
# My take:
# Exile set the stage as a place for 'survivor' criminals. But things have gotten much worse.
# Zombies have taken over towns, and a downed plane from Isla Sorna, results in a small group of
# raptors springing loose.
# UNDER EVOLUTION.
build_pbo({
name: "Exile.Tanoa",
source_dir: "source/mods/Exile.Tanoa",
target_pbo: "stage/mpmissions/Exile.Tanoa.pbo",
prefix: "Exile.Tanoa"
}) do |conf|
infistar_files = Rake::FileList["source/mods/infiSTAR.de_EXILE/MPMission/**/*"]
infistar_files.each do |f|
build_file = f.pathmap("%{^source/mods/infiSTAR.de_EXILE/MPMission,#{conf.build_dir}}p")
stage(f,build_file)
end
trader_files = Rake::FileList["source/mods/Trader-Mod/TRADERS/**/*"]
trader_files = trader_files.select{|f| File.file?(f) }
trader_files.each do |f|
build_file = f.pathmap("%{^source/mods/Trader-Mod/TRADERS,#{conf.build_dir}/TRADERS}p")
stage(f,build_file)
end
end
# attempt at merging the ALiVE mod with Exile. The idea is to have Exile and DMS missions
# against a larger backdrop of asymetric warfare. ALiVE is used as an alternative to
# DMS Occupation and possibly ExileZ-2 to drive non-DMS "bandits", zombies and a police military force
# in strategic skirmishes and patrols across the island.
# UNDER CONSTRUCTION.
build_pbo({
name: "ExileAlive.Tanoa",
source_dir: "source/mods/ExileAlive.Tanoa",
target_pbo: "stage/mpmissions/ExileAlive.Tanoa.pbo",
prefix: "ExileAlive.Tanoa"
}) do |conf|
infistar_files = Rake::FileList["source/mods/infiSTAR.de_EXILE/MPMission/**/*"]
infistar_files.each do |f|
build_file = f.pathmap("%{^source/mods/infiSTAR.de_EXILE/MPMission,#{conf.build_dir}}p")
stage(f,build_file)
end
end
# from sample missions. see http://alivemod.com/missions
build_pbo({
name: "Alive: Operation_Landlord.Altis",
source_dir: "source/mods/Operation_Landlord.Altis",
target_pbo: "stage/mpmissions/Operation_Landlord.Altis.pbo",
prefix: "Operation_Landlord.Altis"
})
# place after all the build_pbo commands...
multitask build_mods: pbo_targets