UNPKG

meteor-azure

Version:

Automate Meteor deployments on Azure App Service

92 lines (71 loc) 2.96 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.validateSettings = validateSettings; exports.validateMeteor = validateMeteor; var _fs = require('fs'); var _fs2 = _interopRequireDefault(_fs); var _jsonfile = require('jsonfile'); var _jsonfile2 = _interopRequireDefault(_jsonfile); var _joi = require('joi'); var _joi2 = _interopRequireDefault(_joi); var _commandExists = require('command-exists'); var _commandExists2 = _interopRequireDefault(_commandExists); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } // Validation methods function validateSettings(path) { var settingsFile = void 0; // Ensure valid json exists try { settingsFile = _jsonfile2.default.readFileSync(path); } catch (error) { throw new Error(`Could not read settings file at '${path}'`); } var schema = _joi2.default.object({ 'meteor-azure': _joi2.default.object({ siteName: _joi2.default.string(), resourceGroup: _joi2.default.string(), tenantId: _joi2.default.string(), subscriptionId: _joi2.default.string(), deploymentCreds: _joi2.default.object({ username: _joi2.default.string(), password: _joi2.default.string() }), envVariables: _joi2.default.object({ ROOT_URL: _joi2.default.string(), MONGO_URL: _joi2.default.string() }).unknown(true), slotName: _joi2.default.string().optional(), servicePrincipal: _joi2.default.object({ appId: _joi2.default.string(), secret: _joi2.default.string() }).optional() }) }).unknown(true); // allow unknown keys (at the top level) for Meteor settings // Ensure settings data follows correct format _joi2.default.validate(settingsFile, schema, { presence: 'required' }, function (error) { if (error) { throw new Error(`Settings file: ${error.details[0].message}`); } }); return settingsFile; } function validateMeteor() { var release = void 0; // Ensure Meteor CLI is installed if (_commandExists2.default.sync('meteor') === false) { throw new Error('Meteor is not installed'); } // Determine current Meteor release based on release file try { release = _fs2.default.readFileSync('.meteor/release', 'utf8'); } catch (error) { /* Abort the program if a release file is not found, this is a strong indication we are not in the root project directory */ throw new Error('You must be in a Meteor project directory'); } // Determine major/minor version numbers by stripping non-numeric characters from release var versionNumbers = release.replace(/[^0-9]/g, ''); var majorVersion = Number.parseInt(versionNumbers.charAt(0), 10); var minorVersion = Number.parseInt(versionNumbers.charAt(1), 10); // Ensure current Meteor release is >= 1.4 if (majorVersion > 1) { return; } if (majorVersion === 1 && minorVersion >= 4) { return; } throw new Error('Meteor version must be >= 1.4'); }