1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- const responseFormat = require('../util/responseFormat');
- let fileUtil = require('../util/fileUtil');
- let log = require('../util/log');
- const childProcess = require('child_process');
- let path = require('path');
- let startFilePath = path.resolve(__dirname, '../../bin/start.sh');
- module.exports = function () {
- return async function (ctx) {
- if (ctx.originalUrl === '/api/install') {
- ctx.body = responseFormat.responseFormat(200, 'restart application', true);
- let params = ctx.request.body;
- let existService = ['default', 'default_qiniu', 'github_default', 'github_qiniu'];
- let productType = 'default';
- let paramStr = '';
- // 环境变量配置
- params.config.forEach(item => {
- if (item.name === 'productType') {
- productType = item.value;
- }
- paramStr += `export ${item.name}='${item.value}'; #${item.description} \n`;
- });
- await fileUtil.createFile(startFilePath, `${paramStr}npm run restart;\n`);
- // 登录上传服务
- if (existService.indexOf(productType) === -1) {
- let loginRootPath = path.resolve(__dirname, `../service/login/${productType}`);
- let uploadRootPath = path.resolve(__dirname, `../service/upload/${productType}`);
- // 登录
- if (params.login.index && params.login.config) {
- await fileUtil.createDirector(loginRootPath);
- await fileUtil.createFile(path.resolve(loginRootPath, './index.js'), params.login.index);
- await fileUtil.createFile(path.resolve(loginRootPath, './config.js'), params.login.config);
- }
- // 上传
- if (params.upload.index && params.upload.config) {
- await fileUtil.createDirector(uploadRootPath);
- await fileUtil.createFile(path.resolve(uploadRootPath, './index.js'), params.upload.index);
- await fileUtil.createFile(path.resolve(uploadRootPath, './config.js'), params.upload.config);
- }
- }
- childProcess.exec(`sh ${startFilePath}`, (err) => {
- if (err) {
- log.error(`exec error: ${err}`);
- }
- })
- } else {
- ctx.body = responseFormat.responseFormat(0, 'config params to install application', {});
- }
- }
- };
|