@pristine-ts/cli 0.0.319 → 0.0.321
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/lib/cjs/errors/errors.js +1 -0
- package/dist/lib/cjs/errors/errors.js.map +1 -1
- package/dist/lib/cjs/errors/path-already-contains-filename.error.js +14 -0
- package/dist/lib/cjs/errors/path-already-contains-filename.error.js.map +1 -0
- package/dist/lib/cjs/managers/managers.js +2 -0
- package/dist/lib/cjs/managers/managers.js.map +1 -1
- package/dist/lib/cjs/managers/path.manager.js +37 -0
- package/dist/lib/cjs/managers/path.manager.js.map +1 -0
- package/dist/lib/cjs/managers/shell.manager.js +70 -0
- package/dist/lib/cjs/managers/shell.manager.js.map +1 -0
- package/dist/lib/esm/errors/errors.js +1 -0
- package/dist/lib/esm/errors/errors.js.map +1 -1
- package/dist/lib/esm/errors/path-already-contains-filename.error.js +10 -0
- package/dist/lib/esm/errors/path-already-contains-filename.error.js.map +1 -0
- package/dist/lib/esm/managers/managers.js +2 -0
- package/dist/lib/esm/managers/managers.js.map +1 -1
- package/dist/lib/esm/managers/path.manager.js +34 -0
- package/dist/lib/esm/managers/path.manager.js.map +1 -0
- package/dist/lib/esm/managers/shell.manager.js +67 -0
- package/dist/lib/esm/managers/shell.manager.js.map +1 -0
- package/dist/types/errors/errors.d.ts +1 -0
- package/dist/types/errors/path-already-contains-filename.error.d.ts +3 -0
- package/dist/types/managers/managers.d.ts +2 -0
- package/dist/types/managers/path.manager.d.ts +4 -0
- package/dist/types/managers/shell.manager.d.ts +12 -0
- package/package.json +7 -7
|
@@ -15,4 +15,5 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
__exportStar(require("./command-not-found.error"), exports);
|
|
18
|
+
__exportStar(require("./path-already-contains-filename.error"), exports);
|
|
18
19
|
//# sourceMappingURL=errors.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../../src/errors/errors.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4DAA0C"}
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../../src/errors/errors.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4DAA0C;AAC1C,yEAAuD"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PathAlreadyContainsFilenameError = void 0;
|
|
4
|
+
class PathAlreadyContainsFilenameError extends Error {
|
|
5
|
+
constructor(message) {
|
|
6
|
+
super(message);
|
|
7
|
+
// Set the prototype explicitly.
|
|
8
|
+
// As specified in the documentation in TypeScript
|
|
9
|
+
// https://github.com/Microsoft/TypeScript/wiki/Breaking-Changes#extending-built-ins-like-error-array-and-map-may-no-longer-work
|
|
10
|
+
Object.setPrototypeOf(this, PathAlreadyContainsFilenameError.prototype);
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
exports.PathAlreadyContainsFilenameError = PathAlreadyContainsFilenameError;
|
|
14
|
+
//# sourceMappingURL=path-already-contains-filename.error.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"path-already-contains-filename.error.js","sourceRoot":"","sources":["../../../../src/errors/path-already-contains-filename.error.ts"],"names":[],"mappings":";;;AAAA,MAAa,gCAAiC,SAAQ,KAAK;IACvD,YAAmB,OAAe;QAC9B,KAAK,CAAC,OAAO,CAAC,CAAC;QAEf,gCAAgC;QAChC,kDAAkD;QAClD,gIAAgI;QAChI,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,gCAAgC,CAAC,SAAS,CAAC,CAAC;IAC5E,CAAC;CACJ;AATD,4EASC"}
|
|
@@ -15,4 +15,6 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
__exportStar(require("./console.manager"), exports);
|
|
18
|
+
__exportStar(require("./path.manager"), exports);
|
|
19
|
+
__exportStar(require("./shell.manager"), exports);
|
|
18
20
|
//# sourceMappingURL=managers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"managers.js","sourceRoot":"","sources":["../../../../src/managers/managers.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,oDAAkC"}
|
|
1
|
+
{"version":3,"file":"managers.js","sourceRoot":"","sources":["../../../../src/managers/managers.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,oDAAkC;AAClC,iDAA+B;AAC/B,kDAAgC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.PathManager = void 0;
|
|
10
|
+
const tsyringe_1 = require("tsyringe");
|
|
11
|
+
const path_already_contains_filename_error_1 = require("../errors/path-already-contains-filename.error");
|
|
12
|
+
let PathManager = class PathManager {
|
|
13
|
+
getCurrentExecutionDirectory() {
|
|
14
|
+
return process.cwd();
|
|
15
|
+
}
|
|
16
|
+
getPathRelativeToCurrentExecutionDirectory(path, filename) {
|
|
17
|
+
const currentExecutionDirectory = this.getCurrentExecutionDirectory();
|
|
18
|
+
// If it starts with a "/", remove this character.
|
|
19
|
+
path = path.replace(/^\//, '');
|
|
20
|
+
// If it ends with a "/", remove this character.
|
|
21
|
+
path = path.replace(/\/$/, '');
|
|
22
|
+
// If path already ends with a filename and a filename was also provided, throw an error
|
|
23
|
+
if (filename) {
|
|
24
|
+
if (path.match(/\.\w+$/)) {
|
|
25
|
+
throw new path_already_contains_filename_error_1.PathAlreadyContainsFilenameError(`The path '${path}' already contains a filename. Cannot add filename: '${filename}'.`);
|
|
26
|
+
}
|
|
27
|
+
filename = filename.replace(/^\//, '');
|
|
28
|
+
path += `/${filename}`;
|
|
29
|
+
}
|
|
30
|
+
return currentExecutionDirectory + "/" + path;
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
exports.PathManager = PathManager;
|
|
34
|
+
exports.PathManager = PathManager = __decorate([
|
|
35
|
+
(0, tsyringe_1.injectable)()
|
|
36
|
+
], PathManager);
|
|
37
|
+
//# sourceMappingURL=path.manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"path.manager.js","sourceRoot":"","sources":["../../../../src/managers/path.manager.ts"],"names":[],"mappings":";;;;;;;;;AAAA,uCAAoC;AACpC,yGAAgG;AAGzF,IAAM,WAAW,GAAjB,MAAM,WAAW;IACpB,4BAA4B;QACxB,OAAO,OAAO,CAAC,GAAG,EAAE,CAAC;IACzB,CAAC;IAED,0CAA0C,CAAC,IAAY,EAAE,QAAiB;QACtE,MAAM,yBAAyB,GAAG,IAAI,CAAC,4BAA4B,EAAE,CAAC;QAEtE,kDAAkD;QAClD,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAE/B,gDAAgD;QAChD,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAE/B,wFAAwF;QACxF,IAAI,QAAQ,EAAE,CAAC;YACX,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACvB,MAAM,IAAI,uEAAgC,CAAC,aAAa,IAAI,wDAAwD,QAAQ,IAAI,CAAC,CAAA;YACrI,CAAC;YAED,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YAEvC,IAAI,IAAI,IAAI,QAAQ,EAAE,CAAA;QAC1B,CAAC;QAED,OAAO,yBAAyB,GAAG,GAAG,GAAG,IAAI,CAAC;IAClD,CAAC;CACJ,CAAA;AA3BY,kCAAW;sBAAX,WAAW;IADvB,IAAA,qBAAU,GAAE;GACA,WAAW,CA2BvB"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.ShellManager = void 0;
|
|
13
|
+
const child_process_1 = require("child_process");
|
|
14
|
+
const console_manager_1 = require("./console.manager");
|
|
15
|
+
const tsyringe_1 = require("tsyringe");
|
|
16
|
+
const path_manager_1 = require("./path.manager");
|
|
17
|
+
let ShellManager = class ShellManager {
|
|
18
|
+
constructor(consoleManager, pathManager) {
|
|
19
|
+
this.consoleManager = consoleManager;
|
|
20
|
+
this.pathManager = pathManager;
|
|
21
|
+
}
|
|
22
|
+
execute(command, options) {
|
|
23
|
+
return new Promise((resolve, reject) => {
|
|
24
|
+
var _a;
|
|
25
|
+
const env = process.env;
|
|
26
|
+
let finalCommand = command;
|
|
27
|
+
const streamStdout = (_a = options === null || options === void 0 ? void 0 : options.streamStdout) !== null && _a !== void 0 ? _a : false;
|
|
28
|
+
const directory = options === null || options === void 0 ? void 0 : options.directory;
|
|
29
|
+
if (directory) {
|
|
30
|
+
const absoluteDirectory = this.pathManager.getPathRelativeToCurrentExecutionDirectory(directory);
|
|
31
|
+
finalCommand = "cd " + absoluteDirectory + " && " + command;
|
|
32
|
+
}
|
|
33
|
+
this.consoleManager.writeLine(finalCommand);
|
|
34
|
+
if (streamStdout) {
|
|
35
|
+
const child = (0, child_process_1.spawn)(finalCommand, [], { shell: true, env });
|
|
36
|
+
child.stdout.on('data', (data) => {
|
|
37
|
+
this.consoleManager.writeLine(`${data}`);
|
|
38
|
+
});
|
|
39
|
+
child.stderr.on('data', (data) => {
|
|
40
|
+
this.consoleManager.writeLine(`Stderr: ${data}`);
|
|
41
|
+
});
|
|
42
|
+
child.on('close', (code) => {
|
|
43
|
+
this.consoleManager.writeLine(`Command exited with code ${code}`);
|
|
44
|
+
if (code !== 0) {
|
|
45
|
+
return reject(code);
|
|
46
|
+
}
|
|
47
|
+
return resolve(code + "");
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
return (0, child_process_1.exec)(finalCommand, { env, maxBuffer: options === null || options === void 0 ? void 0 : options.maxBuffer }, (error, stdout, stderr) => {
|
|
51
|
+
if (error && error.code) {
|
|
52
|
+
this.consoleManager.writeLine("Error: " + error.message);
|
|
53
|
+
return reject(error);
|
|
54
|
+
}
|
|
55
|
+
if (stderr) {
|
|
56
|
+
this.consoleManager.writeLine("Stderr: " + stderr);
|
|
57
|
+
return resolve(stderr);
|
|
58
|
+
}
|
|
59
|
+
this.consoleManager.writeLine(stdout);
|
|
60
|
+
return resolve(stdout);
|
|
61
|
+
});
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
};
|
|
65
|
+
exports.ShellManager = ShellManager;
|
|
66
|
+
exports.ShellManager = ShellManager = __decorate([
|
|
67
|
+
(0, tsyringe_1.injectable)(),
|
|
68
|
+
__metadata("design:paramtypes", [console_manager_1.ConsoleManager, path_manager_1.PathManager])
|
|
69
|
+
], ShellManager);
|
|
70
|
+
//# sourceMappingURL=shell.manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shell.manager.js","sourceRoot":"","sources":["../../../../src/managers/shell.manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../../src/errors/errors.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAC"}
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../../src/errors/errors.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wCAAwC,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export class PathAlreadyContainsFilenameError extends Error {
|
|
2
|
+
constructor(message) {
|
|
3
|
+
super(message);
|
|
4
|
+
// Set the prototype explicitly.
|
|
5
|
+
// As specified in the documentation in TypeScript
|
|
6
|
+
// https://github.com/Microsoft/TypeScript/wiki/Breaking-Changes#extending-built-ins-like-error-array-and-map-may-no-longer-work
|
|
7
|
+
Object.setPrototypeOf(this, PathAlreadyContainsFilenameError.prototype);
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=path-already-contains-filename.error.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"path-already-contains-filename.error.js","sourceRoot":"","sources":["../../../../src/errors/path-already-contains-filename.error.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,gCAAiC,SAAQ,KAAK;IACvD,YAAmB,OAAe;QAC9B,KAAK,CAAC,OAAO,CAAC,CAAC;QAEf,gCAAgC;QAChC,kDAAkD;QAClD,gIAAgI;QAChI,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,gCAAgC,CAAC,SAAS,CAAC,CAAC;IAC5E,CAAC;CACJ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"managers.js","sourceRoot":"","sources":["../../../../src/managers/managers.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC"}
|
|
1
|
+
{"version":3,"file":"managers.js","sourceRoot":"","sources":["../../../../src/managers/managers.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
import { injectable } from "tsyringe";
|
|
8
|
+
import { PathAlreadyContainsFilenameError } from "../errors/path-already-contains-filename.error";
|
|
9
|
+
let PathManager = class PathManager {
|
|
10
|
+
getCurrentExecutionDirectory() {
|
|
11
|
+
return process.cwd();
|
|
12
|
+
}
|
|
13
|
+
getPathRelativeToCurrentExecutionDirectory(path, filename) {
|
|
14
|
+
const currentExecutionDirectory = this.getCurrentExecutionDirectory();
|
|
15
|
+
// If it starts with a "/", remove this character.
|
|
16
|
+
path = path.replace(/^\//, '');
|
|
17
|
+
// If it ends with a "/", remove this character.
|
|
18
|
+
path = path.replace(/\/$/, '');
|
|
19
|
+
// If path already ends with a filename and a filename was also provided, throw an error
|
|
20
|
+
if (filename) {
|
|
21
|
+
if (path.match(/\.\w+$/)) {
|
|
22
|
+
throw new PathAlreadyContainsFilenameError(`The path '${path}' already contains a filename. Cannot add filename: '${filename}'.`);
|
|
23
|
+
}
|
|
24
|
+
filename = filename.replace(/^\//, '');
|
|
25
|
+
path += `/${filename}`;
|
|
26
|
+
}
|
|
27
|
+
return currentExecutionDirectory + "/" + path;
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
PathManager = __decorate([
|
|
31
|
+
injectable()
|
|
32
|
+
], PathManager);
|
|
33
|
+
export { PathManager };
|
|
34
|
+
//# sourceMappingURL=path.manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"path.manager.js","sourceRoot":"","sources":["../../../../src/managers/path.manager.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,UAAU,CAAC;AACpC,OAAO,EAAC,gCAAgC,EAAC,MAAM,gDAAgD,CAAC;AAGzF,IAAM,WAAW,GAAjB,MAAM,WAAW;IACpB,4BAA4B;QACxB,OAAO,OAAO,CAAC,GAAG,EAAE,CAAC;IACzB,CAAC;IAED,0CAA0C,CAAC,IAAY,EAAE,QAAiB;QACtE,MAAM,yBAAyB,GAAG,IAAI,CAAC,4BAA4B,EAAE,CAAC;QAEtE,kDAAkD;QAClD,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAE/B,gDAAgD;QAChD,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAE/B,wFAAwF;QACxF,IAAI,QAAQ,EAAE,CAAC;YACX,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACvB,MAAM,IAAI,gCAAgC,CAAC,aAAa,IAAI,wDAAwD,QAAQ,IAAI,CAAC,CAAA;YACrI,CAAC;YAED,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YAEvC,IAAI,IAAI,IAAI,QAAQ,EAAE,CAAA;QAC1B,CAAC;QAED,OAAO,yBAAyB,GAAG,GAAG,GAAG,IAAI,CAAC;IAClD,CAAC;CACJ,CAAA;AA3BY,WAAW;IADvB,UAAU,EAAE;GACA,WAAW,CA2BvB"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
+
};
|
|
10
|
+
import { exec, spawn } from "child_process";
|
|
11
|
+
import { ConsoleManager } from "./console.manager";
|
|
12
|
+
import { injectable } from "tsyringe";
|
|
13
|
+
import { PathManager } from "./path.manager";
|
|
14
|
+
let ShellManager = class ShellManager {
|
|
15
|
+
constructor(consoleManager, pathManager) {
|
|
16
|
+
this.consoleManager = consoleManager;
|
|
17
|
+
this.pathManager = pathManager;
|
|
18
|
+
}
|
|
19
|
+
execute(command, options) {
|
|
20
|
+
return new Promise((resolve, reject) => {
|
|
21
|
+
var _a;
|
|
22
|
+
const env = process.env;
|
|
23
|
+
let finalCommand = command;
|
|
24
|
+
const streamStdout = (_a = options === null || options === void 0 ? void 0 : options.streamStdout) !== null && _a !== void 0 ? _a : false;
|
|
25
|
+
const directory = options === null || options === void 0 ? void 0 : options.directory;
|
|
26
|
+
if (directory) {
|
|
27
|
+
const absoluteDirectory = this.pathManager.getPathRelativeToCurrentExecutionDirectory(directory);
|
|
28
|
+
finalCommand = "cd " + absoluteDirectory + " && " + command;
|
|
29
|
+
}
|
|
30
|
+
this.consoleManager.writeLine(finalCommand);
|
|
31
|
+
if (streamStdout) {
|
|
32
|
+
const child = spawn(finalCommand, [], { shell: true, env });
|
|
33
|
+
child.stdout.on('data', (data) => {
|
|
34
|
+
this.consoleManager.writeLine(`${data}`);
|
|
35
|
+
});
|
|
36
|
+
child.stderr.on('data', (data) => {
|
|
37
|
+
this.consoleManager.writeLine(`Stderr: ${data}`);
|
|
38
|
+
});
|
|
39
|
+
child.on('close', (code) => {
|
|
40
|
+
this.consoleManager.writeLine(`Command exited with code ${code}`);
|
|
41
|
+
if (code !== 0) {
|
|
42
|
+
return reject(code);
|
|
43
|
+
}
|
|
44
|
+
return resolve(code + "");
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
return exec(finalCommand, { env, maxBuffer: options === null || options === void 0 ? void 0 : options.maxBuffer }, (error, stdout, stderr) => {
|
|
48
|
+
if (error && error.code) {
|
|
49
|
+
this.consoleManager.writeLine("Error: " + error.message);
|
|
50
|
+
return reject(error);
|
|
51
|
+
}
|
|
52
|
+
if (stderr) {
|
|
53
|
+
this.consoleManager.writeLine("Stderr: " + stderr);
|
|
54
|
+
return resolve(stderr);
|
|
55
|
+
}
|
|
56
|
+
this.consoleManager.writeLine(stdout);
|
|
57
|
+
return resolve(stdout);
|
|
58
|
+
});
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
};
|
|
62
|
+
ShellManager = __decorate([
|
|
63
|
+
injectable(),
|
|
64
|
+
__metadata("design:paramtypes", [ConsoleManager, PathManager])
|
|
65
|
+
], ShellManager);
|
|
66
|
+
export { ShellManager };
|
|
67
|
+
//# sourceMappingURL=shell.manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shell.manager.js","sourceRoot":"","sources":["../../../../src/managers/shell.manager.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAC,IAAI,EAAE,KAAK,EAAC,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAC,cAAc,EAAC,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAC,UAAU,EAAC,MAAM,UAAU,CAAC;AACpC,OAAO,EAAC,WAAW,EAAC,MAAM,gBAAgB,CAAC;AAGpC,IAAM,YAAY,GAAlB,MAAM,YAAY;IACrB,YAA6B,cAA8B,EAAmB,WAAwB;QAAzE,mBAAc,GAAd,cAAc,CAAgB;QAAmB,gBAAW,GAAX,WAAW,CAAa;IACtG,CAAC;IAED,OAAO,CAAC,OAAe,EAAE,OAIxB;QACG,OAAO,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;;YAC3C,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;YACxB,IAAI,YAAY,GAAG,OAAO,CAAC;YAE3B,MAAM,YAAY,GAAG,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,YAAY,mCAAI,KAAK,CAAC;YACpD,MAAM,SAAS,GAAG,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,SAAS,CAAC;YAErC,IAAG,SAAS,EAAE,CAAC;gBACX,MAAM,iBAAiB,GAAG,IAAI,CAAC,WAAW,CAAC,0CAA0C,CAAC,SAAS,CAAC,CAAC;gBACjG,YAAY,GAAG,KAAK,GAAG,iBAAiB,GAAG,MAAM,GAAG,OAAO,CAAC;YAChE,CAAC;YAED,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;YAE5C,IAAG,YAAY,EAAE,CAAC;gBACd,MAAM,KAAK,GAAG,KAAK,CAAC,YAAY,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;gBAC5D,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;oBAC7B,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;gBAC7C,CAAC,CAAC,CAAC;gBAEH,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;oBAC7B,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC;gBACrD,CAAC,CAAC,CAAC;gBAEH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;oBACvB,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,4BAA4B,IAAI,EAAE,CAAC,CAAC;oBAElE,IAAG,IAAI,KAAK,CAAC,EAAE,CAAC;wBACZ,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC;oBACxB,CAAC;oBAED,OAAO,OAAO,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC;gBAC9B,CAAC,CAAC,CAAC;YACP,CAAC;YAED,OAAO,IAAI,CAAC,YAAY,EAAE,EAAC,GAAG,EAAE,SAAS,EAAE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,SAAS,EAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;gBACtF,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;oBACtB,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC;oBACzD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;gBACzB,CAAC;gBAED,IAAI,MAAM,EAAE,CAAC;oBACT,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,UAAU,GAAG,MAAM,CAAC,CAAC;oBACnD,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC;gBAC3B,CAAC;gBAED,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;gBACtC,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC;YAC3B,CAAC,CAAC,CAAA;QACN,CAAC,CAAC,CAAA;IACN,CAAC;CACJ,CAAA;AA5DY,YAAY;IADxB,UAAU,EAAE;qCAEoC,cAAc,EAAgC,WAAW;GAD7F,YAAY,CA4DxB"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { ConsoleManager } from "./console.manager";
|
|
2
|
+
import { PathManager } from "./path.manager";
|
|
3
|
+
export declare class ShellManager {
|
|
4
|
+
private readonly consoleManager;
|
|
5
|
+
private readonly pathManager;
|
|
6
|
+
constructor(consoleManager: ConsoleManager, pathManager: PathManager);
|
|
7
|
+
execute(command: string, options?: {
|
|
8
|
+
directory?: string;
|
|
9
|
+
streamStdout?: boolean;
|
|
10
|
+
maxBuffer?: number;
|
|
11
|
+
}): Promise<string>;
|
|
12
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pristine-ts/cli",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.321",
|
|
4
4
|
"description": "",
|
|
5
5
|
"module": "dist/lib/esm/cli.module.js",
|
|
6
6
|
"main": "dist/lib/cjs/cli.module.js",
|
|
@@ -24,11 +24,11 @@
|
|
|
24
24
|
"access": "public"
|
|
25
25
|
},
|
|
26
26
|
"dependencies": {
|
|
27
|
-
"@pristine-ts/common": "^0.0.
|
|
28
|
-
"@pristine-ts/core": "^0.0.
|
|
29
|
-
"@pristine-ts/file": "^0.0.
|
|
30
|
-
"@pristine-ts/logging": "^0.0.
|
|
31
|
-
"@pristine-ts/validation": "^0.0.
|
|
27
|
+
"@pristine-ts/common": "^0.0.321",
|
|
28
|
+
"@pristine-ts/core": "^0.0.321",
|
|
29
|
+
"@pristine-ts/file": "^0.0.321",
|
|
30
|
+
"@pristine-ts/logging": "^0.0.321",
|
|
31
|
+
"@pristine-ts/validation": "^0.0.321",
|
|
32
32
|
"class-transformer": "^0.5.1"
|
|
33
33
|
},
|
|
34
34
|
"jest": {
|
|
@@ -65,5 +65,5 @@
|
|
|
65
65
|
"src/*.{js,ts}"
|
|
66
66
|
]
|
|
67
67
|
},
|
|
68
|
-
"gitHead": "
|
|
68
|
+
"gitHead": "0bac47f1253fd813991bcdbae2a75b0dd6572c20"
|
|
69
69
|
}
|