@push.rocks/smartshell 3.2.2 → 3.2.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist_ts/00_commitinfo_data.js +1 -1
- package/dist_ts/classes.shelllog.d.ts +1 -1
- package/dist_ts/classes.smartshell.d.ts +10 -4
- package/dist_ts/classes.smartshell.js +66 -55
- package/package.json +5 -6
- package/readme.md +732 -69
- package/ts/00_commitinfo_data.ts +1 -1
- package/ts/classes.smartshell.ts +83 -86
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
export const commitinfo = {
|
|
5
5
|
name: '@push.rocks/smartshell',
|
|
6
|
-
version: '3.2.
|
|
6
|
+
version: '3.2.4',
|
|
7
7
|
description: 'A library for executing shell commands using promises.'
|
|
8
8
|
};
|
|
9
9
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMDBfY29tbWl0aW5mb19kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvMDBfY29tbWl0aW5mb19kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHO0lBQ3hCLElBQUksRUFBRSx3QkFBd0I7SUFDOUIsT0FBTyxFQUFFLE9BQU87SUFDaEIsV0FBVyxFQUFFLHdEQUF3RDtDQUN0RSxDQUFBIn0=
|
|
@@ -12,17 +12,23 @@ export interface IExecResultStreaming {
|
|
|
12
12
|
kill: () => Promise<void>;
|
|
13
13
|
terminate: () => Promise<void>;
|
|
14
14
|
keyboardInterrupt: () => Promise<void>;
|
|
15
|
-
customSignal: (
|
|
15
|
+
customSignal: (signal: plugins.smartexit.TProcessSignal) => Promise<void>;
|
|
16
16
|
}
|
|
17
17
|
export declare class Smartshell {
|
|
18
18
|
shellEnv: ShellEnv;
|
|
19
19
|
smartexit: plugins.smartexit.SmartExit;
|
|
20
20
|
constructor(optionsArg: IShellEnvContructorOptions);
|
|
21
21
|
/**
|
|
22
|
-
*
|
|
22
|
+
* Executes a given command asynchronously.
|
|
23
23
|
*/
|
|
24
24
|
private _exec;
|
|
25
|
+
/**
|
|
26
|
+
* Executes an interactive command.
|
|
27
|
+
*/
|
|
25
28
|
private _execInteractive;
|
|
29
|
+
/**
|
|
30
|
+
* Executes a command and returns either a non-streaming result or a streaming interface.
|
|
31
|
+
*/
|
|
26
32
|
private _execCommand;
|
|
27
33
|
exec(commandString: string): Promise<IExecResult>;
|
|
28
34
|
execSilent(commandString: string): Promise<IExecResult>;
|
|
@@ -31,6 +37,6 @@ export declare class Smartshell {
|
|
|
31
37
|
execStreaming(commandString: string, silent?: boolean): Promise<IExecResultStreaming>;
|
|
32
38
|
execStreamingSilent(commandString: string): Promise<IExecResultStreaming>;
|
|
33
39
|
execInteractive(commandString: string): Promise<void>;
|
|
34
|
-
execAndWaitForLine(commandString: string,
|
|
35
|
-
execAndWaitForLineSilent(commandString: string,
|
|
40
|
+
execAndWaitForLine(commandString: string, regex: RegExp, silent?: boolean): Promise<void>;
|
|
41
|
+
execAndWaitForLineSilent(commandString: string, regex: RegExp): Promise<void>;
|
|
36
42
|
}
|
|
@@ -8,35 +8,40 @@ export class Smartshell {
|
|
|
8
8
|
this.shellEnv = new ShellEnv(optionsArg);
|
|
9
9
|
}
|
|
10
10
|
/**
|
|
11
|
-
*
|
|
11
|
+
* Executes a given command asynchronously.
|
|
12
12
|
*/
|
|
13
13
|
async _exec(options) {
|
|
14
14
|
if (options.interactive) {
|
|
15
|
-
return await this._execInteractive(options);
|
|
15
|
+
return await this._execInteractive({ commandString: options.commandString });
|
|
16
16
|
}
|
|
17
17
|
return await this._execCommand(options);
|
|
18
18
|
}
|
|
19
|
+
/**
|
|
20
|
+
* Executes an interactive command.
|
|
21
|
+
*/
|
|
19
22
|
async _execInteractive(options) {
|
|
23
|
+
// Skip interactive execution in CI environments.
|
|
20
24
|
if (process.env.CI) {
|
|
21
25
|
return;
|
|
22
26
|
}
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
27
|
+
return new Promise((resolve) => {
|
|
28
|
+
const shell = cp.spawn(options.commandString, {
|
|
29
|
+
stdio: 'inherit',
|
|
30
|
+
shell: true,
|
|
31
|
+
detached: true,
|
|
32
|
+
});
|
|
33
|
+
this.smartexit.addProcess(shell);
|
|
34
|
+
shell.on('close', (code) => {
|
|
35
|
+
console.log(`Interactive shell terminated with code ${code}`);
|
|
36
|
+
this.smartexit.removeProcess(shell);
|
|
37
|
+
resolve();
|
|
38
|
+
});
|
|
34
39
|
});
|
|
35
|
-
await done.promise;
|
|
36
40
|
}
|
|
41
|
+
/**
|
|
42
|
+
* Executes a command and returns either a non-streaming result or a streaming interface.
|
|
43
|
+
*/
|
|
37
44
|
async _execCommand(options) {
|
|
38
|
-
const done = plugins.smartpromise.defer();
|
|
39
|
-
const childProcessEnded = plugins.smartpromise.defer();
|
|
40
45
|
const commandToExecute = this.shellEnv.createEnvExecString(options.commandString);
|
|
41
46
|
const shellLogInstance = new ShellLog();
|
|
42
47
|
const execChildProcess = cp.spawn(commandToExecute, [], {
|
|
@@ -46,6 +51,7 @@ export class Smartshell {
|
|
|
46
51
|
detached: false,
|
|
47
52
|
});
|
|
48
53
|
this.smartexit.addProcess(execChildProcess);
|
|
54
|
+
// Capture stdout and stderr output.
|
|
49
55
|
execChildProcess.stdout.on('data', (data) => {
|
|
50
56
|
if (!options.silent) {
|
|
51
57
|
shellLogInstance.writeToConsole(data);
|
|
@@ -58,43 +64,51 @@ export class Smartshell {
|
|
|
58
64
|
}
|
|
59
65
|
shellLogInstance.addToBuffer(data);
|
|
60
66
|
});
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
67
|
+
// Wrap child process termination into a Promise.
|
|
68
|
+
const childProcessEnded = new Promise((resolve, reject) => {
|
|
69
|
+
execChildProcess.on('exit', (code, signal) => {
|
|
70
|
+
this.smartexit.removeProcess(execChildProcess);
|
|
71
|
+
const execResult = {
|
|
72
|
+
exitCode: typeof code === 'number' ? code : (signal ? 1 : 0),
|
|
73
|
+
stdout: shellLogInstance.logStore.toString(),
|
|
74
|
+
};
|
|
75
|
+
if (options.strict && code !== 0) {
|
|
76
|
+
reject(new Error(`Command "${options.commandString}" exited with code ${code}`));
|
|
77
|
+
}
|
|
78
|
+
else {
|
|
79
|
+
resolve(execResult);
|
|
80
|
+
}
|
|
81
|
+
});
|
|
82
|
+
execChildProcess.on('error', (error) => {
|
|
83
|
+
this.smartexit.removeProcess(execChildProcess);
|
|
84
|
+
reject(error);
|
|
85
|
+
});
|
|
74
86
|
});
|
|
87
|
+
// If streaming mode is enabled, return a streaming interface immediately.
|
|
75
88
|
if (options.streaming) {
|
|
76
|
-
|
|
89
|
+
return {
|
|
77
90
|
childProcess: execChildProcess,
|
|
78
|
-
finalPromise: childProcessEnded
|
|
91
|
+
finalPromise: childProcessEnded,
|
|
79
92
|
kill: async () => {
|
|
80
|
-
console.log(`
|
|
93
|
+
console.log(`Running tree kill with SIGKILL on process ${execChildProcess.pid}`);
|
|
81
94
|
await plugins.smartexit.SmartExit.killTreeByPid(execChildProcess.pid, 'SIGKILL');
|
|
82
95
|
},
|
|
83
96
|
terminate: async () => {
|
|
84
|
-
console.log(`
|
|
97
|
+
console.log(`Running tree kill with SIGTERM on process ${execChildProcess.pid}`);
|
|
85
98
|
await plugins.smartexit.SmartExit.killTreeByPid(execChildProcess.pid, 'SIGTERM');
|
|
86
99
|
},
|
|
87
100
|
keyboardInterrupt: async () => {
|
|
88
|
-
console.log(`
|
|
101
|
+
console.log(`Running tree kill with SIGINT on process ${execChildProcess.pid}`);
|
|
89
102
|
await plugins.smartexit.SmartExit.killTreeByPid(execChildProcess.pid, 'SIGINT');
|
|
90
103
|
},
|
|
91
|
-
customSignal: async (
|
|
92
|
-
console.log(`
|
|
93
|
-
await plugins.smartexit.SmartExit.killTreeByPid(execChildProcess.pid,
|
|
104
|
+
customSignal: async (signal) => {
|
|
105
|
+
console.log(`Running tree kill with custom signal ${signal} on process ${execChildProcess.pid}`);
|
|
106
|
+
await plugins.smartexit.SmartExit.killTreeByPid(execChildProcess.pid, signal);
|
|
94
107
|
},
|
|
95
|
-
}
|
|
108
|
+
};
|
|
96
109
|
}
|
|
97
|
-
|
|
110
|
+
// For non-streaming mode, wait for the process to complete.
|
|
111
|
+
return await childProcessEnded;
|
|
98
112
|
}
|
|
99
113
|
async exec(commandString) {
|
|
100
114
|
return (await this._exec({ commandString }));
|
|
@@ -112,27 +126,24 @@ export class Smartshell {
|
|
|
112
126
|
return (await this._exec({ commandString, silent, streaming: true }));
|
|
113
127
|
}
|
|
114
128
|
async execStreamingSilent(commandString) {
|
|
115
|
-
return (await this._exec({
|
|
116
|
-
commandString,
|
|
117
|
-
silent: true,
|
|
118
|
-
streaming: true,
|
|
119
|
-
}));
|
|
129
|
+
return (await this._exec({ commandString, silent: true, streaming: true }));
|
|
120
130
|
}
|
|
121
131
|
async execInteractive(commandString) {
|
|
122
132
|
await this._exec({ commandString, interactive: true });
|
|
123
133
|
}
|
|
124
|
-
async execAndWaitForLine(commandString,
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
134
|
+
async execAndWaitForLine(commandString, regex, silent = false) {
|
|
135
|
+
const execStreamingResult = await this.execStreaming(commandString, silent);
|
|
136
|
+
return new Promise((resolve) => {
|
|
137
|
+
execStreamingResult.childProcess.stdout.on('data', (chunk) => {
|
|
138
|
+
const data = typeof chunk === 'string' ? chunk : chunk.toString();
|
|
139
|
+
if (regex.test(data)) {
|
|
140
|
+
resolve();
|
|
141
|
+
}
|
|
142
|
+
});
|
|
131
143
|
});
|
|
132
|
-
return done.promise;
|
|
133
144
|
}
|
|
134
|
-
async execAndWaitForLineSilent(commandString,
|
|
135
|
-
return this.execAndWaitForLine(commandString,
|
|
145
|
+
async execAndWaitForLineSilent(commandString, regex) {
|
|
146
|
+
return this.execAndWaitForLine(commandString, regex, true);
|
|
136
147
|
}
|
|
137
148
|
}
|
|
138
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
149
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5zbWFydHNoZWxsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvY2xhc3Nlcy5zbWFydHNoZWxsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sY0FBYyxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUVqRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDakQsT0FBTyxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUF5QnBDLE1BQU0sT0FBTyxVQUFVO0lBSXJCLFlBQVksVUFBc0M7UUFGM0MsY0FBUyxHQUFHLElBQUksT0FBTyxDQUFDLFNBQVMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUduRCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFRDs7T0FFRztJQUNLLEtBQUssQ0FBQyxLQUFLLENBQUMsT0FBcUI7UUFDdkMsSUFBSSxPQUFPLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDeEIsT0FBTyxNQUFNLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLGFBQWEsRUFBRSxPQUFPLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQztRQUMvRSxDQUFDO1FBQ0QsT0FBTyxNQUFNLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVEOztPQUVHO0lBQ0ssS0FBSyxDQUFDLGdCQUFnQixDQUFDLE9BQTRDO1FBQ3pFLGlEQUFpRDtRQUNqRCxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDbkIsT0FBTztRQUNULENBQUM7UUFFRCxPQUFPLElBQUksT0FBTyxDQUFPLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDbkMsTUFBTSxLQUFLLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsYUFB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
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@push.rocks/smartshell",
|
|
3
3
|
"private": false,
|
|
4
|
-
"version": "3.2.
|
|
4
|
+
"version": "3.2.4",
|
|
5
5
|
"description": "A library for executing shell commands using promises.",
|
|
6
6
|
"main": "dist_ts/index.js",
|
|
7
7
|
"typings": "dist_ts/index.d.ts",
|
|
@@ -28,16 +28,15 @@
|
|
|
28
28
|
},
|
|
29
29
|
"homepage": "https://code.foss.global/push.rocks/smartshell",
|
|
30
30
|
"devDependencies": {
|
|
31
|
-
"@git.zone/tsbuild": "^2.
|
|
31
|
+
"@git.zone/tsbuild": "^2.6.4",
|
|
32
32
|
"@git.zone/tsrun": "^1.3.3",
|
|
33
|
-
"@git.zone/tstest": "^
|
|
34
|
-
"@push.rocks/tapbundle": "^5.5.3",
|
|
33
|
+
"@git.zone/tstest": "^2.3.2",
|
|
35
34
|
"@types/node": "^22.10.2"
|
|
36
35
|
},
|
|
37
36
|
"dependencies": {
|
|
38
37
|
"@push.rocks/smartdelay": "^3.0.1",
|
|
39
38
|
"@push.rocks/smartexit": "^1.0.23",
|
|
40
|
-
"@push.rocks/smartpromise": "^4.
|
|
39
|
+
"@push.rocks/smartpromise": "^4.2.3",
|
|
41
40
|
"@types/which": "^3.0.4",
|
|
42
41
|
"tree-kill": "^1.2.2",
|
|
43
42
|
"which": "^5.0.0"
|
|
@@ -58,7 +57,7 @@
|
|
|
58
57
|
"last 1 chrome versions"
|
|
59
58
|
],
|
|
60
59
|
"scripts": {
|
|
61
|
-
"test": "(tstest test/)",
|
|
60
|
+
"test": "(tstest test/ --verbose --logfile --timeout 20)",
|
|
62
61
|
"build": "(tsbuild tsfolders --web)",
|
|
63
62
|
"buildDocs": "tsdoc"
|
|
64
63
|
}
|