@jtff/miztemplate-lib 3.0.0-rc9 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (73) hide show
  1. package/ci/build.js +6 -0
  2. package/ci/clean.js +4 -0
  3. package/ci/ftpupload.js +6 -0
  4. package/ci/gdrive-upload.js +6 -0
  5. package/ci/get-mizfiles.js +6 -0
  6. package/ci/getset-version.js +10 -0
  7. package/ci/inject-scripts.js +5 -0
  8. package/ci/prepare-nextversion.js +5 -0
  9. package/ci/release.js +5 -0
  10. package/ci/template-update.js +5 -0
  11. package/lib/jtff-lib-ci.js +72 -1
  12. package/lib/mizlib.js +157 -41
  13. package/lua/src/199-skynet.lua +1 -1
  14. package/package.json +5 -2
  15. package/resources/radios/Caucasus/354th-caucasus.lua +124 -0
  16. package/resources/radios/Caucasus/494th-caucasus.lua +91 -0
  17. package/resources/radios/Caucasus/79th-SUFA-caucasus.lua +65 -0
  18. package/resources/radios/Caucasus/79th-caucasus.lua +65 -0
  19. package/resources/radios/Caucasus/ec25-D-caucasus.lua +65 -0
  20. package/resources/radios/Caucasus/ec25-caucasus.lua +65 -0
  21. package/resources/radios/Caucasus/vf84-a-caucasus.lua +75 -0
  22. package/resources/radios/Caucasus/vf84-b-caucasus.lua +75 -0
  23. package/resources/radios/Caucasus/vfa-131-caucasus.lua +65 -0
  24. package/resources/radios/Caucasus/vmfa-314-caucasus.lua +65 -0
  25. package/resources/radios/Mariana/354th-marianas.lua +124 -0
  26. package/resources/radios/Mariana/494th-marianas.lua +91 -0
  27. package/resources/radios/Mariana/79th-marianas.lua +65 -0
  28. package/resources/radios/Mariana/ec25-marianas.lua +65 -0
  29. package/resources/radios/Mariana/vf84-a-marianas.lua +75 -0
  30. package/resources/radios/Mariana/vf84-b-marianas.lua +75 -0
  31. package/resources/radios/Mariana/vfa-131-marianas.lua +65 -0
  32. package/resources/radios/Mariana/vmfa-314-marianas.lua +65 -0
  33. package/resources/radios/NTTR/354th-nttr.lua +124 -0
  34. package/resources/radios/NTTR/494th-nttr.lua +91 -0
  35. package/resources/radios/NTTR/79th-nttr.lua +65 -0
  36. package/resources/radios/NTTR/ec25-nttr.lua +65 -0
  37. package/resources/radios/NTTR/vf84-a-nttr.lua +75 -0
  38. package/resources/radios/NTTR/vf84-b-nttr.lua +75 -0
  39. package/resources/radios/NTTR/vfa-131-nttr.lua +65 -0
  40. package/resources/radios/NTTR/vmfa-314-nttr.lua +65 -0
  41. package/resources/radios/PersianGulf/354th-persian.lua +124 -0
  42. package/resources/radios/PersianGulf/3_30-persian.lua +65 -0
  43. package/resources/radios/PersianGulf/494th-persian.lua +91 -0
  44. package/resources/radios/PersianGulf/79th-persian.lua +65 -0
  45. package/resources/radios/PersianGulf/ec25-persian.lua +65 -0
  46. package/resources/radios/PersianGulf/vf84-a-persian.lua +75 -0
  47. package/resources/radios/PersianGulf/vf84-b-persian.lua +75 -0
  48. package/resources/radios/PersianGulf/vfa-131-persian.lua +65 -0
  49. package/resources/radios/PersianGulf/vmfa-314-persian.lua +65 -0
  50. package/resources/radios/SinaiMap/354th-sinai.lua +124 -0
  51. package/resources/radios/SinaiMap/494th-sinai.lua +91 -0
  52. package/resources/radios/SinaiMap/79th-SUFA-sinai.lua +65 -0
  53. package/resources/radios/SinaiMap/79th-sinai.lua +65 -0
  54. package/resources/radios/SinaiMap/ec25-D-sinai.lua +65 -0
  55. package/resources/radios/SinaiMap/ec25-sinai.lua +65 -0
  56. package/resources/radios/SinaiMap/vf84-a-sinai.lua +75 -0
  57. package/resources/radios/SinaiMap/vf84-b-sinai.lua +75 -0
  58. package/resources/radios/SinaiMap/vfa-131-sinai.lua +65 -0
  59. package/resources/radios/SinaiMap/vmfa-314-sinai.lua +65 -0
  60. package/resources/radios/Syria/354th-syria.lua +124 -0
  61. package/resources/radios/Syria/494th-syria.lua +91 -0
  62. package/resources/radios/Syria/79th-SUFA-syria.lua +65 -0
  63. package/resources/radios/Syria/79th-syria.lua +65 -0
  64. package/resources/radios/Syria/ec25-D-syria.lua +65 -0
  65. package/resources/radios/Syria/ec25-syria.lua +65 -0
  66. package/resources/radios/Syria/vf84-a-syria.lua +75 -0
  67. package/resources/radios/Syria/vf84-b-syria.lua +75 -0
  68. package/resources/radios/Syria/vfa-131-syria.lua +65 -0
  69. package/resources/radios/Syria/vmfa-314-syria.lua +65 -0
  70. package/scripts/build.js +15 -17
  71. package/scripts/inject-scripts.js +273 -354
  72. package/scripts/template-update.js +50 -32
  73. package/resources/radios/.gitkeep +0 -0
@@ -1,43 +1,66 @@
1
1
  const fs = require('fs');
2
2
  const path = require("path");
3
3
  const prompt = require('prompt');
4
+ let _ = require('lodash');
5
+ const {getInstalledPathSync} = require("get-installed-path");
4
6
 
5
7
  function injectScripts(jtffci, env_mission) {
6
- // create mission folder in dist (general) folder
7
- fs.mkdirSync(jtffci.config.general.missionFolder, { recursive: true });
8
- if (fs.existsSync([
8
+ const workspacePath = [
9
9
  jtffci.config.general.missionFolder,
10
10
  "/",
11
11
  path.parse(env_mission).name
12
- ].join(""))) {
12
+ ].join("");
13
+ const destinationMizFilePath = [
14
+ workspacePath,
15
+ '/',
16
+ path.basename(env_mission)
17
+ ].join("");
18
+ // create mission folder in jtffci.config.reneral.missionFolder folder
19
+ fs.mkdirSync(jtffci.config.general.missionFolder, { recursive: true });
20
+ if (fs.existsSync(workspacePath)) {
13
21
  // if there is a specific mission folder (dist/env_mission), clean it
14
- fs.rmSync([
15
- jtffci.config.general.missionFolder,
16
- "/",
17
- path.parse(env_mission).name
18
- ].join(""),
19
- { recursive: true }
20
- );
22
+ fs.rmSync(workspacePath,{ recursive: true });
21
23
  }
22
24
  // create a settings folder
23
25
  fs.mkdirSync([
24
- jtffci.config.general.missionFolder,
25
- "/",
26
- path.parse(env_mission).name,
26
+ workspacePath,
27
27
  "/settings"
28
28
  ].join(""),
29
29
  { recursive: true }
30
30
  );
31
31
  // create a src folder
32
32
  fs.mkdirSync([
33
- jtffci.config.general.missionFolder,
34
- "/",
35
- path.parse(env_mission).name,
36
- "/src"
33
+ workspacePath,
34
+ "/.workspace/src"
35
+ ].join(""),
36
+ { recursive: true }
37
+ );
38
+ // create a lib folder
39
+ fs.mkdirSync([
40
+ workspacePath,
41
+ "/.workspace/lib"
42
+ ].join(""),
43
+ { recursive: true }
44
+ );
45
+ // create a resources folder
46
+ fs.mkdirSync([
47
+ workspacePath,
48
+ "/.workspace/resources/sounds"
49
+ ].join(""),
50
+ { recursive: true }
51
+ );
52
+ fs.mkdirSync([
53
+ workspacePath,
54
+ "/resources/radios"
55
+ ].join(""),
56
+ { recursive: true }
57
+ );
58
+ fs.mkdirSync([
59
+ workspacePath,
60
+ "/resources/sounds"
37
61
  ].join(""),
38
62
  { recursive: true }
39
63
  );
40
-
41
64
  const prompt_properties = [
42
65
  {
43
66
  name: 'inject_tankers',
@@ -118,112 +141,60 @@ function injectScripts(jtffci, env_mission) {
118
141
  console.log(' inject_A2G scripts: ' + (/^y\b|o\b|yes\b|oui\b/i).test(prompt_result.inject_A2G));
119
142
  console.log(' inject_mission specific scripts: ' + (/^y\b|o\b|yes\b|oui\b/i).test(prompt_result.inject_mission));
120
143
  console.log(' inject_radio_presets scripts: ' + (/^y\b|o\b|yes\b|oui\b/i).test(prompt_result.inject_radio_presets));
121
-
122
144
  // open the miz input file for reading
123
- const mizObject = await this.mizlib.getZipObjectFromMizPath(env_mission);
124
- // inject all the lua files in the src folder into the source zip object
125
- this.mizlib.injectLuaFilesFromFolderIntoZipObject(mizObject, "src");
126
- // inject all the lua files in the lib folder into the source zip object
127
- this.mizlib.injectLuaFilesFromFolderIntoZipObject(mizObject, "lib");
145
+ const originalMizObject = await jtffci.mizlib.getZipObjectFromMizPath(env_mission);
146
+ // copie de l'objet pour modification
147
+ let mizObject = originalMizObject;
148
+ // Open the mission Object and mapResource Object for modification
149
+ const missionObject = await jtffci.mizlib.getMissionObjectFromZipObject(mizObject);
150
+ let mapResourceObject = await jtffci.mizlib.getMapResourceObjectFromZipObject(mizObject);
151
+ // prepare settings array
152
+ let settingsArray = [];
153
+ let scriptsArray = [];
154
+ let libsArray = [];
155
+ // insertion des librairies externes dans la file d'attente
156
+ libsArray.push({
157
+ folder: 'lib',
158
+ scriptTitle: 'SplashDamage 2.0',
159
+ scripts: ['Splash_Damage_2_0.lua'],
160
+ timing: 9,
161
+ color: '0x008000ff'
162
+ });
163
+ libsArray.push({
164
+ folder: 'lib',
165
+ scriptTitle: 'Moose',
166
+ scripts: ['Moose_.lua'],
167
+ timing: 10,
168
+ color: '0x008000ff'
169
+ });
170
+ libsArray.push({
171
+ folder: 'lib',
172
+ scriptTitle: 'Mist',
173
+ scripts: ['mist_4_5_107.lua'],
174
+ timing: 12,
175
+ color: '0x008000ff'
176
+ });
177
+ libsArray.push({
178
+ folder: 'lib',
179
+ scriptTitle: 'Hercules',
180
+ scripts: ['Hercules_Cargo.lua'],
181
+ timing: 14,
182
+ color: '0x008000ff'
183
+ });
184
+ libsArray.push({
185
+ folder: 'lib',
186
+ scriptTitle: 'Skynet',
187
+ scripts: ['skynet-iads-compiled.lua'],
188
+ timing: 15,
189
+ color: '0x008000ff'
190
+ });
128
191
  // injection des fichiers son Généraux si repertoire resources/sounds/General present
129
- await this.mizlib.mizUpdateSingleSoundFolder(mizObject, 'General');
130
- // On fait une sauvegarde dans le folder de destination
131
- // fs.writeFileSync([
132
- // jtffci.config.general.missionFolder,
133
- // "/",
134
- // path.parse(env_mission).name,
135
- // "/",
136
- // path.basename(env_mission)
137
- // ].join(""),
138
- // await mizObject.generateAsync({
139
- // type: 'nodebuffer',
140
- // streamFiles: true,
141
- // compression: "DEFLATE",
142
- // compressionOptions: {
143
- // level: 9
144
- // }
145
- // })
146
- // );
192
+ await jtffci.mizlib.updateWorkspaceWithSingleSoundFolder(workspacePath, 'General');
193
+ await jtffci.mizlib.injectSingleSoundFolderIntoZipObject(mizObject,workspacePath, 'General', true);
147
194
  // injection des fichiers son Misc si repertoire resources/sounds/Misc present
148
- await this.mizlib.mizUpdateSingleSoundFolder(mizObject, 'Misc');
149
- // On fait une sauvegarde dans le folder de destination
150
- // fs.writeFileSync([
151
- // jtffci.config.general.missionFolder,
152
- // "/",
153
- // path.parse(env_mission).name,
154
- // "/",
155
- // path.basename(env_mission)
156
- // ].join(""),
157
- // await mizObject.generateAsync({
158
- // type: 'nodebuffer',
159
- // streamFiles: true,
160
- // compression: "DEFLATE",
161
- // compressionOptions: {
162
- // level: 9
163
- // }
164
- // })
165
- // );
166
- const missionObject = await this.mizlib.getMissionObjectFromZipObject(mizObject);
167
- let mapResourceObject = await this.mizlib.getMapResourceObjectFromZipObject(mizObject);
168
- let settingsArray = [];
169
- if (Array.isArray(mapResourceObject)) {
170
- if (mapResourceObject.length === 0) {
171
- mapResourceObject = {};
172
- }
173
- }
174
- // injection SplashDamage
175
- let tuple = this.mizlib.injectLuaScriptsInMissionObject(
176
- missionObject['trig'],
177
- missionObject['trigrules'],
178
- mapResourceObject,
179
- 'SplashDamage load',
180
- ['Splash_Damage_2_0.lua'],
181
- 9,
182
- '0x008000ff'
183
- );
184
- missionObject['trig'] = tuple.tObject;
185
- missionObject['trigrules'] = tuple.trObject;
186
- mapResourceObject = tuple.mrObject;
187
- // injection Moose
188
- tuple = this.mizlib.injectLuaScriptsInMissionObject(
189
- missionObject['trig'],
190
- missionObject['trigrules'],
191
- mapResourceObject,
192
- 'Moose load',
193
- ['Moose_.lua'],
194
- 10,
195
- '0x008000ff'
196
- );
197
- missionObject['trig'] = tuple.tObject;
198
- missionObject['trigrules'] = tuple.trObject;
199
- mapResourceObject = tuple.mrObject;
200
- // injection Mist
201
- tuple = this.mizlib.injectLuaScriptsInMissionObject(
202
- missionObject['trig'],
203
- missionObject['trigrules'],
204
- mapResourceObject,
205
- 'Mist load',
206
- ['mist_4_5_107.lua'],
207
- 13,
208
- '0x008000ff'
209
- );
210
- missionObject['trig'] = tuple.tObject;
211
- missionObject['trigrules'] = tuple.trObject;
212
- mapResourceObject = tuple.mrObject;
213
- // injection Skynet
214
- tuple = this.mizlib.injectLuaScriptsInMissionObject(
215
- missionObject['trig'],
216
- missionObject['trigrules'],
217
- mapResourceObject,
218
- 'Skynet load',
219
- ['skynet-iads-compiled.lua'],
220
- 15,
221
- '0x008000ff'
222
- );
223
- missionObject['trig'] = tuple.tObject;
224
- missionObject['trigrules'] = tuple.trObject;
225
- mapResourceObject = tuple.mrObject;
226
- // injection Librairies JTFF
195
+ await jtffci.mizlib.updateWorkspaceWithSingleSoundFolder(workspacePath, 'Misc');
196
+ await jtffci.mizlib.injectSingleSoundFolderIntoZipObject(mizObject,workspacePath, 'Misc', true);
197
+ // insertion des Librairies JTFF dans la file d'attente
227
198
  settingsArray.push(
228
199
  {
229
200
  file: "settings-gemman.lua",
@@ -232,33 +203,48 @@ function injectScripts(jtffci, env_mission) {
232
203
  file: "settings-global.lua",
233
204
  },
234
205
  );
235
- tuple = this.mizlib.injectLuaScriptsInMissionObject(
236
- missionObject['trig'],
237
- missionObject['trigrules'],
238
- mapResourceObject,
239
- 'Load JTFF Libraries',
240
- ['010-root_menus.lua', '020-mission_functions.lua', 'gemman.lua'],
241
- 17,
242
- '0xffff00ff'
243
- );
244
- missionObject['trig'] = tuple.tObject;
245
- missionObject['trigrules'] = tuple.trObject;
246
- mapResourceObject = tuple.mrObject;
247
-
248
- // injection de la gestion des Set_Clients
249
- tuple = this.mizlib.injectLuaScriptsInMissionObject(
250
- missionObject['trig'],
251
- missionObject['trigrules'],
252
- mapResourceObject,
253
- 'Set clients',
254
- ['110-set_clients.lua'],
255
- 21,
256
- '0xff0000ff'
257
- );
258
- missionObject['trig'] = tuple.tObject;
259
- missionObject['trigrules'] = tuple.trObject;
260
- mapResourceObject = tuple.mrObject;
261
- // injection des Tankers et OndemandTankers
206
+ libsArray.push({
207
+ folder: 'lib',
208
+ scriptTitle: 'GemMan',
209
+ scripts: ['gemman.lua'],
210
+ timing: 17,
211
+ color: '0xffff00ff'
212
+ });
213
+ libsArray.push({
214
+ folder: 'src',
215
+ scriptTitle: 'JTFF Libraries',
216
+ scripts: ['010-root_menus.lua', '020-mission_functions.lua'],
217
+ timing: 18,
218
+ color: '0xffff00ff'
219
+ });
220
+ // traitement de la file d'attente des librairies (injection des triggers et des fichiers lua)
221
+ for ( libscript of libsArray) {
222
+ console.log(['adding library',libscript.scripts.join(' and '),'from',workspacePath + '/.workspace/' + libscript.folder, 'folder...'].join(' '));
223
+ let {tuple, zipObject} = await jtffci.mizlib.injectLuaScriptIntoZipObjectAndUpdateWorkspace(
224
+ workspacePath,
225
+ libscript.folder,
226
+ libscript.scripts,
227
+ libscript.scriptTitle + ' Load',
228
+ mizObject,
229
+ libscript.timing,
230
+ libscript.color,
231
+ true
232
+ );
233
+ missionObject['trig'] = tuple.tObject;
234
+ missionObject['trigrules'] = tuple.trObject;
235
+ mapResourceObject = _.merge(mapResourceObject,tuple.mrObject);
236
+ mizObject = zipObject;
237
+ }
238
+ // injection de la gestion des Set_Clients dans la file d'attente
239
+ scriptsArray.push({
240
+ folder: 'src',
241
+ scriptTitle: 'Set clients',
242
+ scripts: ['110-set_clients.lua'],
243
+ timing: 21,
244
+ color: '0xff0000ff',
245
+ fromLibrary: true
246
+ });
247
+ // injection des Tankers et OndemandTankers dans la file d'attente
262
248
  if ((/^y\b|o\b|yes\b|oui\b/i).test(prompt_result.inject_tankers)) {
263
249
  settingsArray.push(
264
250
  {
@@ -270,22 +256,20 @@ function injectScripts(jtffci, env_mission) {
270
256
  objectName: "OnDemandTankersConfig"
271
257
  },
272
258
  );
273
- tuple = this.mizlib.injectLuaScriptsInMissionObject(
274
- missionObject['trig'],
275
- missionObject['trigrules'],
276
- mapResourceObject,
277
- 'Tankers',
278
- ['120-tankers.lua'],
279
- 22,
280
- '0xff0000ff'
281
- );
282
- missionObject['trig'] = tuple.tObject;
283
- missionObject['trigrules'] = tuple.trObject;
284
- mapResourceObject = tuple.mrObject;
259
+ scriptsArray.push({
260
+ folder: 'src',
261
+ scriptTitle: 'Tankers',
262
+ scripts: ['120-tankers.lua'],
263
+ timing: 22,
264
+ color: '0xff0000ff',
265
+ fromLibrary: true
266
+ });
285
267
  }
268
+ // injection des Airboss et Pedros dans la file d'attente
286
269
  if ((/^y\b|o\b|yes\b|oui\b/i).test(prompt_result.inject_airboss)) {
287
270
  // injection des fichiers son Airboss
288
- // await this.mizlib.mizUpdateSingleSoundFolder(mizObject, 'AIRBOSS');
271
+ await jtffci.mizlib.updateWorkspaceWithSingleSoundFolder(workspacePath, 'AIRBOSS');
272
+ await jtffci.mizlib.injectSingleSoundFolderIntoZipObject(mizObject,workspacePath, 'AIRBOSS', true);
289
273
  settingsArray.push(
290
274
  {
291
275
  file: "settings-airboss.lua",
@@ -296,19 +280,16 @@ function injectScripts(jtffci, env_mission) {
296
280
  objectName: "PedrosConfig"
297
281
  },
298
282
  );
299
- tuple = this.mizlib.injectLuaScriptsInMissionObject(
300
- missionObject['trig'],
301
- missionObject['trigrules'],
302
- mapResourceObject,
303
- 'Airboss',
304
- ['130-airboss.lua', '135-pedro.lua'],
305
- 23,
306
- '0xff0000ff'
307
- );
308
- missionObject['trig'] = tuple.tObject;
309
- missionObject['trigrules'] = tuple.trObject;
310
- mapResourceObject = tuple.mrObject;
283
+ scriptsArray.push({
284
+ folder: 'src',
285
+ scriptTitle: 'Airboss',
286
+ scripts: ['130-airboss.lua', '135-pedro.lua'],
287
+ timing: 23,
288
+ color: '0xff0000ff',
289
+ fromLibrary: true
290
+ });
311
291
  }
292
+ // injection des Beacons dans la file d'attente
312
293
  if ((/^y\b|o\b|yes\b|oui\b/i).test(prompt_result.inject_beacons)) {
313
294
  settingsArray.push(
314
295
  {
@@ -316,19 +297,16 @@ function injectScripts(jtffci, env_mission) {
316
297
  objectName: "BeaconsConfig"
317
298
  },
318
299
  );
319
- tuple = this.mizlib.injectLuaScriptsInMissionObject(
320
- missionObject['trig'],
321
- missionObject['trigrules'],
322
- mapResourceObject,
323
- 'Beacons',
324
- ['140-beacons.lua'],
325
- 24,
326
- '0xff0000ff'
327
- );
328
- missionObject['trig'] = tuple.tObject;
329
- missionObject['trigrules'] = tuple.trObject;
330
- mapResourceObject = tuple.mrObject;
300
+ scriptsArray.push({
301
+ folder: 'src',
302
+ scriptTitle: 'Beacons',
303
+ scripts: ['140-beacons.lua'],
304
+ timing: 24,
305
+ color: '0xff0000ff',
306
+ fromLibrary: true
307
+ });
331
308
  }
309
+ // injection des AWACS et OnDemandAwacs dans la file d'attente
332
310
  if ((/^y\b|o\b|yes\b|oui\b/i).test(prompt_result.inject_awacs)) {
333
311
  settingsArray.push(
334
312
  {
@@ -340,41 +318,36 @@ function injectScripts(jtffci, env_mission) {
340
318
  objectName: "AwacsOnDemandConfig"
341
319
  },
342
320
  );
343
- tuple = this.mizlib.injectLuaScriptsInMissionObject(
344
- missionObject['trig'],
345
- missionObject['trigrules'],
346
- mapResourceObject,
347
- 'Awacs',
348
- ['150-awacs.lua'],
349
- 25,
350
- '0xff0000ff'
351
- );
352
- missionObject['trig'] = tuple.tObject;
353
- missionObject['trigrules'] = tuple.trObject;
354
- mapResourceObject = tuple.mrObject;
321
+ scriptsArray.push({
322
+ folder: 'src',
323
+ scriptTitle: 'Awacs',
324
+ scripts: ['150-awacs.lua'],
325
+ timing: 25,
326
+ color: '0xff0000ff',
327
+ fromLibrary: true
328
+ });
355
329
  }
330
+ // injection des ATIS dans la file d'attente
356
331
  if ((/^y\b|o\b|yes\b|oui\b/i).test(prompt_result.inject_atis)) {
357
332
  // injection des fichiers son ATIS
358
- // await this.mizlib.mizUpdateSingleSoundFolder(mizObject, 'ATIS');
333
+ await jtffci.mizlib.updateWorkspaceWithSingleSoundFolder(workspacePath, 'ATIS');
334
+ await jtffci.mizlib.injectSingleSoundFolderIntoZipObject(mizObject,workspacePath, 'ATIS', true);
359
335
  settingsArray.push(
360
336
  {
361
337
  file: "settings-atis.lua",
362
338
  objectName: "AtisConfig"
363
339
  },
364
340
  );
365
- tuple = this.mizlib.injectLuaScriptsInMissionObject(
366
- missionObject['trig'],
367
- missionObject['trigrules'],
368
- mapResourceObject,
369
- 'ATIS',
370
- ['160-atis.lua'],
371
- 26,
372
- '0xff0000ff'
373
- );
374
- missionObject['trig'] = tuple.tObject;
375
- missionObject['trigrules'] = tuple.trObject;
376
- mapResourceObject = tuple.mrObject;
341
+ scriptsArray.push({
342
+ folder: 'src',
343
+ scriptTitle: 'ATIS',
344
+ scripts: ['160-atis.lua'],
345
+ timing: 26,
346
+ color: '0xff0000ff',
347
+ fromLibrary: true
348
+ });
377
349
  }
350
+ // injection des scripts A2A dans la file d'attente
378
351
  if ((/^y\b|o\b|yes\b|oui\b/i).test(prompt_result.inject_A2A)) {
379
352
  settingsArray.push(
380
353
  {
@@ -398,44 +371,40 @@ function injectScripts(jtffci, env_mission) {
398
371
  objectName: "InterceptConfig"
399
372
  },
400
373
  );
401
- tuple = this.mizlib.injectLuaScriptsInMissionObject(
402
- missionObject['trig'],
403
- missionObject['trigrules'],
404
- mapResourceObject,
405
- 'Air To Air',
406
- ['170-cap_zone_training.lua', '172-cap_zone_war.lua', '173-fox_zone_training.lua', '176-random_air_traffic.lua', '178-training-intercept.lua'],
407
- 27,
408
- '0xff0000ff'
409
- );
410
- missionObject['trig'] = tuple.tObject;
411
- missionObject['trigrules'] = tuple.trObject;
412
- mapResourceObject = tuple.mrObject;
374
+ scriptsArray.push({
375
+ folder: 'src',
376
+ scriptTitle: 'Air To Air',
377
+ scripts: ['170-cap_zone_training.lua', '172-cap_zone_war.lua', '173-fox_zone_training.lua', '176-random_air_traffic.lua', '178-training-intercept.lua'],
378
+ timing: 27,
379
+ color: '0xff0000ff',
380
+ fromLibrary: true
381
+ });
413
382
  }
383
+ // injection des CTLD dans la file d'attente
414
384
  if ((/^y\b|o\b|yes\b|oui\b/i).test(prompt_result.inject_Logistics)) {
415
385
  // injection des fichiers son CTLD
416
- await this.mizlib.mizUpdateSingleSoundFolder(mizObject, 'CTLD');
386
+ await jtffci.mizlib.updateWorkspaceWithSingleSoundFolder(workspacePath, 'CTLD');
387
+ await jtffci.mizlib.injectSingleSoundFolderIntoZipObject(mizObject,workspacePath, 'CTLD', true);
417
388
  settingsArray.push(
418
389
  {
419
390
  file: "settings-logistics.lua",
420
391
  objectName: "CTLDConfig"
421
392
  },
422
393
  );
423
- tuple = this.mizlib.injectLuaScriptsInMissionObject(
424
- missionObject['trig'],
425
- missionObject['trigrules'],
426
- mapResourceObject,
427
- 'Logistics',
428
- ['180-logistics.lua'],
429
- 28,
430
- '0xff0000ff'
431
- );
432
- missionObject['trig'] = tuple.tObject;
433
- missionObject['trigrules'] = tuple.trObject;
434
- mapResourceObject = tuple.mrObject;
394
+ scriptsArray.push({
395
+ folder: 'src',
396
+ scriptTitle: 'Logistics',
397
+ scripts: ['180-logistics.lua'],
398
+ timing: 28,
399
+ color: '0xff0000ff',
400
+ fromLibrary: true
401
+ });
435
402
  }
403
+ // injection des scripts A2G dans la file d'attente
436
404
  if ((/^y\b|o\b|yes\b|oui\b/i).test(prompt_result.inject_A2G)) {
437
405
  // injection des fichiers son Range
438
- // await this.mizlib.mizUpdateSingleSoundFolder(mizObject, 'RANGE');
406
+ await jtffci.mizlib.updateWorkspaceWithSingleSoundFolder(workspacePath, 'RANGE');
407
+ await jtffci.mizlib.injectSingleSoundFolderIntoZipObject(mizObject,workspacePath, 'RANGE', true);
439
408
  settingsArray.push(
440
409
  {
441
410
  file: "settings-ranges.lua",
@@ -462,145 +431,95 @@ function injectScripts(jtffci, env_mission) {
462
431
  objectName: "SkynetConfig"
463
432
  },
464
433
  );
465
- tuple = this.mizlib.injectLuaScriptsInMissionObject(
466
- missionObject['trig'],
467
- missionObject['trigrules'],
468
- mapResourceObject,
469
- 'Air To Ground',
470
- ['190-ranges.lua', '191-sams.lua', '193-training_ranges.lua', '195-reaper-ondemand.lua', '196-fac_ranges.lua', '199-skynet.lua'],
471
- 29,
472
- '0xff0000ff'
473
- );
474
- missionObject['trig'] = tuple.tObject;
475
- missionObject['trigrules'] = tuple.trObject;
476
- mapResourceObject = tuple.mrObject;
434
+ scriptsArray.push({
435
+ folder: 'src',
436
+ scriptTitle: 'Air To Ground',
437
+ scripts: ['190-ranges.lua', '191-sams.lua', '193-training_ranges.lua', '195-reaper-ondemand.lua', '196-fac_ranges.lua', '199-skynet.lua'],
438
+ timing: 29,
439
+ color: '0xff0000ff',
440
+ fromLibrary: true
441
+ });
477
442
  }
443
+ // injection du script spécifique de mission dans la file d'attente
478
444
  if ((/^y\b|o\b|yes\b|oui\b/i).test(prompt_result.inject_mission)) {
479
- // fs.copyFileSync('templates/src/200-mission.lua',
480
- // [
481
- // jtffci.config.general.missionFolder,
482
- // "/",
483
- // path.parse(env_mission).name,
484
- // "/src/200-mission.lua"
485
- // ].join("")
486
- // );
487
- // const zip = await this.mizlib.getZipObjectFromMizPath([
488
- // jtffci.config.general.missionFolder,
489
- // "/",
490
- // path.parse(env_mission).name,
491
- // "/",
492
- // path.basename(env_mission)
493
- // ].join(""));
494
- //
495
- // this.mizlib.injectFileIntoZipObject(zip, [
496
- // jtffci.config.general.missionFolder,
497
- // "/",
498
- // path.parse(env_mission).name,
499
- // "/src/200-mission.lua"
500
- // ].join("")
501
- // );
502
- // const inputZip = await zip.generateAsync({
503
- // type: 'nodebuffer',
504
- // streamFiles: true,
505
- // compression: "DEFLATE",
506
- // compressionOptions: {
507
- // level: 9
508
- // }
509
- // });
510
- // fs.writeFileSync([
511
- // jtffci.config.general.missionFolder,
512
- // "/",
513
- // path.parse(env_mission).name,
514
- // "/",
515
- // path.basename(env_mission)
516
- // ].join(""),
517
- // inputZip);
518
- tuple = this.mizlib.injectLuaScriptsInMissionObject(
519
- missionObject['trig'],
520
- missionObject['trigrules'],
521
- mapResourceObject,
522
- 'Mission specific',
523
- ['200-mission.lua'],
524
- 30,
525
- '0xff0000ff'
445
+ scriptsArray.push({
446
+ folder: 'src',
447
+ scriptTitle: 'Mission specific',
448
+ scripts: ['200-mission.lua'],
449
+ timing: 30,
450
+ color: '0xff0000ff',
451
+ fromLibrary: false
452
+ });
453
+ }
454
+ // traitement de la file d'attente des scripts (injection des triggers et des fichiers lua)
455
+ for ( script of scriptsArray) {
456
+ console.log(['adding script',script.scripts.join(' and '),'from',workspacePath + '/' + script.folder, 'folder...'].join(' '));
457
+ let {tuple, zipObject} = await jtffci.mizlib.injectLuaScriptIntoZipObjectAndUpdateWorkspace(
458
+ workspacePath,
459
+ script.folder,
460
+ script.scripts,
461
+ script.scriptTitle,
462
+ mizObject,
463
+ script.timing,
464
+ script.color,
465
+ script.fromLibrary
526
466
  );
527
467
  missionObject['trig'] = tuple.tObject;
528
468
  missionObject['trigrules'] = tuple.trObject;
529
- mapResourceObject = tuple.mrObject;
469
+ mapResourceObject = _.merge(mapResourceObject,tuple.mrObject);
470
+ mizObject = zipObject;
530
471
  }
472
+ // injection des preset radio dans les avions humains
531
473
  if ((/^y\b|o\b|yes\b|oui\b/i).test(prompt_result.inject_radio_presets)) {
532
474
  // injection des preset radio
533
- console.log([
534
- jtffci.config.general.missionFolder,
535
- "/",
536
- path.parse(env_mission).name,
537
- "/",
538
- path.basename(env_mission)
539
- ].join("") + ": injecting radio presets declared in resources/radios/" + path.parse(env_mission).name);
540
- await this.mizlib.mizUpdateRadioPresets(mizObject, 'resources/radios/' + path.parse(env_mission).name);
541
- }
542
- //injection du trigger des settings
543
- for (let settingsObject of settingsArray) {
544
- fs.copyFileSync(
545
- [
546
- 'templates/settings/',
547
- settingsObject.file
548
- ].join(""),
549
- [
550
- jtffci.config.general.missionFolder,
551
- "/",
552
- path.parse(env_mission).name,
553
- "/settings/",
554
- settingsObject.file
555
- ].join("")
556
- );
475
+ fs.mkdirSync(workspacePath + '/resources/radios/' + missionObject.theatre,{recursive: true});
476
+ fs.cpSync(getInstalledPathSync('@jtff/miztemplate-lib',{local: true}) + '/resources/radios/' + missionObject.theatre,workspacePath + '/resources/radios/' + missionObject.theatre,{recursive: true})
477
+ console.log(destinationMizFilePath + ": injecting radio presets declared in resources/radios/" + missionObject.theatre);
478
+ await jtffci.mizlib.injectRadioPresetsFromFolderIntoZipObject(mizObject, workspacePath + '/resources/radios/' + missionObject.theatre);
557
479
  }
558
- await this.mizlib.injectLuaSettingsFromFolderPathToZipObject(mizObject,
559
- [
560
- jtffci.config.general.missionFolder,
561
- "/",
562
- path.parse(env_mission).name,
563
- "/settings"
564
- ].join("")
565
- );
480
+ // traitement de la file d'attente des settings (injection des triggers et des fichiers lua)
566
481
  if (settingsArray.length > 0) {
567
- tuple = this.mizlib.injectLuaScriptsInMissionObject(
568
- missionObject['trig'],
569
- missionObject['trigrules'],
570
- mapResourceObject,
482
+ console.log(['adding settings files',settingsArray.map(a => a.file).join(' and '),'from',workspacePath + '/settings', 'folder...'].join(' '));
483
+ let {tuple, zipObject} = await jtffci.mizlib.injectLuaScriptIntoZipObjectAndUpdateWorkspace(
484
+ workspacePath,
485
+ 'settings',
486
+ settingsArray.map(a => a.file),
571
487
  'Mission Settings',
572
- settingsArray.map(settingsObject => settingsObject.file),
488
+ mizObject,
573
489
  15,
574
- '0xffff00ff'
490
+ '0xffff00ff',
491
+ false
575
492
  );
576
493
  missionObject['trig'] = tuple.tObject;
577
494
  missionObject['trigrules'] = tuple.trObject;
578
- mapResourceObject = tuple.mrObject;
495
+ mapResourceObject = _.merge(mapResourceObject,tuple.mrObject);
496
+ mizObject = zipObject;
579
497
  }
580
- // Sauvegarde de la mission avec scripts injectés
581
- await this.mizlib.mizInjectMissionDataFile(
582
- [
583
- jtffci.config.general.missionFolder,
584
- "/",
585
- path.parse(env_mission).name,
586
- "/",
587
- path.basename(env_mission)
588
- ].join(""),
498
+ // réintégration du fichier mission dans l'archive
499
+ await jtffci.mizlib.injectMissionObjectIntoZipObject(
500
+ mizObject,
589
501
  { mission: missionObject }
590
502
  );
591
- await this.mizlib.mizInjectMapResourceFile(
592
- [
593
- jtffci.config.general.missionFolder,
594
- "/",
595
- path.parse(env_mission).name,
596
- "/",
597
- path.basename(env_mission)
598
- ].join(""),
503
+ await jtffci.mizlib.injectMapResourceObjectIntoZipObject(
504
+ mizObject,
599
505
  { mapResource: mapResourceObject }
600
506
  );
507
+ // creation du fichier miz dans l'espace de travail
508
+ // await fs.closeSync(fs.openSync(destinationMizFilePath, 'a'));
509
+ // On fait une sauvegarde dans le folder de destination
510
+ fs.writeFileSync(destinationMizFilePath, await mizObject.generateAsync({
511
+ type: 'nodebuffer',
512
+ streamFiles: true,
513
+ compression: "DEFLATE",
514
+ compressionOptions: {
515
+ level: 9
516
+ }
517
+ }));
518
+ // generation des outils CI JTFF
519
+ await jtffci.deployCIScriptsFromZipObjectIntoWorkspace(workspacePath, mizObject, env_mission);
601
520
  console.log('...Done...');
602
521
  return 0;
603
522
  });
604
523
  }
605
524
 
606
- module.exports = injectScripts
525
+ module.exports = injectScripts;