{"version":3,"sources":["../../../packages/tools/wac-cli/src/angular15/utils/command-runner.ts"],"names":[],"mappings":"AAIA;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,UAAQ,EAAE,UAAU,UAAQ,EAAE,YAAY,MAAY,EAAE,eAAe,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAqE9I","file":"command-runner.d.ts","sourcesContent":["import { Logger } from \"./logger\";\r\nimport { exec } from 'child_process';\r\nimport fs from 'fs';\r\n\r\n/**\r\n * the run command function.\r\n * @param cmd the command to run.\r\n * @param debug the debug flag.\r\n * @param forceDebug the force debug flag.\r\n * @param finalizeInfo the finalize info.\r\n * @param writeToFileName the write to file name.\r\n * @returns\r\n */\r\nexport function runCommand(cmd: string, debug = false, forceDebug = false, finalizeInfo = undefined, writeToFileName?: string): Promise<string> {\r\n    const loggerPrefix = `runCommand - ${cmd}`;\r\n    const loggerErrorPrefix = `error - runCommand - ${cmd}`;\r\n    let logString = '';\r\n\r\n    console.log(`Running ${cmd}`);\r\n    return new Promise((resolve) => {\r\n        const child = exec(cmd, (error, stdout, stderr) => {\r\n            if (error) {\r\n                Logger.error(`  exec error: ${error}`);\r\n                resolve(logString);\r\n                return;\r\n            }\r\n\r\n            stdout.split('\\n').filter(line => line.trimEnd()).forEach(\r\n                line => {\r\n                    logString += `${replaceANSIEscape(line)}\\n`;\r\n                    Logger.log(line, loggerPrefix);\r\n                }\r\n            );\r\n            stderr.split('\\n').filter(line => line.trimEnd()).forEach(\r\n                line => {\r\n                    logString += `${replaceANSIEscape(line)}\\n`;\r\n                    Logger.error(line, loggerErrorPrefix)\r\n                }\r\n            );\r\n\r\n            resolve(logString);\r\n        });\r\n\r\n        if (debug || forceDebug) {\r\n            child.stdout.on('data', (data) => {\r\n                data.split('\\n').filter(line => line.trimEnd()).forEach(\r\n                    line => {\r\n                        logString += `${replaceANSIEscape(line)}\\n`;\r\n                        Logger.log(`  ${line}`, loggerPrefix)\r\n                    }\r\n                );\r\n            });\r\n        }\r\n\r\n        child.stderr.on('data', (data) => {\r\n            data.split('\\n').filter(line => line.trimEnd()).forEach(\r\n                line => {\r\n                    logString += `  ${replaceANSIEscape(line)}\\n`;\r\n                    Logger.error(`  ${line}`, loggerErrorPrefix)\r\n                }\r\n            );\r\n        });\r\n\r\n        child.on('close', (code) => {\r\n            logString += `exitCode: ${code}\\n`;\r\n            Logger.log(`exitCode: ${code}`);\r\n            if (code !== 0 && finalizeInfo) {\r\n                logString += `${finalizeInfo}\\n`;\r\n                Logger.log(finalizeInfo);\r\n            }\r\n\r\n            if (writeToFileName) {\r\n                fs.writeFile(writeToFileName, logString, (writeErr) => {\r\n                    if (writeErr) {\r\n                        Logger.error(`Error writing log to file: ${writeErr}`);\r\n                    } else {\r\n                        console.log(`Logs saved to log'`);\r\n                    }\r\n                });\r\n            }\r\n        });\r\n    });\r\n}\r\n\r\nfunction replaceANSIEscape(line: string) {\r\n    return line.replace(/\\x1B\\[[0-9;]*[JKmsu]/g, '');\r\n}\r\n"]}