Compare commits
2 Commits
Author | SHA1 | Date | |
---|---|---|---|
16ba3803a4 | |||
613241cdcb |
2
package-lock.json
generated
2
package-lock.json
generated
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@pushrocks/smartshell",
|
||||
"version": "2.0.21",
|
||||
"version": "2.0.22",
|
||||
"lockfileVersion": 1,
|
||||
"requires": true,
|
||||
"dependencies": {
|
||||
|
@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@pushrocks/smartshell",
|
||||
"private": false,
|
||||
"version": "2.0.21",
|
||||
"version": "2.0.22",
|
||||
"description": "shell actions designed as promises",
|
||||
"main": "dist/index.js",
|
||||
"typings": "dist/index.d.ts",
|
||||
|
@ -166,17 +166,31 @@ 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');
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user