UNPKG

ae-biu

Version:

Born For AE, Born To Do

90 lines (65 loc) 2.6 kB
#!/usr/bin/env node 'use strict'; 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(); } } } }); }