abstract-migrate
Version:
Storage-agnostic migration runner
138 lines (112 loc) • 3.76 kB
JavaScript
;
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;