Compare commits

..

4 Commits

Author SHA1 Message Date
a4c188051a 2.0.23 2019-05-29 10:56:46 +02:00
62195b63d6 fix(core): update 2019-05-29 10:56:45 +02:00
16ba3803a4 2.0.22 2019-05-28 11:14:33 +02:00
613241cdcb fix(core): update 2019-05-28 11:14:32 +02:00
3 changed files with 24 additions and 5 deletions

2
package-lock.json generated
View File

@ -1,6 +1,6 @@
{
"name": "@pushrocks/smartshell",
"version": "2.0.21",
"version": "2.0.23",
"lockfileVersion": 1,
"requires": true,
"dependencies": {

View File

@ -1,7 +1,7 @@
{
"name": "@pushrocks/smartshell",
"private": false,
"version": "2.0.21",
"version": "2.0.23",
"description": "shell actions designed as promises",
"main": "dist/index.js",
"typings": "dist/index.d.ts",

View File

@ -119,6 +119,10 @@ export class Smartshell {
* executes a command async and strict, meaning it rejects the promise if something happens
*/
public async execStrict(commandStringArg: string): Promise<IExecResult> {
return (await this._exec(commandStringArg, false, true)) as IExecResult;
}
public async execStrictSilent (commandStringArg: string): Promise<IExecResult> {
return (await this._exec(commandStringArg, true, true)) as IExecResult;
}
@ -166,17 +170,32 @@ export class Smartshell {
* @param regexArg
*/
public async execInteractive(commandStringArg: string) {
if (process.env.CI) {
return;
}
const done = plugins.smartpromise.defer();
const shell = cp.spawn('sh', [], { stdio: 'pipe' });
this.smartexit.addProcess(shell);
const shellLog = new ShellLog();
process.stdin.pipe(shell.stdin);
shell.stdout.pipe(process.stdout);
const stdInStream = process.stdin.pipe(shell.stdin);
const stdOutStream = shell.stdout.pipe(process.stdout);
shell.on('close', code => {
console.log(`interactive shell terminated with code ${code}`);
stdInStream.removeAllListeners();
stdInStream.uncork();
stdOutStream.removeAllListeners();
stdOutStream.unpipe();
shell.kill('SIGTERM');
process.stdin.pause();
done.resolve();
});
shell.stdin.write(commandStringArg + '\n');
let commandString = commandStringArg;
if (process.env.CI) {
commandString += ' && exit';
}
commandString += '\n';
shell.stdin.write(commandString);
await done.promise;
}
}