@jtff/miztemplate-lib 2.0.1

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.
package/index.js ADDED
@@ -0,0 +1,26 @@
1
+ const MizTemplateCI = require("./lib/jtff-lib-ci.js");
2
+ const build = require("./scripts/build.js");
3
+ const clean = require("./scripts/clean.js");
4
+ const ftpupload = require("./scripts/ftpupload.js");
5
+ const gdriveupload = require("./scripts/gdrive-upload.js");
6
+ const getmizfiles = require("./scripts/get-mizfiles.js");
7
+ const {setVersion, getVersion} = require("./scripts/getset-version.js");
8
+ const injectScripts = require("./scripts/inject-scripts.js");
9
+ const nextversionPrepare = require("./scripts/prepare-nextversion.js");
10
+ const release = require("./scripts/release.js");
11
+ const templateUpdate = require("./scripts/template-update.js");
12
+
13
+ module.exports = {
14
+ MizTemplateCI: MizTemplateCI,
15
+ build:build,
16
+ clean:clean,
17
+ ftpupload:ftpupload,
18
+ gdriveupload:gdriveupload,
19
+ getmizfiles:getmizfiles,
20
+ getVersion:getVersion,
21
+ setVersion:setVersion,
22
+ injectScripts:injectScripts,
23
+ nextversionPrepare:nextversionPrepare,
24
+ release:release,
25
+ templateUpdate:templateUpdate
26
+ };
@@ -0,0 +1,470 @@
1
+ "use strict";
2
+
3
+ const jszip = require("jszip");
4
+ const fs = require("fs");
5
+ const path = require("path");
6
+ const { promisify } = require('util');
7
+ const lstat = promisify(fs.lstat);
8
+ const { google } = require("googleapis");
9
+ const { format, parse } = require("lua-json");
10
+ const ftpClient = require('ftp');
11
+
12
+ class MizTemplateCI{
13
+
14
+ constructor(config) {
15
+ this.config = config
16
+ }
17
+
18
+ injectScripts(tObject, trObject, mrObject, strTitle, scriptFilesArray, timingInSeconds, hexColor) {
19
+ let nextIndex = Object.keys(trObject).length + 1;
20
+ if (nextIndex === 1) {
21
+ tObject['actions'] = {};
22
+ tObject['func'] = {};
23
+ tObject['conditions'] = {};
24
+ tObject['flag'] = {};
25
+ trObject = {};
26
+ }
27
+ let actionSentence = "";
28
+ let actionsObject = {};
29
+ for (const [index, scriptFile] of scriptFilesArray.entries()) {
30
+ actionSentence += "a_do_script_file(getValueResourceByKey(\"" + scriptFile + "\")); "
31
+ actionsObject[index + 1] = {
32
+ file: scriptFile,
33
+ predicate: 'a_do_script_file',
34
+ };
35
+ mrObject[scriptFile] = scriptFile;
36
+ }
37
+ actionSentence += "mission.trig.func[" + nextIndex + "]=nil;"
38
+ tObject['actions'][nextIndex] = actionSentence;
39
+ tObject['func'][nextIndex] = "if mission.trig.conditions[" + nextIndex + "]() then mission.trig.actions[" + nextIndex + "]() end";
40
+ tObject['conditions'][nextIndex] = "return(c_time_after(" + timingInSeconds + ") )";
41
+ tObject['flag'][nextIndex] = true;
42
+ trObject[nextIndex] = {
43
+ rules: {
44
+ 1: {
45
+ coalitionlist: 'red',
46
+ seconds: timingInSeconds,
47
+ predicate: 'c_time_after',
48
+ zone: ''
49
+ }
50
+ },
51
+ eventlist: '',
52
+ comment: strTitle,
53
+ actions: actionsObject,
54
+ predicate: 'triggerOnce',
55
+ colorItem: hexColor
56
+ };
57
+ return { tObject: tObject, trObject: trObject, mrObject: mrObject };
58
+ }
59
+
60
+ getVersion() {
61
+ return this.getVersionObject(this.config.general.missionVersion);
62
+ }
63
+
64
+ setVersionfromString(strVersion, configFilePath) {
65
+ return this.setVersion(this.getVersionObject(strVersion), configFilePath)
66
+ }
67
+
68
+ setVersion(versionObject, configFilePath) {
69
+ this.config.general.missionVersion = this.displayVersion(versionObject);
70
+ let data = JSON.stringify(this.config, null, 4);
71
+ fs.writeFileSync(configFilePath, data);
72
+ }
73
+
74
+ displayVersion(versionObject) {
75
+ return [versionObject.major, versionObject.minor, versionObject.releaseSuffix ? versionObject.patch + '-' + versionObject.releaseSuffix : versionObject.patch].join('.')
76
+ }
77
+
78
+ getVersionObject(strVersion) {
79
+ const [major, minor, interimPatch] = strVersion.split('.', 3);
80
+ const [patch, releaseSuffix] = interimPatch.split('-', 2);
81
+ return {
82
+ major: parseInt(major),
83
+ minor: parseInt(minor),
84
+ patch: parseInt(patch),
85
+ releaseSuffix: releaseSuffix ? releaseSuffix : null
86
+ };
87
+ }
88
+
89
+ nextMajor(versionObject) {
90
+ const newVersionObject = versionObject;
91
+ newVersionObject.major = newVersionObject.major + 1;
92
+ return newVersionObject;
93
+ }
94
+
95
+ nextMinor(versionObject) {
96
+ const newVersionObject = versionObject;
97
+ newVersionObject.minor = newVersionObject.minor + 1;
98
+ return newVersionObject;
99
+ }
100
+
101
+ nextPatch(versionObject) {
102
+ const newVersionObject = versionObject;
103
+ newVersionObject.patch = newVersionObject.patch + 1;
104
+ return newVersionObject;
105
+ }
106
+
107
+ async mizOpen(mizPath) {
108
+ var MizFile = new jszip();
109
+ const mizData = fs.readFileSync(mizPath);
110
+ return MizFile.loadAsync(mizData);
111
+ }
112
+
113
+ async mizUpdate(mizPath, copyPath, strTheatreSettings) {
114
+ const zip = await this.mizOpen(mizPath);
115
+ this.mizUpdateSrcLuaFiles(zip);
116
+ this.mizUpdateLibLuaFiles(zip);
117
+ if (strTheatreSettings === null) {
118
+ // TODO: Inject fake data
119
+ console.log("NO THEATRE SPECIFIED. RADIO PRESETS WILL NOT BE AVAILABLE !");
120
+ } else {
121
+ await this.mizUpdateRadioPresets(zip, 'resources/radios/' + strTheatreSettings);
122
+ }
123
+ this.mizUpdateSettingsLuaFiles(zip, strTheatreSettings);
124
+ await this.mizUpdateSoundFolders(zip);
125
+ const inputZip = await zip.generateAsync({
126
+ type: 'nodebuffer',
127
+ streamFiles: true,
128
+ compression: "DEFLATE",
129
+ compressionOptions: {
130
+ level: 9
131
+ }
132
+ });
133
+ fs.writeFileSync(copyPath ? copyPath : mizPath, inputZip);
134
+ }
135
+
136
+ async mizInjectMissionDataFile(mizPath, missionObject) {
137
+ const zip = await this.mizOpen(mizPath);
138
+ this.mizUpdateMissionDataFile(zip, missionObject);
139
+ const inputZip = await zip.generateAsync({
140
+ type: 'nodebuffer',
141
+ streamFiles: true,
142
+ compression: "DEFLATE",
143
+ compressionOptions: {
144
+ level: 9
145
+ }
146
+ });
147
+ fs.writeFileSync(mizPath, inputZip);
148
+ }
149
+
150
+ async mizInjectSettingsFolder(mizPath, settingsFolder) {
151
+ const zip = await this.mizOpen(mizPath);
152
+ for (let file of fs.readdirSync(settingsFolder).filter(file => file.endsWith(".lua"))) {
153
+ this.mizUpdateLuaFile(zip, [
154
+ settingsFolder,
155
+ "/",
156
+ file].join(""));
157
+ }
158
+ const inputZip = await zip.generateAsync({
159
+ type: 'nodebuffer',
160
+ streamFiles: true,
161
+ compression: "DEFLATE",
162
+ compressionOptions: {
163
+ level: 9
164
+ }
165
+ });
166
+ fs.writeFileSync(mizPath, inputZip);
167
+ }
168
+
169
+ async mizInjectMapResourceFile(mizPath, mapResourceObject) {
170
+ const zip = await this.mizOpen(mizPath);
171
+ this.mizUpdateMapResourceFile(zip, mapResourceObject);
172
+ const inputZip = await zip.generateAsync({
173
+ type: 'nodebuffer',
174
+ streamFiles: true,
175
+ compression: "DEFLATE",
176
+ compressionOptions: {
177
+ level: 9
178
+ }
179
+ });
180
+ fs.writeFileSync(mizPath, inputZip);
181
+ }
182
+
183
+ mizUpdateLuaFile(zip, filePath) {
184
+ zip.remove("l10n/DEFAULT/" + path.basename(filePath));
185
+ var stream = fs.createReadStream(filePath);
186
+ zip.file("l10n/DEFAULT/" + path.basename(filePath), stream);
187
+ }
188
+
189
+ mizUpdateSrcLuaFiles(zip) {
190
+ for (let file of fs.readdirSync('src').filter(file => file.endsWith(".lua"))) {
191
+ console.log('updating src/' + file + ' file in miz file');
192
+ this.mizUpdateLuaFile(zip, "src/" + file);
193
+ };
194
+ }
195
+
196
+ mizUpdateMissionDataFile(zip, missionObject) {
197
+ zip.remove("mission");
198
+ let missionLuaT = format(missionObject, { singleQuote: false })
199
+ missionLuaT = missionLuaT
200
+ .split('\n')
201
+ .slice(1, -1)
202
+ .join('\n')
203
+ .slice(0, -1)
204
+ .replace(/\[\"(\d+)\"\] = /g, "[$1] = ");
205
+ zip.file("mission", missionLuaT);
206
+ }
207
+
208
+ mizUpdateMapResourceFile(zip, mapResourceObject) {
209
+ zip.remove("l10n/DEFAULT/mapResource");
210
+ let mapResourceLuaT = format(mapResourceObject, { singleQuote: false })
211
+ mapResourceLuaT = mapResourceLuaT
212
+ .split('\n')
213
+ .slice(1, -1)
214
+ .join('\n')
215
+ .slice(0, -1)
216
+ .replace(/\[\"(\d+)\"\] = /g, "[$1] = ");
217
+ zip.file("l10n/DEFAULT/mapResource", mapResourceLuaT);
218
+ }
219
+
220
+ mizOpenMissionData(zipStream) {
221
+ return zipStream.file("mission").async("string");
222
+ }
223
+
224
+ mizOpenMapResource(zipStream) {
225
+ return zipStream.file("l10n/DEFAULT/mapResource").async("string");
226
+ }
227
+
228
+ mizUpdateLibLuaFiles(zip) {
229
+ for (let file of fs.readdirSync('lib').filter(file => file.endsWith(".lua"))) {
230
+ console.log('updating lib/' + file + ' file in miz file');
231
+ this.mizUpdateLuaFile(zip, "lib/" + file);
232
+ };
233
+ }
234
+
235
+ async mizUpdateRadioPresets(zip, preset_folder) {
236
+ const mission_object = await this.getMissionObjectFromZip(zip);
237
+ for (let file of fs.readdirSync(preset_folder).filter(file => file.endsWith(".lua"))) {
238
+ const file_data = fs.readFileSync(preset_folder + '/' + file).toString();
239
+ const lua_string = file_data.substring(0, file_data.indexOf("radio_descriptor_table =") - 1);
240
+ const radio_descriptor_table = parse("return {" + lua_string + "}").descriptor;
241
+
242
+ console.log('updating radio presets (aircraft: ' + radio_descriptor_table["aircraft"] + ', group_name: ' + radio_descriptor_table["group_name"] + ') with preset in ' + preset_folder + ' folder');
243
+ const dcs_radio_presets = file_data.substring(file_data.indexOf("radio_descriptor_table =") + 24);
244
+
245
+ for (const coalition_key in mission_object.coalition) {
246
+ const coalition = mission_object.coalition[coalition_key];
247
+ for (const country_list_key in coalition) {
248
+ if (country_list_key != "country") continue;
249
+ const country_list = coalition[country_list_key];
250
+ for (const country_key in country_list) {
251
+ const country = country_list[country_key];
252
+ for (const plane_key in country["plane"]) {
253
+ const plane = country["plane"][plane_key];
254
+ for (const group_key in plane) {
255
+ const group = plane[group_key];
256
+ if (group["name"].match(radio_descriptor_table["group_name"]) == null) continue;
257
+ for (const unit_key in group) {
258
+ if (unit_key != "units") continue;
259
+ const unit = group[unit_key];
260
+ for (const sub_unit_key in unit) {
261
+ const sub_unit = unit[sub_unit_key];
262
+ if (sub_unit["skill"] != "Client") continue;
263
+ if (sub_unit["type"] != radio_descriptor_table["aircraft"]) continue;
264
+ // GROUP FOUND, SET RADIOS
265
+ sub_unit["Radio"] = parse("return " + dcs_radio_presets)
266
+ }
267
+ }
268
+ }
269
+ }
270
+ }
271
+ }
272
+ }
273
+ };
274
+ this.mizUpdateMissionDataFile(zip, {mission: mission_object});
275
+ }
276
+
277
+ mizUpdateSettingsLuaFiles(zip, strTheatre) {
278
+ for (let file of fs.readdirSync('settings/' + strTheatre).filter(file => file.endsWith(".lua"))) {
279
+ console.log('updating settings/' + strTheatre + '/' + file + ' file in miz file');
280
+ this.mizUpdateLuaFile(zip, 'settings/' + strTheatre + '/' + file);
281
+ };
282
+ }
283
+
284
+ async mizUpdateSoundFolders(zip) {
285
+ const folderArray = fs.readdirSync('resources/sounds');
286
+ for (const folder of folderArray) {
287
+ // if(zip.folder(new RegExp(folder)).length > 0 ) {
288
+ await this.mizUpdateSingleSoundFolder(zip, folder);
289
+ // }
290
+ }
291
+ }
292
+
293
+ async mizUpdateSingleSoundFolder(zip, folder) {
294
+ console.log('adding sound files from resources/sounds/' + folder + ' folder...');
295
+ zip = zip.remove(folder).folder(folder);
296
+ await this.addFilesToZip(zip, 'resources/sounds/' + folder, fs.readdirSync('resources/sounds/' + folder));
297
+ }
298
+
299
+ async addFilesToZip(zip, directoryPath, filesToInclude) {
300
+ const promiseArr = await filesToInclude.map(async file => {
301
+ const filePath = path.join(directoryPath, file)
302
+ try {
303
+ const fileStats = await lstat(filePath)
304
+ const isDirectory = fileStats.isDirectory()
305
+ if (isDirectory) {
306
+ const directory = zip.remove(file).folder(file)
307
+ const subFiles = fs.readdirSync(filePath)
308
+ return this.addFilesToZip(directory, filePath, subFiles)
309
+ } else {
310
+ // console.log('added file : '+file);
311
+ return zip.file(file, fs.createReadStream(filePath))
312
+ }
313
+ } catch (err) {
314
+ console.log(err)
315
+ return Promise.resolve()
316
+ }
317
+ })
318
+ return Promise.all(promiseArr)
319
+ }
320
+
321
+ async copyMiz(srcMizPath, dstMizPath) {
322
+ await fs.createReadStream(srcMizPath).pipe(fs.createWriteStream(dstMizPath));
323
+ }
324
+
325
+ async getMissionObjectFromMiz(MizPath) {
326
+ let luaTable = 'return { \n' + await this.mizOpenMissionData(await this.mizOpen(MizPath)) + ' }';
327
+ return parse(luaTable).mission;
328
+ }
329
+
330
+ async getMissionObjectFromZip(zip) {
331
+ let luaTable = 'return { \n' + await this.mizOpenMissionData(zip) + ' }';
332
+ return parse(luaTable).mission;
333
+ }
334
+
335
+ async getMapResourceObjectFromMiz(MizPath) {
336
+ let luaTable = 'return { \n' + await this.mizOpenMapResource(await this.mizOpen(MizPath)) + ' }';
337
+ return parse(luaTable).mapResource;
338
+ }
339
+
340
+ getDestinationMizFilePaths() {
341
+ const returnArray = this.config.missionTemplates.map(missionTemplate => {
342
+ return this.config.general.missionFolder + '/'
343
+ + this.config.general.missionPrefix + '_'
344
+ + missionTemplate.theatre + '_'
345
+ + this.config.general.missionSuffix
346
+ + '_' + this.config.general.missionVersion + '.miz'
347
+ });
348
+ return returnArray;
349
+ }
350
+
351
+ getGeneratedMizFilePaths() {
352
+ return fs.readdirSync(this.config.general.missionFolder + '/')
353
+ .filter(file => file.endsWith((".miz")))
354
+ .map(mizFile => {
355
+ return this.config.general.missionFolder + '/' + mizFile;
356
+ });
357
+ }
358
+
359
+ uploadMizFiles(credentials) {
360
+ const jtffFtpServer = new ftpClient();
361
+
362
+ jtffFtpServer.connect({
363
+ host: credentials.host,
364
+ secure: false,
365
+ user: credentials.user,
366
+ password: credentials.password
367
+ });
368
+ jtffFtpServer.on('ready', function () {
369
+ jtffFtpServer.cwd(credentials.folder, function (err, curDir) {
370
+ if (err) throw err;
371
+ Promise.all(
372
+ fs.readdirSync(this.config.general.missionFolder)
373
+ .filter(file => file.endsWith('.pub.json'))
374
+ .map(file => {
375
+ return new Promise((resolve, reject) => {
376
+ // console.log(this.config.general.missionFolder+'/'+file);
377
+ fs.readFile(this.config.general.missionFolder + '/' + file, function (err, data) {
378
+ if (err) reject(err);
379
+ data = JSON.parse(data.toString());
380
+ // console.log(data);
381
+ jtffFtpServer.put(data.mizFiles, path.basename(data.mizFiles), false, function (err) {
382
+ if (err) reject(err);
383
+ console.log('file ' + path.basename(data.mizFiles) + ' uploaded on DCS Server');
384
+ resolve(path.basename(data.mizFiles));
385
+ });
386
+ });
387
+ })
388
+ })
389
+ ).then(() => {
390
+ jtffFtpServer.end();
391
+ });
392
+ });
393
+ });
394
+ }
395
+
396
+ publishMizFiles(credentials) {
397
+ const jwtClient = new google.auth.JWT(
398
+ credentials.client_email,
399
+ null,
400
+ credentials.private_key,
401
+ this.config.google.scopes
402
+ );
403
+ const configObject = this.config;
404
+ jwtClient.authorize(function (err, tokens) {
405
+ if (err) {
406
+ console.log(err);
407
+ throw err;
408
+ } else {
409
+ console.log("Successfully connected!");
410
+ const drive = google.drive({ version: 'v3', jwtClient });
411
+ fs.readdirSync(configObject.general.missionFolder)
412
+ .filter(file => file.endsWith('.pub.json'))
413
+ .map(file => {
414
+ // console.log(this.config.general.missionFolder+'/'+file);
415
+ fs.readFile(configObject.general.missionFolder + '/' + file, function (err, data) {
416
+ if (err) throw err;
417
+ data = JSON.parse(data.toString());
418
+ // console.log(data);
419
+ drive.files.list({
420
+ q: `'${data.gdriveFolder}' in parents and trashed = false and name = '${path.basename(data.mizFiles)}'`,
421
+ auth: jwtClient
422
+ }).then(rsp => {
423
+ // console.log(rsp.data.files);
424
+ // console.log(path.basename(data.mizFiles));
425
+ const fileMetadata = {
426
+ 'name': path.basename(data.mizFiles),
427
+ parents: [data.gdriveFolder]
428
+ };
429
+ const media = {
430
+ mimeType: 'application/zip',
431
+ body: fs.createReadStream(data.mizFiles)
432
+ };
433
+ if (rsp.data.files.length > 0) {
434
+ drive.files.update({
435
+ fileId: rsp.data.files[0].id,
436
+ auth: jwtClient,
437
+ media: media
438
+ }, (err, file) => {
439
+ if (err) {
440
+ // Handle error
441
+ console.error(err);
442
+ } else {
443
+ console.log('File updated Id: ', file.id);
444
+ }
445
+ });
446
+ } else {
447
+ drive.files.create({
448
+ resource: fileMetadata,
449
+ media: media,
450
+ auth: jwtClient,
451
+ fields: 'id'
452
+ }, (err, file) => {
453
+ if (err) {
454
+ // Handle error
455
+ console.error(err);
456
+ } else {
457
+ console.log('File created Id: ', file.id);
458
+ }
459
+ });
460
+ }
461
+ });
462
+ });
463
+ });
464
+ }
465
+ });
466
+ }
467
+
468
+ }
469
+
470
+ module.exports = MizTemplateCI;
package/package.json ADDED
@@ -0,0 +1,39 @@
1
+ {
2
+ "name": "@jtff/miztemplate-lib",
3
+ "version": "2.0.1",
4
+ "description": "JTFF mission template library",
5
+ "main": "index.js",
6
+ "files": [
7
+ "index.js",
8
+ "scripts",
9
+ "lib"
10
+ ],
11
+ "scripts": {
12
+ "test": "echo \"Error: no test specified\" && exit 1"
13
+ },
14
+ "repository": {
15
+ "type": "git",
16
+ "url": "git+https://github.com/JTFF-mission-scripts/miztemplate-lib.git"
17
+ },
18
+ "keywords": [
19
+ "DCS",
20
+ "World",
21
+ "JTFF"
22
+ ],
23
+ "author": "Sebastien LONGO",
24
+ "license": "GPL-3.0-or-later",
25
+ "bugs": {
26
+ "url": "https://github.com/JTFF-mission-scripts/miztemplate-lib/issues"
27
+ },
28
+ "homepage": "https://github.com/JTFF-mission-scripts/miztemplate-lib#readme",
29
+ "dependencies": {
30
+ "fs": "^0.0.1-security",
31
+ "ftp": "^0.3.10",
32
+ "googleapis": "^92.0.0",
33
+ "jszip": "^3.7.1",
34
+ "lua-json": "^1.0.0",
35
+ "path": "^0.12.7",
36
+ "prompt": "^1.3.0",
37
+ "util": "^0.12.4"
38
+ }
39
+ }
@@ -0,0 +1,40 @@
1
+ const fs = require("fs");
2
+
3
+ function build(jtffci) {
4
+ fs.mkdirSync(jtffci.config.general.missionFolder, { recursive: true });
5
+ jtffci.config.missionTemplates.forEach(async missionTemplate => {
6
+ await jtffci.mizUpdate([
7
+ missionTemplate.prefix,
8
+ '_',
9
+ missionTemplate.theatre,
10
+ ".miz"
11
+ ].join(""), [
12
+ jtffci.config.general.missionFolder + '/' + jtffci.config.general.missionPrefix,
13
+ '_',
14
+ missionTemplate.theatre,
15
+ '_',
16
+ jtffci.config.general.missionSuffix,
17
+ '_',
18
+ jtffci.displayVersion(jtffci.getVersion()),
19
+ ".miz"
20
+ ].join(""), missionTemplate.theatre);
21
+ let publicationConfig = {
22
+ theatre: missionTemplate.theatre,
23
+ mizFiles: [
24
+ jtffci.config.general.missionFolder + '/' + jtffci.config.general.missionPrefix,
25
+ '_',
26
+ missionTemplate.theatre,
27
+ '_',
28
+ jtffci.config.general.missionSuffix,
29
+ '_',
30
+ jtffci.displayVersion(jtffci.getVersion()),
31
+ ".miz"
32
+ ].join(""),
33
+ gdriveFolder: missionTemplate.destFolderId
34
+ };
35
+ fs.writeFileSync(jtffci.config.general.missionFolder + '/' + missionTemplate.theatre + '.pub.json', JSON.stringify(publicationConfig, null, 4));
36
+ });
37
+
38
+ }
39
+
40
+ module.exports = build
@@ -0,0 +1,7 @@
1
+ const fs = require("fs");
2
+
3
+ function clean(config) {
4
+ fs.rmSync(config.general.missionFolder, { force: true, recursive: true })
5
+ }
6
+
7
+ module.exports = clean
@@ -0,0 +1,13 @@
1
+ function ftpupload(jtffci) {
2
+ let intRC = 0;
3
+ if (process.env.JTFF_FTP_SECRET_JSON) {
4
+ const jtffcreds = JSON.parse(process.env.JTFF_FTP_SECRET_JSON);
5
+ jtffci.uploadMizFiles(jtffcreds);
6
+ } else {
7
+ console.error('no FTP credentials provided in JTFF_FTP_SECRET_JSON variable');
8
+ intRC=1;
9
+ }
10
+ return intRC;
11
+ }
12
+
13
+ module.exports = ftpupload
@@ -0,0 +1,13 @@
1
+ function gdriveupload(jtffci) {
2
+ let intRC = 0;
3
+ if (process.env.GDRIVE_TOKEN_CACHE_JSON) {
4
+ const gcreds = JSON.parse(process.env.GDRIVE_TOKEN_CACHE_JSON);
5
+ jtffci.publishMizFiles(gcreds);
6
+ } else {
7
+ console.error('no google drive credentials provided in GDRIVE_TOKEN_CACHE_JSON variable');
8
+ intRC = 1;
9
+ }
10
+ return intRC;
11
+ }
12
+
13
+ module.exports = gdriveupload
@@ -0,0 +1,5 @@
1
+ function getMizFile(jtffci) {
2
+ console.log(JSON.stringify(jtffci.getGeneratedMizFilePaths()));
3
+ }
4
+
5
+ module.exports = getMizFile;
@@ -0,0 +1,14 @@
1
+ function getVersion(jtffci) {
2
+ console.log('getting version...');
3
+ console.log((jtffci.getVersion()));
4
+ }
5
+
6
+ function setVersion(jtffci, strVersion, configFilePath) {
7
+ console.log('setting version to : ' + strVersion);
8
+ jtffci.setVersionfromString(strVersion, configFilePath);
9
+ }
10
+
11
+ module.exports = {
12
+ getVersion:getVersion,
13
+ setVersion:setVersion
14
+ };