UNPKG

roarcli

Version:
171 lines (140 loc) 6.74 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = function (pathName) { // Verify files var paths = [pathName + '/roar-config.json', pathName + '/template-config.json']; paths.forEach(function (path) { if (!_fs2.default.existsSync(path)) { console.error('Missing the file: ' + path.substring(path.lastIndexOf('/') + 1)); process.exit(1); } }); var config = require(pathName + '/roar-config.json'); if (!config.name || config.name.length === 0) { console.error('A name must be supplied in the roar-config.json file'); process.exit(1); } else if (config.name.match(/^[a-zA-Z0-9\-\_\.]+$/) === null) { console.error('The name specified in roar-config.json can only contain alphanumeric characters, dashes and underscores'); process.exit(1); } if (!config.alias || config.alias.length === 0) { console.error('An alias must be supplied in the roar-config.json file'); process.exit(1); } if (!config.version || config.version.length === 0) { console.error('A version must be supplied in the roar-config.json file'); process.exit(1); } else if (!config.version.match(/^\d+\.\d+\.\d+$/)) { console.error('The version specified in roar-config.json must be in the form [MAJOR_VERSION].[MINOR_VERSION].[PATCH_VERSION]'); process.exit(1); } if (!config.author || config.author.length === 0) { console.error('An inspector cannot be published without an author being supplied in the roar-config.json file'); process.exit(1); } if (!config.category || config.category.length === 0) { console.error('A valid category must be supplied in the roar-config.json file'); process.exit(1); } else if (_categories2.default.map(function (c) { return c.toLowerCase(); }).indexOf(config.category.toLowerCase()) === -1) { console.error('Invalid category was specified in roar-config.json. Please choose a valid category: ' + _categories2.default.join(' ,')); process.exit(1); } if (!config.defaultFreq) { console.error('No defaultFreq section found in roar-config.json file'); process.exit(1); } if (!config.defaultFreq.type || config.defaultFreq.type.length === 0) { console.error('A valid frequency type must be supplied in the roar-config.json file'); process.exit(1); } else if (_frequencyTypes2.default.map(function (t) { return t.toLowerCase(); }).indexOf(config.defaultFreq.type.toLowerCase()) === -1) { console.error('Invalid frequency type was specified in roar-config.json. Please choose a valid frequency typee: ' + _frequencyTypes2.default.join(' ,')); process.exit(1); } if (!config.defaultFreq.interval || config.defaultFreq.interval.length === 0) { console.error('A valid frequency interval must be supplied in the roar-config.json file'); process.exit(1); } else if (!config.defaultFreq.interval.match(/\d+/)) { console.error('Invalid frequency interval was specified in roar-config.json. Must be an integer > 0.'); process.exit(1); } if (!config.container && !config.archive) { console.error('No container or achive section found in roar-config.json file'); process.exit(1); } if (config.container) { if (!config.container.name || config.container.name.length === 0) { console.error('A valid container name must be supplied in the roar-config.json file'); process.exit(1); } else if (config.container.name.match(/^[a-zA-Z0-9\-\_\.]+(\/[a-zA-Z0-9\-\_\.]+)?$/) === null) { console.error('The container name specified in roar-config.json can only contain alphanumeric characters, dashes, periods, and underscores. It can additionally be namespaced using a forward slash.'); process.exit(1); } if (!config.container.tag || config.container.tag.length === 0) { console.warn('WARNING: It is recommend you associate your container with a tag to identify the version of your inspector.'); } } if (config.archive) { if (!config.archive.url || config.archive.url.length === 0) { console.error('A valid archive url must be supplied in the roar-config.json file'); process.exit(1); } else if (config.archive.url.match(/^https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)$/) === null) { console.error('The archive url specified in roar-config.json is not a valid url.'); process.exit(1); } } if (!config.access || config.access.length === 0) { console.error('A valid access flag must be supplied in the roar-config.json file'); process.exit(1); } else if (['public', 'private'].indexOf(config.access) === -1) { console.error('Invalid access flag was specified in roar-config.json. Valid values are: ' + ['public', 'private'].join(', ')); process.exit(1); } if (config.constraints) { Object.keys(config.constraints).forEach(function (k) { if (['platform', 'zone'].indexOf(k) === -1) { console.error('Invalid `constraints` was specified in ' + file + '. The `constraints` contains an unrecognized field: ' + k); process.exit(1); } }); if (config.constraints.platform && !Array.isArray(config.constraints.platform)) { console.error('The platform in `constraints` must be an array.'); process.exit(1); } var validPlatforms = ['linux', 'mac', 'windows']; config.constraints.platform.forEach(function (platform) { if (validPlatforms.indexOf(platform) === -1) { console.error('Invalid platform in `constraints` was specified in ' + file + '. Valid platforms are: ' + validPlatforms.join(', ')); process.exit(1); } }); if (config.constraints.zone && !Array.isArray(config.constraints.zone)) { console.error('The zone in `constraints` must be an array.'); process.exit(1); } var validZones = ['public', 'private']; config.constraints.zone.forEach(function (zone) { if (validZones.indexOf(zone) === -1) { console.error('Invalid zone in `constraints` was specified in ' + file + '. Valid zones are: ' + validZones.join(', ')); process.exit(1); } }); } }; var _fs = require('fs'); var _fs2 = _interopRequireDefault(_fs); var _path = require('path'); var _path2 = _interopRequireDefault(_path); var _categories = require('./categories'); var _categories2 = _interopRequireDefault(_categories); var _frequencyTypes = require('./frequency-types'); var _frequencyTypes2 = _interopRequireDefault(_frequencyTypes); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } ; module.exports = exports['default']; //# sourceMappingURL=validate.js.map