UNPKG

venmjs

Version:

This is a tool ๐Ÿ”ง that can be installed in your terminal at any time โ›๏ธ it was made for beginners and even for experts, for his utilities, and for a simple creation process ๐Ÿงจ. Every web developer knows how frustrating is to deal with the creation of a ne

121 lines (89 loc) โ€ข 4.91 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = void 0; var _execa = _interopRequireDefault(require("execa")); var _fs = _interopRequireDefault(require("fs")); var _path = _interopRequireDefault(require("path")); var _nodeBanner = _interopRequireDefault(require("node-banner")); var _helpers = require("../../utils/helpers"); var _validate = require("../../utils/validate"); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; } /** * @param {String} configFile - File whose content is to be read * @returns {String[]} * Make data directory for mongo container to mount in order to persist the database. * @returns {void} * Launch multiple containers with docker-compose (client, server and mongo client) * @returns {Promise<void>} */ var getFileContent = function getFileContent(configFile) { // Holds reference to the path where docker-config files reside var dockerConfigTemplatePath = _path["default"].join(__dirname, '..', '..', 'templates', 'docker', configFile); return (0, _helpers.readFileContent)(dockerConfigTemplatePath); }; var _default = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() { var dockerComposeTemplate, dockerFileTemplate, clientDockerFilePath, serverDockerFilePath, serverDockerIgnorePath, clientDockerIgnorePath, dockerIgnoreContent; return regeneratorRuntime.wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: _context.next = 2; return (0, _nodeBanner["default"])('VENM', 'Docker process is starting ๐Ÿณ', 'blue', 'white'); case 2: _context.next = 4; return (0, _validate.validateInstallation)('docker'); case 4: dockerComposeTemplate = getFileContent('docker-compose.yml'); dockerFileTemplate = getFileContent('Dockerfile'); clientDockerFilePath = _path["default"].join('client', 'Dockerfile'); if (!_fs["default"].existsSync(clientDockerFilePath)) { // docker-compose.yml dockerComposeTemplate[4] = "".concat(' '.repeat(4), "command: bash -c \"npm install && npm i mongoose && npm run dev\""); dockerComposeTemplate[9] = "".concat(' '.repeat(6), "- \"8080:8080\""); _fs["default"].writeFileSync(clientDockerFilePath, dockerFileTemplate.join('\n')); } if (!_fs["default"].existsSync('server')) { _context.next = 24; break; } // Create Dockerfile for server directory serverDockerFilePath = _path["default"].join('server', 'Dockerfile'); if (!_fs["default"].existsSync(serverDockerFilePath)) { _fs["default"].writeFileSync(serverDockerFilePath, dockerFileTemplate.join('\n')); } // Create .dockerignore within server directory serverDockerIgnorePath = _path["default"].join('server', '.dockerignore'); clientDockerIgnorePath = _path["default"].join('client', '.dockerignore'); if (!_fs["default"].existsSync(serverDockerIgnorePath)) { _fs["default"].writeFileSync(serverDockerIgnorePath, 'node_modules'); } if (!_fs["default"].existsSync(clientDockerIgnorePath)) { dockerIgnoreContent = 'node_modules\ndist'; _fs["default"].writeFileSync(clientDockerIgnorePath, "".concat(dockerIgnoreContent)); } // Create docker-compose.yml at project root if (!_fs["default"].existsSync('docker-compose.yml')) { _fs["default"].writeFileSync('docker-compose.yml', dockerComposeTemplate.join('\n')); } _context.prev = 16; _context.next = 19; return _execa["default"].command('docker-compose up', { stdio: 'inherit' }); case 19: _context.next = 24; break; case 21: _context.prev = 21; _context.t0 = _context["catch"](16); process.exit(1); case 24: case "end": return _context.stop(); } } }, _callee, null, [[16, 21]]); })); exports["default"] = _default;