UNPKG

deep-package-manager

Version:
110 lines (87 loc) 2.06 kB
/** * Created by mgoria on 7/15/15. */ 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.Config = undefined; var _jsonfile = require('jsonfile'); var _jsonfile2 = _interopRequireDefault(_jsonfile); var _joi = require('joi'); var _joi2 = _interopRequireDefault(_joi); var _config = require('./config.schema'); var _config2 = _interopRequireDefault(_config); var _InvalidConfigException = require('./Exception/InvalidConfigException'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } /** * Application configuration loader */ class Config { /** * @param {Object} rawConfig */ constructor(rawConfig = {}) { this._rawConfig = rawConfig; this._parsedObject = _joi2.default.validate(this._rawConfig, _config2.default.validation()); } /** * @returns {Object} */ get rawConfig() { return this._rawConfig; } /** * Validates raw object * * @returns {Boolean} */ get valid() { return !this.error; } /** * Retrieve parse error if available * * @returns {String} */ get error() { return this._parsedObject.error; } /** * Extracts parsed configuration * * @returns {Object} */ extract() { if (!this.valid) { throw new _InvalidConfigException.InvalidConfigException(this.error); } let config = this._parsedObject.value; // set aws region as default region into property config config.awsRegion = config.aws.region; return config; } /** * @returns {String} */ static get DEFAULT_FILENAME() { return 'deeploy.json'; } /** * @returns {Object} */ static generate() { return _joi2.default.validate({}, _config2.default.generation()).value; } /** * Read app configuration from json file * * @param {String} file * @returns {Config} */ static createFromJsonFile(file) { let rawConfig = _jsonfile2.default.readFileSync(file); return new Config(rawConfig); } } exports.Config = Config;