summaryrefslogtreecommitdiffhomepage
path: root/scripts/validate_json.js
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/validate_json.js')
-rw-r--r--scripts/validate_json.js71
1 files changed, 71 insertions, 0 deletions
diff --git a/scripts/validate_json.js b/scripts/validate_json.js
new file mode 100644
index 0000000..51efc52
--- /dev/null
+++ b/scripts/validate_json.js
@@ -0,0 +1,71 @@
+ /*jshint esversion: 6 */
+ const path = require('path');
+ const fs = require('fs-extra')
+
+ const PUBLIC = `public`
+ const pathOfPublic = path.join(__dirname, PUBLIC);
+
+
+ // validating version 2
+ function validate() {
+
+ const version = '2'
+ const pathOfVersion = path.join(pathOfPublic, 'v' + version);
+ const pathOfApps = path.join(pathOfVersion, 'apps');
+
+ return fs.readdir(pathOfApps)
+ .then(function (items) {
+
+ const apps = items.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 + '');
+ const versionString = (version + '');
+ if (versionString !== captainVersion)
+ throw new Error(`unmatched versions ${versionString} ${captainVersion} for ${apps[i]}`)
+
+ apps[i] = apps[i].replace('.json', '');
+
+ 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 = '';
+
+ const logoFileName = apps[i] + '.png';
+
+ appDetails[i] = {
+ name: apps[i],
+ displayName: content.displayName,
+ description: content.description,
+ logoUrl: logoFileName
+ }
+
+ const logoFullPath = path.join(pathOfVersion, 'logos', logoFileName);
+
+ if (!fs.existsSync(logoFullPath) ||
+ !fs.statSync(logoFullPath).isFile()) {
+ let printablePath = logoFullPath;
+ printablePath = printablePath.substr(printablePath.indexOf(`/${PUBLIC}`))
+ throw new Error(`Cannot find logo for ${apps[i]} ${printablePath}`);
+ }
+
+ console.log(`Validated ${apps[i]}`)
+
+ }
+
+ })
+ }
+
+
+ Promise.resolve()
+ .then(function () {
+ return validate()
+ })
+ .catch(function (err) {
+ console.error(err)
+ process.exit(127)
+ }) \ No newline at end of file