2018-07-30 14:03:48 +00:00
|
|
|
import * as plugins from './smartshell.plugins';
|
|
|
|
|
|
|
|
/**
|
|
|
|
* a log handler for spawned logs
|
|
|
|
* making sure the process doesn't run out of memory
|
|
|
|
*/
|
|
|
|
export class ShellLog {
|
2019-05-28 08:43:54 +00:00
|
|
|
public logStore = Buffer.from('');
|
2018-07-30 14:03:48 +00:00
|
|
|
|
|
|
|
/**
|
|
|
|
* log data to console
|
2018-07-30 14:08:14 +00:00
|
|
|
* @param dataArg
|
2018-07-30 14:03:48 +00:00
|
|
|
*/
|
2019-05-28 08:43:54 +00:00
|
|
|
public writeToConsole(dataArg: string | Buffer): void {
|
2018-07-30 14:03:48 +00:00
|
|
|
// make sure we have the data as string
|
2018-12-13 15:50:32 +00:00
|
|
|
process.stdout.write(dataArg);
|
2018-07-30 14:03:48 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* add data to Buffer for later consumption
|
|
|
|
* @param dataArg
|
|
|
|
*/
|
2019-05-28 08:43:54 +00:00
|
|
|
public addToBuffer(dataArg: string | Buffer): void {
|
2018-07-30 14:03:48 +00:00
|
|
|
// make sure we have the data as Buffer
|
|
|
|
const dataBuffer: Buffer = (() => {
|
|
|
|
if (!Buffer.isBuffer(dataArg)) {
|
|
|
|
return Buffer.from(dataArg);
|
|
|
|
}
|
|
|
|
return dataArg;
|
|
|
|
})();
|
2018-07-30 14:08:14 +00:00
|
|
|
this.logStore = Buffer.concat([this.logStore, dataBuffer]);
|
2018-07-30 14:03:48 +00:00
|
|
|
}
|
|
|
|
|
2019-05-28 08:43:54 +00:00
|
|
|
public logAndAdd(dataArg: string | Buffer): void {
|
|
|
|
this.writeToConsole(dataArg);
|
2018-07-30 14:03:48 +00:00
|
|
|
this.addToBuffer(dataArg);
|
|
|
|
}
|
2018-07-30 14:08:14 +00:00
|
|
|
}
|