roarcli
Version:
Overview:
171 lines (140 loc) • 6.74 kB
JavaScript
;
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