diff options
Diffstat (limited to 'scripts/validate_json.js')
| -rw-r--r-- | scripts/validate_json.js | 71 |
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 |
