ae-biu
Version:
Born For AE, Born To Do
90 lines (65 loc) • 2.6 kB
JavaScript
;
var _commander = require('commander');
var _commander2 = _interopRequireDefault(_commander);
var _fs = require('fs');
var _fs2 = _interopRequireDefault(_fs);
var _path = require('path');
var _path2 = _interopRequireDefault(_path);
var _isEqual = require('lodash/isEqual');
var _isEqual2 = _interopRequireDefault(_isEqual);
var _serverDestroy = require('server-destroy');
var _serverDestroy2 = _interopRequireDefault(_serverDestroy);
var _logger = require('./utils/logger');
var _logger2 = _interopRequireDefault(_logger);
var _paths = require('./utils/paths');
var _clearConsole = require('./utils/clear-console');
var _clearConsole2 = _interopRequireDefault(_clearConsole);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
_commander2.default.usage('[options]').option('-p, --port', 'Mock server port, default is 9000').option('-w, --watch', 'Watch db.json change, default is false').parse(process.argv);
console.log();
var port = +_commander2.default.args[0] || 9000;
var watch = _commander2.default.watch;
var createServer = require('./config/mock-server.config');
var dbPath = _path2.default.resolve(_paths.mockDir, 'db.json');
var app = void 0;
var db = void 0;
var start = function start() {
db = JSON.parse(_fs2.default.readFileSync(dbPath, { encoding: 'utf8' }));
app = createServer().listen(port, function () {
_logger2.default.info('Mock Server now running at http://0.0.0.0:' + port + '\n');
});
(0, _serverDestroy2.default)(app);
};
start();
if (watch) {
_logger2.default.info('Watching database...\n');
var readError = false;
_fs2.default.watch(_paths.mockDir, function (event, file) {
if (file) {
var watchedFile = _path2.default.resolve(_paths.mockDir, file);
if (watchedFile === dbPath) {
var obj = void 0;
try {
obj = JSON.parse(_fs2.default.readFileSync(watchedFile, { encoding: 'utf8' }));
if (readError) {
_logger2.default.info('Read error has been fixed :)\n');
readError = false;
}
} catch (e) {
readError = true;
_logger2.default.error('Error reading ' + watchedFile + '\n');
console.error(e.message);
return;
}
var isDatabaseDifferent = !(0, _isEqual2.default)(obj, db);
if (isDatabaseDifferent) {
(0, _clearConsole2.default)();
_logger2.default.info('database has changed, reloading...\n');
app && app.destroy();
start();
}
}
}
});
}