UNPKG

abstract-migrate

Version:
104 lines (84 loc) 2.88 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _toConsumableArray2 = require('babel-runtime/helpers/toConsumableArray'); var _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2); var _regenerator = require('babel-runtime/regenerator'); var _regenerator2 = _interopRequireDefault(_regenerator); var _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator'); var _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2); var _stringify = require('babel-runtime/core-js/json/stringify'); var _stringify2 = _interopRequireDefault(_stringify); var _path = require('path'); var _path2 = _interopRequireDefault(_path); var _fs = require('fs'); var _fs2 = _interopRequireDefault(_fs); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var migrationStorage = _path2.default.join(process.cwd(), 'migrations.json'); var lockPath = _path2.default.join(process.cwd(), 'amig.lock'); function getMigrations() { try { var migrations = require(migrationStorage); if (Array.isArray(migrations)) { return migrations; } } catch (err) { // Do nothing } return []; } function writeObject(obj, cb) { _fs2.default.writeFile(migrationStorage, (0, _stringify2.default)(obj, null, ' '), cb); } exports.default = { load: function load() { var _this = this; return (0, _asyncToGenerator3.default)(_regenerator2.default.mark(function _callee() { return _regenerator2.default.wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: return _context.abrupt('return', getMigrations()); case 1: case 'end': return _context.stop(); } } }, _callee, _this); }))(); }, add: function add(migrations, cb) { var allMigrations = [].concat((0, _toConsumableArray3.default)(migrations), (0, _toConsumableArray3.default)(getMigrations())); writeObject(allMigrations, cb); }, remove: function remove(migrations, cb) { var removedMigrations = migrations.map(function (_ref) { var name = _ref.name; return name; }); var allMigrations = getMigrations().filter(function (_ref2) { var name = _ref2.name; return removedMigrations.indexOf(name) === -1; }); writeObject(allMigrations, cb); }, acquireLock: function acquireLock(cb) { _fs2.default.open(lockPath, 'wx', function (err, fd) { if (err) { if (err.code === 'EEXIST') { cb(null, false); } else { cb(err); } } else { _fs2.default.close(fd, function (closeErr) { cb(closeErr, true); }); } }); }, releaseLock: function releaseLock(cb) { _fs2.default.unlink(lockPath, cb); } };