UNPKG

abstract-migrate

Version:
138 lines (112 loc) 3.76 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _toConsumableArray2 = require('babel-runtime/helpers/toConsumableArray'); var _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2); var _keys = require('babel-runtime/core-js/object/keys'); var _keys2 = _interopRequireDefault(_keys); var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck'); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); var _createClass2 = require('babel-runtime/helpers/createClass'); var _createClass3 = _interopRequireDefault(_createClass2); exports.loadConfig = loadConfig; var _path = require('path'); var _path2 = _interopRequireDefault(_path); var _chalk = require('chalk'); var _chalk2 = _interopRequireDefault(_chalk); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var Config = function () { function Config() { (0, _classCallCheck3.default)(this, Config); this.config = { debug: false, migrationPath: _path2.default.resolve('migrations'), require: [] }; } (0, _createClass3.default)(Config, [{ key: 'init', value: function init(overrides) { var _this = this; (0, _keys2.default)(overrides).forEach(function (name) { _this[name] = overrides[name]; }); } }]); return Config; }(); var configStorage = new Proxy(new Config(), { get: function get(target, name) { switch (name) { case 'noColor': return !_chalk2.default.enabled; default: { if (name !== 'init') { return target.config[name]; } return target.init; } } }, set: function set(target, name, value) { /* eslint-disable no-param-reassign */ switch (name) { case 'require': if (!Array.isArray(value)) { value = [value]; } value.forEach(function (module) { if (module.indexOf('./') === 0) { require(_path2.default.join(process.cwd(), module)); } else { require(module); } }); target.config.require = [].concat((0, _toConsumableArray3.default)(target.config.require), (0, _toConsumableArray3.default)(value)); return true; case 'noColor': _chalk2.default.enabled = !value; return true; case 'config': target.config = value; return true; case 'migrationPath': target.config.migrationPath = _path2.default.resolve(value); return true; default: { if (name !== 'init') { target.config[name] = value; return true; } return false; } } /* eslint-enable no-param-reassign */ } }); function loadConfig() { var configPath = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '.abstract-migrate.json'; var config = {}; try { config = require(_path2.default.join(process.cwd(), configPath)); } catch (err) { if (err.message.match(/^Cannot find module/)) { // Only throw this message if they provided a config file if (configPath !== '.abstract-migrate.json') { console.error([_chalk2.default.red.bold('Error:'), 'No config file located at', _chalk2.default.yellow(_path2.default.join(process.cwd(), configPath))].join(' ')); process.exit(1); return; } } else { console.error([_chalk2.default.red.bold('Error:'), 'Could not parse config file at', _chalk2.default.yellow(_path2.default.join(process.cwd(), configPath))].join(' ')); process.exit(1); return; } config = {}; } configStorage.init(config); } exports.default = configStorage;