@push.rocks/smartshell 3.0.5 → 3.0.6
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.d.ts +1 -1
- package/dist_ts/00_commitinfo_data.js +2 -2
- package/dist_ts/smartshell.classes.shelllog.d.ts +0 -1
- package/dist_ts/smartshell.classes.smartshell.d.ts +2 -1
- package/dist_ts/smartshell.classes.smartshell.js +29 -26
- package/package.json +10 -10
- package/ts/00_commitinfo_data.ts +2 -2
- package/ts/smartshell.classes.smartshell.ts +41 -29
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* autocreated commitinfo by @
|
|
2
|
+
* autocreated commitinfo by @push.rocks/commitinfo
|
|
3
3
|
*/
|
|
4
4
|
export const commitinfo = {
|
|
5
5
|
name: '@push.rocks/smartshell',
|
|
6
|
-
version: '3.0.
|
|
6
|
+
version: '3.0.6',
|
|
7
7
|
description: 'A library for executing shell commands using promises.'
|
|
8
8
|
};
|
|
9
9
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMDBfY29tbWl0aW5mb19kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvMDBfY29tbWl0aW5mb19kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHO0lBQ3hCLElBQUksRUFBRSx3QkFBd0I7SUFDOUIsT0FBTyxFQUFFLE9BQU87SUFDaEIsV0FBVyxFQUFFLHdEQUF3RDtDQUN0RSxDQUFBIn0=
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
/// <reference types="node" resolution-mode="require"/>
|
|
2
1
|
import * as plugins from './smartshell.plugins.js';
|
|
3
2
|
import { ShellEnv } from './smartshell.classes.shellenv.js';
|
|
4
3
|
import type { IShellEnvContructorOptions } from './smartshell.classes.shellenv.js';
|
|
@@ -23,6 +22,8 @@ export declare class Smartshell {
|
|
|
23
22
|
* executes a given command async
|
|
24
23
|
*/
|
|
25
24
|
private _exec;
|
|
25
|
+
private _execInteractive;
|
|
26
|
+
private _execCommand;
|
|
26
27
|
exec(commandString: string): Promise<IExecResult>;
|
|
27
28
|
execSilent(commandString: string): Promise<IExecResult>;
|
|
28
29
|
execStrict(commandString: string): Promise<IExecResult>;
|
|
@@ -12,30 +12,33 @@ export class Smartshell {
|
|
|
12
12
|
*/
|
|
13
13
|
async _exec(options) {
|
|
14
14
|
if (options.interactive) {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
stdio: 'inherit',
|
|
22
|
-
shell: true,
|
|
23
|
-
detached: true
|
|
24
|
-
});
|
|
25
|
-
this.smartexit.addProcess(shell);
|
|
26
|
-
shell.on('close', (code) => {
|
|
27
|
-
console.log(`interactive shell terminated with code ${code}`);
|
|
28
|
-
this.smartexit.removeProcess(shell);
|
|
29
|
-
done.resolve();
|
|
30
|
-
});
|
|
31
|
-
await done.promise;
|
|
15
|
+
return await this._execInteractive(options);
|
|
16
|
+
}
|
|
17
|
+
return await this._execCommand(options);
|
|
18
|
+
}
|
|
19
|
+
async _execInteractive(options) {
|
|
20
|
+
if (process.env.CI) {
|
|
32
21
|
return;
|
|
33
22
|
}
|
|
23
|
+
const done = plugins.smartpromise.defer();
|
|
24
|
+
const shell = cp.spawn(options.commandString, {
|
|
25
|
+
stdio: 'inherit',
|
|
26
|
+
shell: true,
|
|
27
|
+
detached: true
|
|
28
|
+
});
|
|
29
|
+
this.smartexit.addProcess(shell);
|
|
30
|
+
shell.on('close', (code) => {
|
|
31
|
+
console.log(`interactive shell terminated with code ${code}`);
|
|
32
|
+
this.smartexit.removeProcess(shell);
|
|
33
|
+
done.resolve();
|
|
34
|
+
});
|
|
35
|
+
await done.promise;
|
|
36
|
+
}
|
|
37
|
+
async _execCommand(options) {
|
|
34
38
|
const done = plugins.smartpromise.defer();
|
|
35
39
|
const childProcessEnded = plugins.smartpromise.defer();
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
const spawnlogInstance = new ShellLog();
|
|
40
|
+
const commandToExecute = this.shellEnv.createEnvExecString(options.commandString);
|
|
41
|
+
const shellLogInstance = new ShellLog();
|
|
39
42
|
const execChildProcess = cp.spawn(commandToExecute, [], {
|
|
40
43
|
shell: true,
|
|
41
44
|
cwd: process.cwd(),
|
|
@@ -45,15 +48,15 @@ export class Smartshell {
|
|
|
45
48
|
this.smartexit.addProcess(execChildProcess);
|
|
46
49
|
execChildProcess.stdout.on('data', (data) => {
|
|
47
50
|
if (!options.silent) {
|
|
48
|
-
|
|
51
|
+
shellLogInstance.writeToConsole(data);
|
|
49
52
|
}
|
|
50
|
-
|
|
53
|
+
shellLogInstance.addToBuffer(data);
|
|
51
54
|
});
|
|
52
55
|
execChildProcess.stderr.on('data', (data) => {
|
|
53
56
|
if (!options.silent) {
|
|
54
|
-
|
|
57
|
+
shellLogInstance.writeToConsole(data);
|
|
55
58
|
}
|
|
56
|
-
|
|
59
|
+
shellLogInstance.addToBuffer(data);
|
|
57
60
|
});
|
|
58
61
|
execChildProcess.on('exit', (code, signal) => {
|
|
59
62
|
this.smartexit.removeProcess(execChildProcess);
|
|
@@ -62,7 +65,7 @@ export class Smartshell {
|
|
|
62
65
|
}
|
|
63
66
|
const execResult = {
|
|
64
67
|
exitCode: code,
|
|
65
|
-
stdout:
|
|
68
|
+
stdout: shellLogInstance.logStore.toString(),
|
|
66
69
|
};
|
|
67
70
|
if (!options.streaming) {
|
|
68
71
|
done.resolve(execResult);
|
|
@@ -132,4 +135,4 @@ export class Smartshell {
|
|
|
132
135
|
return this.execAndWaitForLine(commandString, regexArg, true);
|
|
133
136
|
}
|
|
134
137
|
}
|
|
135
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
138
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRzaGVsbC5jbGFzc2VzLnNtYXJ0c2hlbGwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9zbWFydHNoZWxsLmNsYXNzZXMuc21hcnRzaGVsbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLHlCQUF5QixDQUFDO0FBQ25ELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUU1RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFFNUQsT0FBTyxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFpQnBDLE1BQU0sT0FBTyxVQUFVO0lBSXJCLFlBQVksVUFBc0M7UUFGM0MsY0FBUyxHQUFHLElBQUksT0FBTyxDQUFDLFNBQVMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUduRCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFRDs7T0FFRztJQUNLLEtBQUssQ0FBQyxLQUFLLENBQUMsT0FNbkI7UUFDQyxJQUFJLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUN4QixPQUFPLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzlDLENBQUM7UUFFRCxPQUFPLE1BQU0sSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRU8sS0FBSyxDQUFDLGdCQUFnQixDQUFDLE9BRzlCO1FBQ0MsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ25CLE9BQU87UUFDVCxDQUFDO1FBRUQsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUUxQyxNQUFNLEtBQUssR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUU7WUFDNUMsS0FBSyxFQUFF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
|
package/package.json
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@push.rocks/smartshell",
|
|
3
3
|
"private": false,
|
|
4
|
-
"version": "3.0.
|
|
4
|
+
"version": "3.0.6",
|
|
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",
|
|
8
8
|
"type": "module",
|
|
9
9
|
"repository": {
|
|
10
10
|
"type": "git",
|
|
11
|
-
"url": "
|
|
11
|
+
"url": "https://code.foss.global/push.rocks/smartshell.git"
|
|
12
12
|
},
|
|
13
13
|
"keywords": [
|
|
14
14
|
"shell commands",
|
|
@@ -26,19 +26,19 @@
|
|
|
26
26
|
"bugs": {
|
|
27
27
|
"url": "https://gitlab.com/pushrocks/smartshell/issues"
|
|
28
28
|
},
|
|
29
|
-
"homepage": "https://
|
|
29
|
+
"homepage": "https://code.foss.global/push.rocks/smartshell",
|
|
30
30
|
"devDependencies": {
|
|
31
|
-
"@git.zone/tsbuild": "^2.1.
|
|
32
|
-
"@git.zone/tsrun": "^1.2.
|
|
33
|
-
"@git.zone/tstest": "^1.0.
|
|
34
|
-
"@push.rocks/tapbundle": "^5.0.
|
|
35
|
-
"@types/node": "^
|
|
31
|
+
"@git.zone/tsbuild": "^2.1.84",
|
|
32
|
+
"@git.zone/tsrun": "^1.2.49",
|
|
33
|
+
"@git.zone/tstest": "^1.0.90",
|
|
34
|
+
"@push.rocks/tapbundle": "^5.0.24",
|
|
35
|
+
"@types/node": "^22.5.5"
|
|
36
36
|
},
|
|
37
37
|
"dependencies": {
|
|
38
38
|
"@push.rocks/smartdelay": "^3.0.1",
|
|
39
39
|
"@push.rocks/smartexit": "^1.0.23",
|
|
40
|
-
"@push.rocks/smartpromise": "^4.0.
|
|
41
|
-
"@types/which": "^3.0.
|
|
40
|
+
"@push.rocks/smartpromise": "^4.0.4",
|
|
41
|
+
"@types/which": "^3.0.4",
|
|
42
42
|
"tree-kill": "^1.2.2",
|
|
43
43
|
"which": "^4.0.0"
|
|
44
44
|
},
|
package/ts/00_commitinfo_data.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* autocreated commitinfo by @
|
|
2
|
+
* autocreated commitinfo by @push.rocks/commitinfo
|
|
3
3
|
*/
|
|
4
4
|
export const commitinfo = {
|
|
5
5
|
name: '@push.rocks/smartshell',
|
|
6
|
-
version: '3.0.
|
|
6
|
+
version: '3.0.6',
|
|
7
7
|
description: 'A library for executing shell commands using promises.'
|
|
8
8
|
}
|
|
@@ -39,39 +39,51 @@ export class Smartshell {
|
|
|
39
39
|
interactive?: boolean;
|
|
40
40
|
}): Promise<IExecResult | IExecResultStreaming | void> {
|
|
41
41
|
if (options.interactive) {
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
}
|
|
42
|
+
return await this._execInteractive(options);
|
|
43
|
+
}
|
|
45
44
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
// Notice that stdio is set to 'inherit'
|
|
49
|
-
const shell = cp.spawn(options.commandString, {
|
|
50
|
-
stdio: 'inherit',
|
|
51
|
-
shell: true,
|
|
52
|
-
detached: true
|
|
53
|
-
});
|
|
45
|
+
return await this._execCommand(options);
|
|
46
|
+
}
|
|
54
47
|
|
|
55
|
-
|
|
48
|
+
private async _execInteractive(options: {
|
|
49
|
+
commandString: string;
|
|
50
|
+
interactive?: boolean;
|
|
51
|
+
}): Promise<void> {
|
|
52
|
+
if (process.env.CI) {
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
56
55
|
|
|
57
|
-
|
|
58
|
-
console.log(`interactive shell terminated with code ${code}`);
|
|
59
|
-
this.smartexit.removeProcess(shell);
|
|
60
|
-
done.resolve();
|
|
61
|
-
});
|
|
56
|
+
const done = plugins.smartpromise.defer();
|
|
62
57
|
|
|
63
|
-
|
|
58
|
+
const shell = cp.spawn(options.commandString, {
|
|
59
|
+
stdio: 'inherit',
|
|
60
|
+
shell: true,
|
|
61
|
+
detached: true
|
|
62
|
+
});
|
|
64
63
|
|
|
65
|
-
|
|
66
|
-
|
|
64
|
+
this.smartexit.addProcess(shell);
|
|
65
|
+
|
|
66
|
+
shell.on('close', (code) => {
|
|
67
|
+
console.log(`interactive shell terminated with code ${code}`);
|
|
68
|
+
this.smartexit.removeProcess(shell);
|
|
69
|
+
done.resolve();
|
|
70
|
+
});
|
|
71
|
+
|
|
72
|
+
await done.promise;
|
|
73
|
+
}
|
|
67
74
|
|
|
75
|
+
private async _execCommand(options: {
|
|
76
|
+
commandString: string;
|
|
77
|
+
silent?: boolean;
|
|
78
|
+
strict?: boolean;
|
|
79
|
+
streaming?: boolean;
|
|
80
|
+
}): Promise<IExecResult | IExecResultStreaming> {
|
|
68
81
|
const done = plugins.smartpromise.defer<IExecResult | IExecResultStreaming>();
|
|
69
82
|
const childProcessEnded = plugins.smartpromise.defer<IExecResult>();
|
|
70
83
|
|
|
71
|
-
|
|
72
|
-
commandToExecute = this.shellEnv.createEnvExecString(options.commandString);
|
|
84
|
+
const commandToExecute = this.shellEnv.createEnvExecString(options.commandString);
|
|
73
85
|
|
|
74
|
-
const
|
|
86
|
+
const shellLogInstance = new ShellLog();
|
|
75
87
|
const execChildProcess = cp.spawn(commandToExecute, [], {
|
|
76
88
|
shell: true,
|
|
77
89
|
cwd: process.cwd(),
|
|
@@ -83,16 +95,16 @@ export class Smartshell {
|
|
|
83
95
|
|
|
84
96
|
execChildProcess.stdout.on('data', (data) => {
|
|
85
97
|
if (!options.silent) {
|
|
86
|
-
|
|
98
|
+
shellLogInstance.writeToConsole(data);
|
|
87
99
|
}
|
|
88
|
-
|
|
100
|
+
shellLogInstance.addToBuffer(data);
|
|
89
101
|
});
|
|
90
102
|
|
|
91
103
|
execChildProcess.stderr.on('data', (data) => {
|
|
92
104
|
if (!options.silent) {
|
|
93
|
-
|
|
105
|
+
shellLogInstance.writeToConsole(data);
|
|
94
106
|
}
|
|
95
|
-
|
|
107
|
+
shellLogInstance.addToBuffer(data);
|
|
96
108
|
});
|
|
97
109
|
|
|
98
110
|
execChildProcess.on('exit', (code, signal) => {
|
|
@@ -103,7 +115,7 @@ export class Smartshell {
|
|
|
103
115
|
|
|
104
116
|
const execResult = {
|
|
105
117
|
exitCode: code,
|
|
106
|
-
stdout:
|
|
118
|
+
stdout: shellLogInstance.logStore.toString(),
|
|
107
119
|
};
|
|
108
120
|
|
|
109
121
|
if (!options.streaming) {
|
|
@@ -191,4 +203,4 @@ export class Smartshell {
|
|
|
191
203
|
public async execAndWaitForLineSilent(commandString: string, regexArg: RegExp) {
|
|
192
204
|
return this.execAndWaitForLine(commandString, regexArg, true);
|
|
193
205
|
}
|
|
194
|
-
}
|
|
206
|
+
}
|