/*jshint esversion: 6 */ const path = require('path'); const fs = require('fs-extra'); const pathOfPublic = path.join(__dirname, '..', `public`); const pathOfDist = path.join(__dirname, '..', `dist`); // const pathOfDistV1 = path.join(pathOfDist, 'v1'); const pathOfDistV2 = path.join(pathOfDist, 'v2'); const pathOfDistV3 = path.join(pathOfDist, 'v3'); const pathOfSourceDirectory = path.join(pathOfPublic, 'v2'); const pathOfSourceDirectoryApps = path.join(pathOfSourceDirectory, 'apps'); const pathOfSourceDirectoryLogos = path.join(pathOfSourceDirectory, 'logos'); function createAppList(appsList, pathOfApps) { const apps = appsList.filter(v => v.includes('.json')); const appDetails = []; for (var i = 0; i < apps.length; i++) { const contentString = fs.readFileSync(path.join(pathOfApps, apps[i])); const content = JSON.parse(contentString); const captainVersion = (content.captainVersion + ''); apps[i] = apps[i].replace('.json', ''); if (captainVersion + '' === '2') { if (!content.displayName) { content.displayName = apps[i]; content.displayName = content.displayName.substr(0, 1).toUpperCase() + content.displayName.substring(1, content.displayName.length); } if (!content.description) content.description = ''; appDetails[i] = { name: apps[i], displayName: content.displayName, description: content.description, logoUrl: apps[i] + '.png' }; } else { throw new Error('Unknown captain-version: ' + captainVersion); } } return { appList: apps, appDetails: appDetails }; } function buildDist() { return fs.readdir(pathOfSourceDirectoryApps) .then(function (appsFileNames) { // [ app1.json app2.json .... ] appsFileNames.forEach(appFileName => { fs.copySync(path.join(pathOfSourceDirectoryApps, appFileName), path.join(pathOfDistV2, `apps`, appFileName)); fs.copySync(path.join(pathOfSourceDirectoryApps, appFileName), path.join(pathOfDistV3, `apps`, appFileName.split('.')[0])); }); fs.copySync(pathOfSourceDirectoryLogos, path.join(pathOfDistV2, `logos`)); fs.copySync(pathOfSourceDirectoryLogos, path.join(pathOfDistV3, `logos`)); const allAppsList = createAppList(appsFileNames, pathOfSourceDirectoryApps); const v3List = { oneClickApps: allAppsList.appDetails }; fs.outputJsonSync(path.join(pathOfDistV2, 'autoGeneratedList.json'), allAppsList); fs.outputJsonSync(path.join(pathOfDistV2, 'list'), v3List); // TODO delete oneClickApps: fs.outputJsonSync(path.join(pathOfDistV3, 'list'), v3List); }) .then(function () { return fs.copySync(path.join(pathOfPublic, 'CNAME'), path.join(pathOfDist, 'CNAME')); }); } Promise.resolve() .then(function () { return buildDist(); }) .catch(function (err) { console.error(err); process.exit(127); });