abstract-migrate
Version:
Storage-agnostic migration runner
92 lines (67 loc) • 2.39 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _regenerator = require('babel-runtime/regenerator');
var _regenerator2 = _interopRequireDefault(_regenerator);
var _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator');
var _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);
exports.default = actionWrapper;
var _chalk = require('chalk');
var _chalk2 = _interopRequireDefault(_chalk);
var _config = require('./config');
var _config2 = _interopRequireDefault(_config);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/* eslint-disable no-param-reassign */
function formatRuntime(duration) {
if (duration > 1500) {
duration /= 1000;
duration = duration.toFixed(2);
duration += 's';
} else {
duration += 'ms';
}
return duration;
}
/* eslint-enable no-param-reassign */
function actionWrapper(action) {
var startTime = Date.now();
return function () {
var _ref = (0, _asyncToGenerator3.default)(_regenerator2.default.mark(function _callee() {
var executionTime,
_args = arguments;
return _regenerator2.default.wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
_context.prev = 0;
_context.next = 3;
return action.apply(undefined, _args);
case 3:
_context.next = 10;
break;
case 5:
_context.prev = 5;
_context.t0 = _context['catch'](0);
console.error(_chalk2.default.red.bold('Error:') + ' ' + _context.t0.message);
if (_config2.default.debug) {
console.error(_context.t0.stack);
}
return _context.abrupt('return', process.exit(1));
case 10:
executionTime = formatRuntime(Date.now() - startTime);
console.log(_chalk2.default.green('Success') + (' (' + executionTime + ')'));
return _context.abrupt('return', process.exit(0));
case 13:
case 'end':
return _context.stop();
}
}
}, _callee, this, [[0, 5]]);
}));
function wrapAction() {
return _ref.apply(this, arguments);
}
return wrapAction;
}();
}