@jtff/miztemplate-lib 3.0.0-rc2 → 3.0.0-rc20

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