in src/debugger/extension.ts [41:94]
export function cordovaRunCommand(command: string, args: string[], env, cordovaRootPath: string, outputLogger?: DebugConsoleLogger): Promise<string[]> {
return new Promise<string[]>((resolve, reject) => {
let isIonicProject = CordovaProjectHelper.isIonicAngularProject(cordovaRootPath);
let output = "";
let stderr = "";
let cordovaProcess = cordovaStartCommand(command, args, env, cordovaRootPath);
// Prevent these lines to be shown more than once
// to prevent debug console pollution
let isShown = {
"Running command": false,
"cordova prepare": false,
"cordova platform add": false,
};
cordovaProcess.stderr.on("data", data => {
stderr += data.toString();
for (let i = 0; i < errorsToSuppress.length; i++) {
if (data.toString().indexOf(errorsToSuppress[i]) >= 0) {
return;
}
}
outputLogger && outputLogger(data.toString(), "stderr");
});
cordovaProcess.stdout.on("data", (data: Buffer) => {
let str = data.toString().replace(/\u001b/g, "").replace(/\[2K\[G/g, ""); // Erasing `[2K[G` artifacts from DEBUG CONSOLE output
output += str;
for (let message in isShown) {
if (str.indexOf(message) > -1) {
if (!isShown[message]) {
isShown[message] = true;
outputLogger && outputLogger(str, "stdout");
}
return;
}
}
outputLogger && outputLogger(str, "stdout");
if (isIonicProject && str.indexOf("LAUNCH SUCCESS") >= 0) {
resolve([output, stderr]);
}
});
cordovaProcess.on("exit", exitCode => {
if (exitCode) {
reject(new Error(localize("CommandFailedWithExitCode", "{0} {1} failed with exit code {2}", command, args.join(" "), exitCode)));
} else {
resolve([output, stderr]);
}
});
cordovaProcess.on("error", error => {
reject(error);
});
});
}