return new Promise(function (resolve) { var messages = []; cp.spawn(cmd, args, { cwd: projectDir }) .then(function (result) { // Pylama's exit code is 0 when there are no linting errors. logger.log(">>> NO ERRORS <<<"); logger.log(">>> RAW OUTPUT <<<"); logger.log(result.stdout); logger.log(">>> END <<<"); return resolve(messages); }) .catch(function (error) { // Pylama's exit code is 1 when there are linting errors. logger.log(">>> RAW OUTPUT <<<"); logger.log(error.stdout); logger.log(">>> END <<<"); var parsedLines = _this.parser.parseLines(error.stdout); for (var _i = 0, parsedLines_1 = parsedLines; _i < parsedLines_1.length; _i++) { var parsedLine = parsedLines_1[_i]; var message = _this.parser.buildMessage(textEditor, parsedLine, config); messages.unshift(message); } runningFlag = false; if (tempFile) { tempFile.clean(); } cache.store(messages); return resolve(messages); }); });
return new Promise(function (resolve) { var messages = []; cp.spawn(cmd, args, { cwd: projectDir }) .then(function (result) { logger.log(">>> RAW OUTPUT <<<"); logger.log(result.stdout); logger.log(">>> END <<<"); var parsedLines = _this.parser.parseLines(result.stdout); for (var _i = 0, parsedLines_1 = parsedLines; _i < parsedLines_1.length; _i++) { var parsedLine = parsedLines_1[_i]; var message = _this.parser.buildMessage(textEditor, parsedLine, config); messages.unshift(message); } runningFlag = false; if (tempFile) { tempFile.clean(); } cache.store(messages); return resolve(messages); }) .catch(function (error) { atom.notifications.addError("Execution finished with error:\n\n" + error); logger.log(">>> EXECUTION ERROR <<<"); logger.log(error); logger.log(">>> END <<<"); runningFlag = false; if (tempFile) { tempFile.clean(); } return resolve(cache.get()); }); });
async build(buildInfo, logFile, username, isNpmInstall, isInc, incExc, sync) { let self = this; let fileU = new fileUtil(); let buildDir = fileU.getCvsDir(username, buildInfo.pro_id); //如果是增量文件,则在tag目录构建 if (isInc && incExc == 1) { buildDir = fileU.getLastTagDir(username, buildInfo.pro_id); } let packageFileDir = buildDir + '/package.json'; let task = buildInfo.task; console.log('task:', buildInfo); let code_lang = buildInfo.code_lang; let build_shell = './src/common/service/impl/build_' + code_lang + '.sh'; console.log(build_shell, buildDir, task, buildInfo.pro_id, isNpmInstall); ///执行build_hook before buildInfo.shellParams={ build_shell: build_shell, buildDir: buildDir, task:task, isNpmInstall:isNpmInstall } let hook= buildInfo.build_hook; let hookArray = []; if(hook&&hook.length>0){ let hookStrArray = hook.split(';'); for(let i=0;i<hookStrArray.length>0;i++ ){ let hookInstance = think.service(hookStrArray[i]); //let hookInstance = new hookService(); hookArray.push(hookInstance); } } for(let i=0 ;i<hookArray.length;i++){ hookArray[i].before(buildInfo); } if (sync) { let cmdParam = [buildDir, "'" + task + "'", buildInfo.pro_id, isNpmInstall].join(' '); let cmd = build_shell + ' ' + cmdParam; //改成同步执行 let changeLog = await childProcessPro.exec(cmd, { maxBuffer: 100 * 1024 * 1024 }); let options = { encoding: 'utf8', mode: 438, flag: 'a' }; fs.writeFileSync(logFile, changeLog.stdout, options); } else { const pro = childProcessPro.spawn('sh', [build_shell, buildDir, task, buildInfo.pro_id, isNpmInstall]); let childProcess = pro.child; let options = { encoding: 'utf8', mode: 438, flag: 'a' }; childProcess.stdout.on('data', (data) => { fs.writeFileSync(logFile, data, options); }); childProcess.stderr.on('data', (data) => { fs.writeFileSync(logFile, data, options); }); childProcess.on('close', (code) => { fs.writeFileSync(logFile, buildInfo.pro_name + ' build end!!!\n', options); }); } buildInfo.buildDir = buildDir; for(let i=0 ;i<hookArray.length;i++){ hookArray[i].after(buildInfo); } return buildInfo; }