@servicetitan/startup 22.2.0 → 22.2.1
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/cli/commands/index.d.ts +1 -0
- package/dist/cli/commands/index.d.ts.map +1 -1
- package/dist/cli/commands/index.js +1 -0
- package/dist/cli/commands/index.js.map +1 -1
- package/dist/cli/commands/mfe-publish.d.ts +36 -0
- package/dist/cli/commands/mfe-publish.d.ts.map +1 -0
- package/dist/cli/commands/mfe-publish.js +268 -0
- package/dist/cli/commands/mfe-publish.js.map +1 -0
- package/dist/cli/index.js +6 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/utils/cli-git.d.ts +3 -0
- package/dist/cli/utils/cli-git.d.ts.map +1 -0
- package/dist/cli/utils/cli-git.js +13 -0
- package/dist/cli/utils/cli-git.js.map +1 -0
- package/dist/cli/utils/cli-npm.d.ts +7 -0
- package/dist/cli/utils/cli-npm.d.ts.map +1 -0
- package/dist/cli/utils/cli-npm.js +55 -0
- package/dist/cli/utils/cli-npm.js.map +1 -0
- package/dist/cli/utils/cli-os.d.ts +4 -0
- package/dist/cli/utils/cli-os.d.ts.map +1 -0
- package/dist/cli/utils/cli-os.js +56 -0
- package/dist/cli/utils/cli-os.js.map +1 -0
- package/package.json +7 -7
- package/src/cli/commands/index.ts +1 -0
- package/src/cli/commands/mfe-publish.ts +317 -0
- package/src/cli/index.ts +12 -0
- package/src/cli/utils/cli-git.ts +9 -0
- package/src/cli/utils/cli-npm.ts +55 -0
- package/src/cli/utils/cli-os.ts +76 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,kBAAkB,CAAC;AACjC,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,mBAAmB,CAAC;AAClC,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,kBAAkB,CAAC;AACjC,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,mBAAmB,CAAC;AAClC,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAE9B,MAAM,WAAW,OAAO;IACpB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5B"}
|
|
@@ -22,4 +22,5 @@ __exportStar(require("./prepare-package"), exports);
|
|
|
22
22
|
__exportStar(require("./start"), exports);
|
|
23
23
|
__exportStar(require("./tests"), exports);
|
|
24
24
|
__exportStar(require("./styles-check"), exports);
|
|
25
|
+
__exportStar(require("./mfe-publish"), exports);
|
|
25
26
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cli/commands/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0CAAwB;AACxB,mDAAiC;AACjC,yCAAuB;AACvB,yCAAuB;AACvB,oDAAkC;AAClC,0CAAwB;AACxB,0CAAwB;AACxB,iDAA+B"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cli/commands/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0CAAwB;AACxB,mDAAiC;AACjC,yCAAuB;AACvB,yCAAuB;AACvB,oDAAkC;AAClC,0CAAwB;AACxB,0CAAwB;AACxB,iDAA+B;AAC/B,gDAA8B"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { Command } from '.';
|
|
2
|
+
interface ArgsPackagePublish {
|
|
3
|
+
build?: string;
|
|
4
|
+
dry?: boolean;
|
|
5
|
+
force?: boolean;
|
|
6
|
+
branch?: string;
|
|
7
|
+
tag?: string | false;
|
|
8
|
+
noTag?: string;
|
|
9
|
+
}
|
|
10
|
+
interface ArgsPackageClean {
|
|
11
|
+
count?: number;
|
|
12
|
+
}
|
|
13
|
+
interface Args extends ArgsPackagePublish, ArgsPackageClean {
|
|
14
|
+
clean?: boolean;
|
|
15
|
+
scope?: string | string[];
|
|
16
|
+
}
|
|
17
|
+
export declare class MFEPublish implements Command {
|
|
18
|
+
private args;
|
|
19
|
+
constructor(args: Args);
|
|
20
|
+
execute(): Promise<void>;
|
|
21
|
+
}
|
|
22
|
+
export declare class MFEPackagePublish implements Command {
|
|
23
|
+
private args;
|
|
24
|
+
constructor(args: ArgsPackagePublish);
|
|
25
|
+
execute(): Promise<void>;
|
|
26
|
+
private getPublishData;
|
|
27
|
+
}
|
|
28
|
+
export declare class MFEPackageClean implements Command {
|
|
29
|
+
private args;
|
|
30
|
+
constructor(args: ArgsPackageClean);
|
|
31
|
+
execute(): Promise<void>;
|
|
32
|
+
private getCleanData;
|
|
33
|
+
private getBranchedVersions;
|
|
34
|
+
}
|
|
35
|
+
export {};
|
|
36
|
+
//# sourceMappingURL=mfe-publish.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mfe-publish.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/mfe-publish.ts"],"names":[],"mappings":"AAqBA,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,CAAC;AAE5B,UAAU,kBAAkB;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,UAAU,gBAAgB;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,UAAU,IAAK,SAAQ,kBAAkB,EAAE,gBAAgB;IACvD,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;CAC7B;AAED,qBAAa,UAAW,YAAW,OAAO;IAC1B,OAAO,CAAC,IAAI;gBAAJ,IAAI,EAAE,IAAI;IAGxB,OAAO;CAmChB;AAED,qBAAa,iBAAkB,YAAW,OAAO;IACjC,OAAO,CAAC,IAAI;gBAAJ,IAAI,EAAE,kBAAkB;IAGtC,OAAO;IAsDb,OAAO,CAAC,cAAc;CA4CzB;AAED,qBAAa,eAAgB,YAAW,OAAO;IAC/B,OAAO,CAAC,IAAI;gBAAJ,IAAI,EAAE,gBAAgB;IAGpC,OAAO;IA+Cb,OAAO,CAAC,YAAY;IAgBpB,OAAO,CAAC,mBAAmB;CAqD9B"}
|
|
@@ -0,0 +1,268 @@
|
|
|
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
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
12
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
13
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
14
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
15
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
16
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
17
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
18
|
+
});
|
|
19
|
+
};
|
|
20
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
21
|
+
exports.MFEPackageClean = exports.MFEPackagePublish = exports.MFEPublish = void 0;
|
|
22
|
+
const exec = require('@lerna/exec');
|
|
23
|
+
const path = require('path');
|
|
24
|
+
const utils_1 = require("../../utils");
|
|
25
|
+
const cli_git_1 = require("../utils/cli-git");
|
|
26
|
+
const cli_npm_1 = require("../utils/cli-npm");
|
|
27
|
+
class MFEPublish {
|
|
28
|
+
constructor(args) {
|
|
29
|
+
Object.defineProperty(this, "args", {
|
|
30
|
+
enumerable: true,
|
|
31
|
+
configurable: true,
|
|
32
|
+
writable: true,
|
|
33
|
+
value: args
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
execute() {
|
|
37
|
+
var _a;
|
|
38
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
39
|
+
let packages = (_a = (0, utils_1.splitPackagesByType)((0, utils_1.getPackages)())[utils_1.PackageType.Webpack]) !== null && _a !== void 0 ? _a : [];
|
|
40
|
+
packages = packages.filter(p => {
|
|
41
|
+
var _a;
|
|
42
|
+
const packageJson = (0, utils_1.readJson)(path.join(p.location, 'package.json'));
|
|
43
|
+
return ((_a = packageJson === null || packageJson === void 0 ? void 0 : packageJson.cli) === null || _a === void 0 ? void 0 : _a['web-component']) === true;
|
|
44
|
+
});
|
|
45
|
+
if (this.args.scope) {
|
|
46
|
+
packages = packages.filter(p => Array.isArray(this.args.scope)
|
|
47
|
+
? this.args.scope.includes(p.name)
|
|
48
|
+
: this.args.scope === p.name);
|
|
49
|
+
}
|
|
50
|
+
if (!packages.length) {
|
|
51
|
+
throw new Error('no packages found for publication');
|
|
52
|
+
}
|
|
53
|
+
yield exec({
|
|
54
|
+
'cmd': `startup mfe-package-${this.args.clean ? 'clean' : 'publish'}`,
|
|
55
|
+
'scope': packages.map(({ name }) => name),
|
|
56
|
+
'stream': true,
|
|
57
|
+
'--': [
|
|
58
|
+
...[this.args.build ? `--build ${this.args.build}` : undefined],
|
|
59
|
+
...[this.args.branch ? `--branch ${this.args.branch}` : undefined],
|
|
60
|
+
...[this.args.tag ? `--tag ${this.args.tag}` : undefined],
|
|
61
|
+
...[this.args.tag === false ? `--no-tag` : undefined],
|
|
62
|
+
...[this.args.dry ? '--dry' : undefined],
|
|
63
|
+
...[this.args.force ? '--force' : undefined],
|
|
64
|
+
...[this.args.count ? `--count ${this.args.count}` : undefined],
|
|
65
|
+
].filter(item => item),
|
|
66
|
+
});
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
__decorate([
|
|
71
|
+
utils_1.logErrors,
|
|
72
|
+
__metadata("design:type", Function),
|
|
73
|
+
__metadata("design:paramtypes", []),
|
|
74
|
+
__metadata("design:returntype", Promise)
|
|
75
|
+
], MFEPublish.prototype, "execute", null);
|
|
76
|
+
exports.MFEPublish = MFEPublish;
|
|
77
|
+
class MFEPackagePublish {
|
|
78
|
+
constructor(args) {
|
|
79
|
+
Object.defineProperty(this, "args", {
|
|
80
|
+
enumerable: true,
|
|
81
|
+
configurable: true,
|
|
82
|
+
writable: true,
|
|
83
|
+
value: args
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
execute() {
|
|
87
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
88
|
+
if (!(0, utils_1.isWebComponent)()) {
|
|
89
|
+
throw new Error('only web-components can be published');
|
|
90
|
+
}
|
|
91
|
+
const data = this.getPublishData();
|
|
92
|
+
const packageJson = (0, utils_1.readJson)('package.json');
|
|
93
|
+
const packageName = packageJson.name;
|
|
94
|
+
if (!data.version) {
|
|
95
|
+
utils_1.log.info(`no build version found - skip publishing`);
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
if (!data.isBranchConfigured && !data.force) {
|
|
99
|
+
utils_1.log.info(`branch is not configured for publishing, use --force flag to publish if needed`);
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
const versions = (0, cli_npm_1.npmGetPackageVersions)(data.registry, packageName);
|
|
103
|
+
if (versions.includes(data.version)) {
|
|
104
|
+
utils_1.log.info(`version ${data.version} of ${packageName} is already published, skipping publish`);
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
107
|
+
yield (0, cli_npm_1.npmPackageSet)('version', data.version);
|
|
108
|
+
yield (0, cli_npm_1.npmPackageSet)('publishConfig.registry', data.registry);
|
|
109
|
+
if (!packageJson.files) {
|
|
110
|
+
yield (0, cli_npm_1.npmPackageSet)('files[0]', 'dist');
|
|
111
|
+
yield (0, cli_npm_1.npmPackageSet)('files[1]', 'package.json');
|
|
112
|
+
}
|
|
113
|
+
if (data.dry) {
|
|
114
|
+
yield (0, cli_npm_1.npmPublishDry)();
|
|
115
|
+
}
|
|
116
|
+
else {
|
|
117
|
+
yield (0, cli_npm_1.npmPublish)(data.tag);
|
|
118
|
+
}
|
|
119
|
+
utils_1.log.info(`packages ${packageJson.name} is published ${data.dry ? '(dry) ' : ''}with version ${data.version}`);
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
getPublishData() {
|
|
123
|
+
var _a, _b;
|
|
124
|
+
const cli = this.args;
|
|
125
|
+
const branch = (_a = cli.branch) !== null && _a !== void 0 ? _a : (0, cli_git_1.gitGetBranch)();
|
|
126
|
+
const branchConfig = getBranchConfigs()[branch];
|
|
127
|
+
let buildVersion = cli.build;
|
|
128
|
+
if (!buildVersion) {
|
|
129
|
+
buildVersion = `${branch}.${(0, cli_git_1.gitGetCommitHash)()}`;
|
|
130
|
+
}
|
|
131
|
+
if (!buildVersion) {
|
|
132
|
+
throw new Error('build version is not set');
|
|
133
|
+
}
|
|
134
|
+
let tag;
|
|
135
|
+
if (cli.tag === false) {
|
|
136
|
+
tag = '';
|
|
137
|
+
}
|
|
138
|
+
else if (cli.tag) {
|
|
139
|
+
tag = cli.tag;
|
|
140
|
+
}
|
|
141
|
+
else {
|
|
142
|
+
tag = (_b = branchConfig === null || branchConfig === void 0 ? void 0 : branchConfig.tag) !== null && _b !== void 0 ? _b : '';
|
|
143
|
+
}
|
|
144
|
+
const registry = 'https://verdaccio.servicetitan.com';
|
|
145
|
+
return {
|
|
146
|
+
tag,
|
|
147
|
+
version: '0.0.0-' + buildVersion,
|
|
148
|
+
buildVersion,
|
|
149
|
+
registry,
|
|
150
|
+
dry: !!cli.dry,
|
|
151
|
+
force: !!cli.force,
|
|
152
|
+
isBranchConfigured: !!branchConfig,
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
__decorate([
|
|
157
|
+
utils_1.logErrors,
|
|
158
|
+
__metadata("design:type", Function),
|
|
159
|
+
__metadata("design:paramtypes", []),
|
|
160
|
+
__metadata("design:returntype", Promise)
|
|
161
|
+
], MFEPackagePublish.prototype, "execute", null);
|
|
162
|
+
exports.MFEPackagePublish = MFEPackagePublish;
|
|
163
|
+
class MFEPackageClean {
|
|
164
|
+
constructor(args) {
|
|
165
|
+
Object.defineProperty(this, "args", {
|
|
166
|
+
enumerable: true,
|
|
167
|
+
configurable: true,
|
|
168
|
+
writable: true,
|
|
169
|
+
value: args
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
execute() {
|
|
173
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
174
|
+
if (!(0, utils_1.isWebComponent)()) {
|
|
175
|
+
throw new Error('only web-components can be cleaned');
|
|
176
|
+
}
|
|
177
|
+
const data = this.getCleanData();
|
|
178
|
+
const packageJson = (0, utils_1.readJson)('package.json');
|
|
179
|
+
const packageName = packageJson.name;
|
|
180
|
+
const branchedVersions = this.getBranchedVersions(packageName, data.registry);
|
|
181
|
+
utils_1.log.info(`branched versions (${data.count}):`, JSON.stringify(branchedVersions, undefined, 4));
|
|
182
|
+
const branchedVersionsToClean = {};
|
|
183
|
+
for (const branch of Object.keys(branchedVersions)) {
|
|
184
|
+
// limit branches for now
|
|
185
|
+
if (!branchedVersions[branch] || !data.branches.includes(branch)) {
|
|
186
|
+
continue;
|
|
187
|
+
}
|
|
188
|
+
branchedVersions[branch].sort(([, adt], [, bdt]) => (adt > bdt ? -1 : 1));
|
|
189
|
+
branchedVersionsToClean[branch] = branchedVersions[branch].slice(data.count);
|
|
190
|
+
}
|
|
191
|
+
utils_1.log.info('found versions for unpublish:', JSON.stringify(branchedVersionsToClean, undefined, 4));
|
|
192
|
+
const unVersions = Object.keys(branchedVersionsToClean).reduce((out, br) => [...out, ...branchedVersionsToClean[br].map(([v]) => v)], []);
|
|
193
|
+
for (const version of unVersions) {
|
|
194
|
+
try {
|
|
195
|
+
// eslint-disable-next-line no-await-in-loop
|
|
196
|
+
yield (0, cli_npm_1.npmUnpublish)(data.registry, packageName, version);
|
|
197
|
+
}
|
|
198
|
+
catch (_a) {
|
|
199
|
+
utils_1.log.error(`error while removing ${packageName} version ${version}`);
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
});
|
|
203
|
+
}
|
|
204
|
+
getCleanData() {
|
|
205
|
+
let count = this.args.count;
|
|
206
|
+
if (!count) {
|
|
207
|
+
count = 5;
|
|
208
|
+
}
|
|
209
|
+
const registry = 'https://verdaccio.servicetitan.com';
|
|
210
|
+
return { count, registry, branches: Object.keys(getBranchConfigs()) };
|
|
211
|
+
}
|
|
212
|
+
getBranchedVersions(packageName, registry) {
|
|
213
|
+
const versions = (0, cli_npm_1.npmGetPackageVersionDates)(registry, packageName);
|
|
214
|
+
const branchedVersions = {};
|
|
215
|
+
const unknownVersions = [];
|
|
216
|
+
const addVersion = (branch, version, dt) => {
|
|
217
|
+
if (!branchedVersions[branch]) {
|
|
218
|
+
branchedVersions[branch] = [];
|
|
219
|
+
}
|
|
220
|
+
branchedVersions[branch].push([version, dt]);
|
|
221
|
+
};
|
|
222
|
+
for (const [version, dt] of versions) {
|
|
223
|
+
if (!version.startsWith('0.0.0-')) {
|
|
224
|
+
continue;
|
|
225
|
+
}
|
|
226
|
+
const buildVersion = version.replace('0.0.0-', '');
|
|
227
|
+
if (/^(\d+)\.(\d+)\.(\d+)$/.test(buildVersion)) {
|
|
228
|
+
// master version generated by nerdbank versioning
|
|
229
|
+
addVersion('master', version, dt);
|
|
230
|
+
continue;
|
|
231
|
+
}
|
|
232
|
+
const match1 = buildVersion.match(/^(\d+)\.(\d+)\.(\d+)-([\dA-Za-z\-]+).([\dA-Za-z]+)$/);
|
|
233
|
+
if (match1 === null || match1 === void 0 ? void 0 : match1.length) {
|
|
234
|
+
// branch version generated by nerdbank versioning
|
|
235
|
+
addVersion(match1[4], version, dt);
|
|
236
|
+
continue;
|
|
237
|
+
}
|
|
238
|
+
const match2 = buildVersion.match(/^([\dA-Za-z\-]+).([\dA-Za-z]+)$/);
|
|
239
|
+
if (match2 === null || match2 === void 0 ? void 0 : match2.length) {
|
|
240
|
+
// branch version generated by mfe-publisher versioning
|
|
241
|
+
addVersion(match2[1], version, dt);
|
|
242
|
+
continue;
|
|
243
|
+
}
|
|
244
|
+
unknownVersions.push(version);
|
|
245
|
+
}
|
|
246
|
+
if (unknownVersions.length) {
|
|
247
|
+
utils_1.log.info('unknown versions:', unknownVersions.join());
|
|
248
|
+
}
|
|
249
|
+
return branchedVersions;
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
__decorate([
|
|
253
|
+
utils_1.logErrors,
|
|
254
|
+
__metadata("design:type", Function),
|
|
255
|
+
__metadata("design:paramtypes", []),
|
|
256
|
+
__metadata("design:returntype", Promise)
|
|
257
|
+
], MFEPackageClean.prototype, "execute", null);
|
|
258
|
+
exports.MFEPackageClean = MFEPackageClean;
|
|
259
|
+
const getBranchConfigs = () => {
|
|
260
|
+
// ToDo: add ability to configure it in a package.json
|
|
261
|
+
return {
|
|
262
|
+
develop: { tag: 'dev' },
|
|
263
|
+
dev: { tag: 'dev' },
|
|
264
|
+
next: { tag: 'next' },
|
|
265
|
+
master: { tag: 'prod' },
|
|
266
|
+
};
|
|
267
|
+
};
|
|
268
|
+
//# sourceMappingURL=mfe-publish.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mfe-publish.js","sourceRoot":"","sources":["../../../src/cli/commands/mfe-publish.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/index.js
CHANGED
|
@@ -21,6 +21,12 @@ function getCommand(name) {
|
|
|
21
21
|
return commands_1.Tests;
|
|
22
22
|
case 'styles-check':
|
|
23
23
|
return commands_1.StylesCheck;
|
|
24
|
+
case 'mfe-publish':
|
|
25
|
+
return commands_1.MFEPublish;
|
|
26
|
+
case 'mfe-package-publish':
|
|
27
|
+
return commands_1.MFEPackagePublish;
|
|
28
|
+
case 'mfe-package-clean':
|
|
29
|
+
return commands_1.MFEPackageClean;
|
|
24
30
|
default:
|
|
25
31
|
utils_1.log.error(`${name}: command not found!`);
|
|
26
32
|
process.exit(127);
|
package/dist/cli/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";;AAAA,iCAAwC;AAExC,oCAA+B;AAC/B,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";;AAAA,iCAAwC;AAExC,oCAA+B;AAC/B,yCAaoB;AAMpB,SAAS,UAAU,CAAC,IAAY;IAC5B,QAAQ,IAAI,EAAE;QACV,KAAK,MAAM;YACP,OAAO,eAAI,CAAC;QAEhB,KAAK,iBAAiB;YAClB,OAAO,yBAAc,CAAC;QAE1B,KAAK,OAAO;YACR,OAAO,gBAAK,CAAC;QAEjB,KAAK,OAAO;YACR,OAAO,gBAAK,CAAC;QAEjB,KAAK,gBAAgB;YACjB,OAAO,wBAAa,CAAC;QAEzB,KAAK,MAAM;YACP,OAAO,eAAI,CAAC;QAEhB,KAAK,MAAM;YACP,OAAO,gBAAK,CAAC;QAEjB,KAAK,cAAc;YACf,OAAO,sBAAW,CAAC;QAEvB,KAAK,aAAa;YACd,OAAO,qBAAU,CAAC;QAEtB,KAAK,qBAAqB;YACtB,OAAO,4BAAiB,CAAC;QAE7B,KAAK,mBAAmB;YACpB,OAAO,0BAAe,CAAC;QAE3B;YACI,WAAG,CAAC,KAAK,CAAC,GAAG,IAAI,sBAAsB,CAAC,CAAC;YACzC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;KACzB;AACL,CAAC;AAED,MAAM,QAAQ,GAAG,YAAiB,CAAC;AAEnC,gEAAgE;AAChE,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,iCAAM,QAAQ,KAAE,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAG;KAC9E,OAAO,EAAE;KACT,KAAK,CAAC,GAAG,EAAE;IACR,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACpB,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli-git.d.ts","sourceRoot":"","sources":["../../../src/cli/utils/cli-git.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,YAAY,QAAO,MAE/B,CAAC;AAEF,eAAO,MAAM,gBAAgB,QAAO,MAEnC,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.gitGetCommitHash = exports.gitGetBranch = void 0;
|
|
4
|
+
const cli_os_1 = require("./cli-os");
|
|
5
|
+
const gitGetBranch = () => {
|
|
6
|
+
return (0, cli_os_1.runCommandOutput)('git rev-parse --abbrev-ref HEAD').trim();
|
|
7
|
+
};
|
|
8
|
+
exports.gitGetBranch = gitGetBranch;
|
|
9
|
+
const gitGetCommitHash = () => {
|
|
10
|
+
return (0, cli_os_1.runCommandOutput)('git rev-parse --short HEAD').trim();
|
|
11
|
+
};
|
|
12
|
+
exports.gitGetCommitHash = gitGetCommitHash;
|
|
13
|
+
//# sourceMappingURL=cli-git.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli-git.js","sourceRoot":"","sources":["../../../src/cli/utils/cli-git.ts"],"names":[],"mappings":";;;AAAA,qCAA4C;AAErC,MAAM,YAAY,GAAG,GAAW,EAAE;IACrC,OAAO,IAAA,yBAAgB,EAAC,iCAAiC,CAAC,CAAC,IAAI,EAAE,CAAC;AACtE,CAAC,CAAC;AAFW,QAAA,YAAY,gBAEvB;AAEK,MAAM,gBAAgB,GAAG,GAAW,EAAE;IACzC,OAAO,IAAA,yBAAgB,EAAC,4BAA4B,CAAC,CAAC,IAAI,EAAE,CAAC;AACjE,CAAC,CAAC;AAFW,QAAA,gBAAgB,oBAE3B"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export declare const npmGetPackageVersions: (registry: string, packageName: string) => string[];
|
|
2
|
+
export declare const npmGetPackageVersionDates: (registry: string, packageName: string) => [string, Date][];
|
|
3
|
+
export declare const npmUnpublish: (registry: string, packageName: string, packageVersion: string) => Promise<void>;
|
|
4
|
+
export declare const npmPublishDry: () => Promise<void>;
|
|
5
|
+
export declare const npmPublish: (tag?: string) => Promise<void>;
|
|
6
|
+
export declare const npmPackageSet: (key: string, value: string) => Promise<void>;
|
|
7
|
+
//# sourceMappingURL=cli-npm.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli-npm.d.ts","sourceRoot":"","sources":["../../../src/cli/utils/cli-npm.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,qBAAqB,aAAc,MAAM,eAAe,MAAM,KAAG,MAAM,EAWnF,CAAC;AAEF,eAAO,MAAM,yBAAyB,aACxB,MAAM,eACH,MAAM,KACpB,CAAC,MAAM,EAAE,IAAI,CAAC,EAchB,CAAC;AAEF,eAAO,MAAM,YAAY,aACX,MAAM,eACH,MAAM,kBACH,MAAM,kBAKzB,CAAC;AAEF,eAAO,MAAM,aAAa,qBAEzB,CAAC;AAEF,eAAO,MAAM,UAAU,SAAgB,MAAM,kBAE5C,CAAC;AAEF,eAAO,MAAM,aAAa,QAAe,MAAM,SAAS,MAAM,kBAE7D,CAAC"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.npmPackageSet = exports.npmPublish = exports.npmPublishDry = exports.npmUnpublish = exports.npmGetPackageVersionDates = exports.npmGetPackageVersions = void 0;
|
|
13
|
+
const cli_os_1 = require("./cli-os");
|
|
14
|
+
const npmGetPackageVersions = (registry, packageName) => {
|
|
15
|
+
try {
|
|
16
|
+
const v = (0, cli_os_1.runCommandOutput)(`npm show ${packageName} versions --registry ${registry} --json`, { timeout: 10000 });
|
|
17
|
+
return JSON.parse(v);
|
|
18
|
+
}
|
|
19
|
+
catch (_a) {
|
|
20
|
+
return [];
|
|
21
|
+
}
|
|
22
|
+
};
|
|
23
|
+
exports.npmGetPackageVersions = npmGetPackageVersions;
|
|
24
|
+
const npmGetPackageVersionDates = (registry, packageName) => {
|
|
25
|
+
try {
|
|
26
|
+
const v = (0, cli_os_1.runCommandOutput)(`npm view ${packageName} time --registry ${registry} --json`, {
|
|
27
|
+
timeout: 10000,
|
|
28
|
+
});
|
|
29
|
+
const map = JSON.parse(v);
|
|
30
|
+
return Object.keys(map).reduce((out, version) => [...out, [version, new Date(map[version])]], []);
|
|
31
|
+
}
|
|
32
|
+
catch (_a) {
|
|
33
|
+
return [];
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
exports.npmGetPackageVersionDates = npmGetPackageVersionDates;
|
|
37
|
+
const npmUnpublish = (registry, packageName, packageVersion) => __awaiter(void 0, void 0, void 0, function* () {
|
|
38
|
+
yield (0, cli_os_1.runCommand)(`npm unpublish ${packageName}@${packageVersion} --registry ${registry}`, {
|
|
39
|
+
timeout: 10000,
|
|
40
|
+
});
|
|
41
|
+
});
|
|
42
|
+
exports.npmUnpublish = npmUnpublish;
|
|
43
|
+
const npmPublishDry = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
44
|
+
yield (0, cli_os_1.runCommand)('npm publish --dry-run');
|
|
45
|
+
});
|
|
46
|
+
exports.npmPublishDry = npmPublishDry;
|
|
47
|
+
const npmPublish = (tag) => __awaiter(void 0, void 0, void 0, function* () {
|
|
48
|
+
yield (0, cli_os_1.runCommand)(['npm publish', !!tag && `--tag ${tag}`]);
|
|
49
|
+
});
|
|
50
|
+
exports.npmPublish = npmPublish;
|
|
51
|
+
const npmPackageSet = (key, value) => __awaiter(void 0, void 0, void 0, function* () {
|
|
52
|
+
yield (0, cli_os_1.runCommand)(`npm pkg set ${key}=${value}`);
|
|
53
|
+
});
|
|
54
|
+
exports.npmPackageSet = npmPackageSet;
|
|
55
|
+
//# sourceMappingURL=cli-npm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli-npm.js","sourceRoot":"","sources":["../../../src/cli/utils/cli-npm.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qCAAwD;AAEjD,MAAM,qBAAqB,GAAG,CAAC,QAAgB,EAAE,WAAmB,EAAY,EAAE;IACrF,IAAI;QACA,MAAM,CAAC,GAAG,IAAA,yBAAgB,EACtB,YAAY,WAAW,wBAAwB,QAAQ,SAAS,EAChE,EAAE,OAAO,EAAE,KAAK,EAAE,CACrB,CAAC;QAEF,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;KACxB;IAAC,WAAM;QACJ,OAAO,EAAE,CAAC;KACb;AACL,CAAC,CAAC;AAXW,QAAA,qBAAqB,yBAWhC;AAEK,MAAM,yBAAyB,GAAG,CACrC,QAAgB,EAChB,WAAmB,EACH,EAAE;IAClB,IAAI;QACA,MAAM,CAAC,GAAG,IAAA,yBAAgB,EAAC,YAAY,WAAW,oBAAoB,QAAQ,SAAS,EAAE;YACrF,OAAO,EAAE,KAAK;SACjB,CAAC,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAE1B,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAC1B,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAC7D,EAAE,CACL,CAAC;KACL;IAAC,WAAM;QACJ,OAAO,EAAE,CAAC;KACb;AACL,CAAC,CAAC;AAjBW,QAAA,yBAAyB,6BAiBpC;AAEK,MAAM,YAAY,GAAG,CACxB,QAAgB,EAChB,WAAmB,EACnB,cAAsB,EACxB,EAAE;IACA,MAAM,IAAA,mBAAU,EAAC,iBAAiB,WAAW,IAAI,cAAc,eAAe,QAAQ,EAAE,EAAE;QACtF,OAAO,EAAE,KAAK;KACjB,CAAC,CAAC;AACP,CAAC,CAAA,CAAC;AARW,QAAA,YAAY,gBAQvB;AAEK,MAAM,aAAa,GAAG,GAAS,EAAE;IACpC,MAAM,IAAA,mBAAU,EAAC,uBAAuB,CAAC,CAAC;AAC9C,CAAC,CAAA,CAAC;AAFW,QAAA,aAAa,iBAExB;AAEK,MAAM,UAAU,GAAG,CAAO,GAAY,EAAE,EAAE;IAC7C,MAAM,IAAA,mBAAU,EAAC,CAAC,aAAa,EAAE,CAAC,CAAC,GAAG,IAAI,SAAS,GAAG,EAAE,CAAC,CAAC,CAAC;AAC/D,CAAC,CAAA,CAAC;AAFW,QAAA,UAAU,cAErB;AAEK,MAAM,aAAa,GAAG,CAAO,GAAW,EAAE,KAAa,EAAE,EAAE;IAC9D,MAAM,IAAA,mBAAU,EAAC,eAAe,GAAG,IAAI,KAAK,EAAE,CAAC,CAAC;AACpD,CAAC,CAAA,CAAC;AAFW,QAAA,aAAa,iBAExB"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { ExecSyncOptionsWithBufferEncoding, SpawnOptionsWithoutStdio } from 'child_process';
|
|
2
|
+
export declare const runCommand: (command: string | (string | false)[], opts?: SpawnOptionsWithoutStdio) => Promise<void>;
|
|
3
|
+
export declare const runCommandOutput: (command: string | (string | false)[], options?: ExecSyncOptionsWithBufferEncoding) => string;
|
|
4
|
+
//# sourceMappingURL=cli-os.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli-os.d.ts","sourceRoot":"","sources":["../../../src/cli/utils/cli-os.ts"],"names":[],"mappings":"AAAA,OAAO,EAEH,iCAAiC,EAEjC,wBAAwB,EAC3B,MAAM,eAAe,CAAC;AAGvB,eAAO,MAAM,UAAU,YACV,MAAM,GAAG,CAAC,MAAM,GAAG,KAAK,CAAC,EAAE,SAC7B,wBAAwB,KAChC,QAAQ,IAAI,CAoCd,CAAC;AAEF,eAAO,MAAM,gBAAgB,YAChB,MAAM,GAAG,CAAC,MAAM,GAAG,KAAK,CAAC,EAAE,YAC1B,iCAAiC,KAC5C,MAuBF,CAAC"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.runCommandOutput = exports.runCommand = void 0;
|
|
4
|
+
const child_process_1 = require("child_process");
|
|
5
|
+
const utils_1 = require("../../utils");
|
|
6
|
+
const runCommand = (command, opts) => {
|
|
7
|
+
return new Promise((resolve, reject) => {
|
|
8
|
+
const commandArray = Array.isArray(command)
|
|
9
|
+
? command
|
|
10
|
+
.filter(c => !!c)
|
|
11
|
+
.map(c => c.toString())
|
|
12
|
+
.join(' ')
|
|
13
|
+
.split(' ')
|
|
14
|
+
: command.split(' ');
|
|
15
|
+
const fullCommand = commandArray.join(' ');
|
|
16
|
+
const commandName = commandArray.shift();
|
|
17
|
+
if (!commandName) {
|
|
18
|
+
reject();
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
utils_1.log.info(`run command ${fullCommand}`);
|
|
22
|
+
const proc = (0, child_process_1.spawn)(commandName, commandArray, opts);
|
|
23
|
+
proc.stdout.pipe(process.stdout);
|
|
24
|
+
proc.stderr.pipe(process.stderr);
|
|
25
|
+
proc.on('exit', function (code) {
|
|
26
|
+
utils_1.log.info(`command finished with code ${code}`, fullCommand);
|
|
27
|
+
if (code) {
|
|
28
|
+
reject();
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
resolve();
|
|
32
|
+
}
|
|
33
|
+
});
|
|
34
|
+
});
|
|
35
|
+
};
|
|
36
|
+
exports.runCommand = runCommand;
|
|
37
|
+
const runCommandOutput = (command, options) => {
|
|
38
|
+
const commandArray = Array.isArray(command)
|
|
39
|
+
? command
|
|
40
|
+
.filter(c => !!c)
|
|
41
|
+
.map(c => c.toString())
|
|
42
|
+
.join(' ')
|
|
43
|
+
.split(' ')
|
|
44
|
+
: command.split(' ');
|
|
45
|
+
const fullCommand = commandArray.join(' ');
|
|
46
|
+
const commandName = commandArray.shift();
|
|
47
|
+
if (!commandName) {
|
|
48
|
+
throw new Error();
|
|
49
|
+
}
|
|
50
|
+
utils_1.log.info(`run command ${fullCommand}`);
|
|
51
|
+
const result = (0, child_process_1.execSync)(fullCommand, options).toString();
|
|
52
|
+
utils_1.log.info('command finished', result);
|
|
53
|
+
return result;
|
|
54
|
+
};
|
|
55
|
+
exports.runCommandOutput = runCommandOutput;
|
|
56
|
+
//# sourceMappingURL=cli-os.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli-os.js","sourceRoot":"","sources":["../../../src/cli/utils/cli-os.ts"],"names":[],"mappings":";;;AAAA,iDAKuB;AACvB,uCAAkC;AAE3B,MAAM,UAAU,GAAG,CACtB,OAAoC,EACpC,IAA+B,EAClB,EAAE;IACf,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACnC,MAAM,YAAY,GAAa,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;YACjD,CAAC,CAAC,OAAO;iBACF,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;iBAChB,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;iBACtB,IAAI,CAAC,GAAG,CAAC;iBACT,KAAK,CAAC,GAAG,CAAC;YACjB,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACzB,MAAM,WAAW,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAE3C,MAAM,WAAW,GAAG,YAAY,CAAC,KAAK,EAAE,CAAC;QAEzC,IAAI,CAAC,WAAW,EAAE;YACd,MAAM,EAAE,CAAC;YAET,OAAO;SACV;QAED,WAAG,CAAC,IAAI,CAAC,eAAe,WAAW,EAAE,CAAC,CAAC;QAEvC,MAAM,IAAI,GAAG,IAAA,qBAAK,EAAC,WAAW,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC;QAEpD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACjC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAEjC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,IAAS;YAC/B,WAAG,CAAC,IAAI,CAAC,8BAA8B,IAAI,EAAE,EAAE,WAAW,CAAC,CAAC;YAE5D,IAAI,IAAI,EAAE;gBACN,MAAM,EAAE,CAAC;aACZ;iBAAM;gBACH,OAAO,EAAE,CAAC;aACb;QACL,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC,CAAC;AAvCW,QAAA,UAAU,cAuCrB;AAEK,MAAM,gBAAgB,GAAG,CAC5B,OAAoC,EACpC,OAA2C,EACrC,EAAE;IACR,MAAM,YAAY,GAAa,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;QACjD,CAAC,CAAC,OAAO;aACF,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;aAChB,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;aACtB,IAAI,CAAC,GAAG,CAAC;aACT,KAAK,CAAC,GAAG,CAAC;QACjB,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACzB,MAAM,WAAW,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAE3C,MAAM,WAAW,GAAG,YAAY,CAAC,KAAK,EAAE,CAAC;IAEzC,IAAI,CAAC,WAAW,EAAE;QACd,MAAM,IAAI,KAAK,EAAE,CAAC;KACrB;IAED,WAAG,CAAC,IAAI,CAAC,eAAe,WAAW,EAAE,CAAC,CAAC;IAEvC,MAAM,MAAM,GAAG,IAAA,wBAAQ,EAAC,WAAW,EAAE,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC;IAEzD,WAAG,CAAC,IAAI,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;IAErC,OAAO,MAAM,CAAC;AAClB,CAAC,CAAC;AA1BW,QAAA,gBAAgB,oBA0B3B"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@servicetitan/startup",
|
|
3
|
-
"version": "22.2.
|
|
3
|
+
"version": "22.2.1",
|
|
4
4
|
"description": "",
|
|
5
5
|
"homepage": "https://docs.st.dev/docs/frontend/startup",
|
|
6
6
|
"repository": {
|
|
@@ -37,8 +37,8 @@
|
|
|
37
37
|
"@jest/core": "~27.5.1",
|
|
38
38
|
"@jest/types": "~27.5.1",
|
|
39
39
|
"@lerna/exec": "~5.6.2",
|
|
40
|
-
"@servicetitan/eslint-config": "22.2.
|
|
41
|
-
"@servicetitan/stylelint-config": "22.2.
|
|
40
|
+
"@servicetitan/eslint-config": "22.2.1",
|
|
41
|
+
"@servicetitan/stylelint-config": "22.2.1",
|
|
42
42
|
"@types/jest": "~27.4.0",
|
|
43
43
|
"chalk": "~4.1.2",
|
|
44
44
|
"chokidar": "~3.5.3",
|
|
@@ -46,7 +46,7 @@
|
|
|
46
46
|
"css-loader": "~6.7.2",
|
|
47
47
|
"deepmerge": "~4.2.2",
|
|
48
48
|
"esbuild-loader": "~2.20.0",
|
|
49
|
-
"eslint": "~8.
|
|
49
|
+
"eslint": "~8.29.0",
|
|
50
50
|
"execa": "~5.1.1",
|
|
51
51
|
"fork-ts-checker-webpack-plugin": "~7.2.13",
|
|
52
52
|
"glob": "~7.2.0",
|
|
@@ -64,7 +64,7 @@
|
|
|
64
64
|
"moment-locales-webpack-plugin": "~1.2.0",
|
|
65
65
|
"portfinder": "~1.0.28",
|
|
66
66
|
"prettier": "~2.7.1",
|
|
67
|
-
"sass": "~1.56.
|
|
67
|
+
"sass": "~1.56.2",
|
|
68
68
|
"sass-loader": "~12.6.0",
|
|
69
69
|
"source-map-loader": "~3.0.1",
|
|
70
70
|
"style-loader": "~3.3.1",
|
|
@@ -81,7 +81,7 @@
|
|
|
81
81
|
"webpack-dev-server": "~3.11.2",
|
|
82
82
|
"webpack-filter-warnings-plugin": "~1.2.1",
|
|
83
83
|
"webpack-merge": "~5.8.0",
|
|
84
|
-
"webpack-virtual-modules": "~0.
|
|
84
|
+
"webpack-virtual-modules": "~0.5.0",
|
|
85
85
|
"worker-loader": "~3.0.8",
|
|
86
86
|
"xhr-mock": "~2.5.1",
|
|
87
87
|
"yargs": "~17.6.2"
|
|
@@ -92,5 +92,5 @@
|
|
|
92
92
|
"cli": {
|
|
93
93
|
"webpack": false
|
|
94
94
|
},
|
|
95
|
-
"gitHead": "
|
|
95
|
+
"gitHead": "e6385a40fd3deb32a0083f5252c74e26172ae227"
|
|
96
96
|
}
|
|
@@ -0,0 +1,317 @@
|
|
|
1
|
+
const exec = require('@lerna/exec');
|
|
2
|
+
const path = require('path');
|
|
3
|
+
|
|
4
|
+
import {
|
|
5
|
+
getPackages,
|
|
6
|
+
logErrors,
|
|
7
|
+
PackageType,
|
|
8
|
+
readJson,
|
|
9
|
+
splitPackagesByType,
|
|
10
|
+
isWebComponent,
|
|
11
|
+
log,
|
|
12
|
+
} from '../../utils';
|
|
13
|
+
import { gitGetBranch, gitGetCommitHash } from '../utils/cli-git';
|
|
14
|
+
import {
|
|
15
|
+
npmGetPackageVersionDates,
|
|
16
|
+
npmGetPackageVersions,
|
|
17
|
+
npmPackageSet,
|
|
18
|
+
npmPublish,
|
|
19
|
+
npmPublishDry,
|
|
20
|
+
npmUnpublish,
|
|
21
|
+
} from '../utils/cli-npm';
|
|
22
|
+
import { Command } from '.';
|
|
23
|
+
|
|
24
|
+
interface ArgsPackagePublish {
|
|
25
|
+
build?: string;
|
|
26
|
+
dry?: boolean;
|
|
27
|
+
force?: boolean;
|
|
28
|
+
branch?: string;
|
|
29
|
+
tag?: string | false;
|
|
30
|
+
noTag?: string;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
interface ArgsPackageClean {
|
|
34
|
+
count?: number;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
interface Args extends ArgsPackagePublish, ArgsPackageClean {
|
|
38
|
+
clean?: boolean;
|
|
39
|
+
scope?: string | string[];
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
export class MFEPublish implements Command {
|
|
43
|
+
constructor(private args: Args) {}
|
|
44
|
+
|
|
45
|
+
@logErrors
|
|
46
|
+
async execute() {
|
|
47
|
+
let packages = splitPackagesByType(getPackages())[PackageType.Webpack] ?? [];
|
|
48
|
+
packages = packages.filter(p => {
|
|
49
|
+
const packageJson = readJson(path.join(p.location, 'package.json'));
|
|
50
|
+
|
|
51
|
+
return packageJson?.cli?.['web-component'] === true;
|
|
52
|
+
});
|
|
53
|
+
|
|
54
|
+
if (this.args.scope) {
|
|
55
|
+
packages = packages.filter(p =>
|
|
56
|
+
Array.isArray(this.args.scope)
|
|
57
|
+
? this.args.scope.includes(p.name)
|
|
58
|
+
: this.args.scope === p.name
|
|
59
|
+
);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
if (!packages.length) {
|
|
63
|
+
throw new Error('no packages found for publication');
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
await exec({
|
|
67
|
+
'cmd': `startup mfe-package-${this.args.clean ? 'clean' : 'publish'}`,
|
|
68
|
+
'scope': packages.map(({ name }) => name),
|
|
69
|
+
'stream': true,
|
|
70
|
+
'--': [
|
|
71
|
+
...[this.args.build ? `--build ${this.args.build}` : undefined],
|
|
72
|
+
...[this.args.branch ? `--branch ${this.args.branch}` : undefined],
|
|
73
|
+
...[this.args.tag ? `--tag ${this.args.tag}` : undefined],
|
|
74
|
+
...[this.args.tag === false ? `--no-tag` : undefined],
|
|
75
|
+
...[this.args.dry ? '--dry' : undefined],
|
|
76
|
+
...[this.args.force ? '--force' : undefined],
|
|
77
|
+
...[this.args.count ? `--count ${this.args.count}` : undefined],
|
|
78
|
+
].filter(item => item),
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
export class MFEPackagePublish implements Command {
|
|
84
|
+
constructor(private args: ArgsPackagePublish) {}
|
|
85
|
+
|
|
86
|
+
@logErrors
|
|
87
|
+
async execute() {
|
|
88
|
+
if (!isWebComponent()) {
|
|
89
|
+
throw new Error('only web-components can be published');
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
const data = this.getPublishData();
|
|
93
|
+
const packageJson = readJson('package.json');
|
|
94
|
+
const packageName = packageJson.name;
|
|
95
|
+
|
|
96
|
+
if (!data.version) {
|
|
97
|
+
log.info(`no build version found - skip publishing`);
|
|
98
|
+
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
if (!data.isBranchConfigured && !data.force) {
|
|
103
|
+
log.info(
|
|
104
|
+
`branch is not configured for publishing, use --force flag to publish if needed`
|
|
105
|
+
);
|
|
106
|
+
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
const versions = npmGetPackageVersions(data.registry, packageName);
|
|
111
|
+
|
|
112
|
+
if (versions.includes(data.version)) {
|
|
113
|
+
log.info(
|
|
114
|
+
`version ${data.version} of ${packageName} is already published, skipping publish`
|
|
115
|
+
);
|
|
116
|
+
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
await npmPackageSet('version', data.version);
|
|
121
|
+
await npmPackageSet('publishConfig.registry', data.registry);
|
|
122
|
+
|
|
123
|
+
if (!packageJson.files) {
|
|
124
|
+
await npmPackageSet('files[0]', 'dist');
|
|
125
|
+
await npmPackageSet('files[1]', 'package.json');
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
if (data.dry) {
|
|
129
|
+
await npmPublishDry();
|
|
130
|
+
} else {
|
|
131
|
+
await npmPublish(data.tag);
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
log.info(
|
|
135
|
+
`packages ${packageJson.name} is published ${data.dry ? '(dry) ' : ''}with version ${
|
|
136
|
+
data.version
|
|
137
|
+
}`
|
|
138
|
+
);
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
private getPublishData(): {
|
|
142
|
+
version: string;
|
|
143
|
+
buildVersion: string;
|
|
144
|
+
tag?: string;
|
|
145
|
+
registry: string;
|
|
146
|
+
dry: boolean;
|
|
147
|
+
force: boolean;
|
|
148
|
+
isBranchConfigured: boolean;
|
|
149
|
+
} {
|
|
150
|
+
const cli = this.args;
|
|
151
|
+
const branch = cli.branch ?? gitGetBranch();
|
|
152
|
+
const branchConfig = getBranchConfigs()[branch];
|
|
153
|
+
let buildVersion = cli.build;
|
|
154
|
+
|
|
155
|
+
if (!buildVersion) {
|
|
156
|
+
buildVersion = `${branch}.${gitGetCommitHash()}`;
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
if (!buildVersion) {
|
|
160
|
+
throw new Error('build version is not set');
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
let tag: string;
|
|
164
|
+
|
|
165
|
+
if (cli.tag === false) {
|
|
166
|
+
tag = '';
|
|
167
|
+
} else if (cli.tag) {
|
|
168
|
+
tag = cli.tag;
|
|
169
|
+
} else {
|
|
170
|
+
tag = branchConfig?.tag ?? '';
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
const registry = 'https://verdaccio.servicetitan.com';
|
|
174
|
+
|
|
175
|
+
return {
|
|
176
|
+
tag,
|
|
177
|
+
version: '0.0.0-' + buildVersion,
|
|
178
|
+
buildVersion,
|
|
179
|
+
registry,
|
|
180
|
+
dry: !!cli.dry,
|
|
181
|
+
force: !!cli.force,
|
|
182
|
+
isBranchConfigured: !!branchConfig,
|
|
183
|
+
};
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
export class MFEPackageClean implements Command {
|
|
188
|
+
constructor(private args: ArgsPackageClean) {}
|
|
189
|
+
|
|
190
|
+
@logErrors
|
|
191
|
+
async execute() {
|
|
192
|
+
if (!isWebComponent()) {
|
|
193
|
+
throw new Error('only web-components can be cleaned');
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
const data = this.getCleanData();
|
|
197
|
+
const packageJson = readJson('package.json');
|
|
198
|
+
const packageName = packageJson.name;
|
|
199
|
+
const branchedVersions = this.getBranchedVersions(packageName, data.registry);
|
|
200
|
+
|
|
201
|
+
log.info(
|
|
202
|
+
`branched versions (${data.count}):`,
|
|
203
|
+
JSON.stringify(branchedVersions, undefined, 4)
|
|
204
|
+
);
|
|
205
|
+
|
|
206
|
+
const branchedVersionsToClean: Record<string, [string, Date][]> = {};
|
|
207
|
+
|
|
208
|
+
for (const branch of Object.keys(branchedVersions)) {
|
|
209
|
+
// limit branches for now
|
|
210
|
+
if (!branchedVersions[branch] || !data.branches.includes(branch)) {
|
|
211
|
+
continue;
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
branchedVersions[branch].sort(([, adt], [, bdt]) => (adt > bdt ? -1 : 1));
|
|
215
|
+
branchedVersionsToClean[branch] = branchedVersions[branch].slice(data.count);
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
log.info(
|
|
219
|
+
'found versions for unpublish:',
|
|
220
|
+
JSON.stringify(branchedVersionsToClean, undefined, 4)
|
|
221
|
+
);
|
|
222
|
+
|
|
223
|
+
const unVersions = Object.keys(branchedVersionsToClean).reduce(
|
|
224
|
+
(out, br) => [...out, ...branchedVersionsToClean[br].map(([v]) => v)],
|
|
225
|
+
[]
|
|
226
|
+
);
|
|
227
|
+
|
|
228
|
+
for (const version of unVersions) {
|
|
229
|
+
try {
|
|
230
|
+
// eslint-disable-next-line no-await-in-loop
|
|
231
|
+
await npmUnpublish(data.registry, packageName, version);
|
|
232
|
+
} catch {
|
|
233
|
+
log.error(`error while removing ${packageName} version ${version}`);
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
private getCleanData(): {
|
|
239
|
+
count: number;
|
|
240
|
+
registry: string;
|
|
241
|
+
branches: string[];
|
|
242
|
+
} {
|
|
243
|
+
let count = this.args.count;
|
|
244
|
+
|
|
245
|
+
if (!count) {
|
|
246
|
+
count = 5;
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
const registry = 'https://verdaccio.servicetitan.com';
|
|
250
|
+
|
|
251
|
+
return { count, registry, branches: Object.keys(getBranchConfigs()) };
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
private getBranchedVersions(packageName: string, registry: string) {
|
|
255
|
+
const versions = npmGetPackageVersionDates(registry, packageName);
|
|
256
|
+
const branchedVersions: Record<string, [string, Date][]> = {};
|
|
257
|
+
const unknownVersions: string[] = [];
|
|
258
|
+
|
|
259
|
+
const addVersion = (branch: string, version: string, dt: Date) => {
|
|
260
|
+
if (!branchedVersions[branch]) {
|
|
261
|
+
branchedVersions[branch] = [];
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
branchedVersions[branch].push([version, dt]);
|
|
265
|
+
};
|
|
266
|
+
|
|
267
|
+
for (const [version, dt] of versions) {
|
|
268
|
+
if (!version.startsWith('0.0.0-')) {
|
|
269
|
+
continue;
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
const buildVersion = version.replace('0.0.0-', '');
|
|
273
|
+
|
|
274
|
+
if (/^(\d+)\.(\d+)\.(\d+)$/.test(buildVersion)) {
|
|
275
|
+
// master version generated by nerdbank versioning
|
|
276
|
+
addVersion('master', version, dt);
|
|
277
|
+
continue;
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
const match1 = buildVersion.match(
|
|
281
|
+
/^(\d+)\.(\d+)\.(\d+)-([\dA-Za-z\-]+).([\dA-Za-z]+)$/
|
|
282
|
+
);
|
|
283
|
+
|
|
284
|
+
if (match1?.length) {
|
|
285
|
+
// branch version generated by nerdbank versioning
|
|
286
|
+
addVersion(match1[4], version, dt);
|
|
287
|
+
continue;
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
const match2 = buildVersion.match(/^([\dA-Za-z\-]+).([\dA-Za-z]+)$/);
|
|
291
|
+
|
|
292
|
+
if (match2?.length) {
|
|
293
|
+
// branch version generated by mfe-publisher versioning
|
|
294
|
+
addVersion(match2[1], version, dt);
|
|
295
|
+
continue;
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
unknownVersions.push(version);
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
if (unknownVersions.length) {
|
|
302
|
+
log.info('unknown versions:', unknownVersions.join());
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
return branchedVersions;
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
|
|
309
|
+
const getBranchConfigs = (): Record<string, { tag?: string }> => {
|
|
310
|
+
// ToDo: add ability to configure it in a package.json
|
|
311
|
+
return {
|
|
312
|
+
develop: { tag: 'dev' },
|
|
313
|
+
dev: { tag: 'dev' },
|
|
314
|
+
next: { tag: 'next' },
|
|
315
|
+
master: { tag: 'prod' },
|
|
316
|
+
};
|
|
317
|
+
};
|
package/src/cli/index.ts
CHANGED
|
@@ -11,6 +11,9 @@ import {
|
|
|
11
11
|
Lint,
|
|
12
12
|
Tests,
|
|
13
13
|
StylesCheck,
|
|
14
|
+
MFEPackageClean,
|
|
15
|
+
MFEPackagePublish,
|
|
16
|
+
MFEPublish,
|
|
14
17
|
} from './commands';
|
|
15
18
|
|
|
16
19
|
interface Newable<T> {
|
|
@@ -43,6 +46,15 @@ function getCommand(name: string): Newable<Command> {
|
|
|
43
46
|
case 'styles-check':
|
|
44
47
|
return StylesCheck;
|
|
45
48
|
|
|
49
|
+
case 'mfe-publish':
|
|
50
|
+
return MFEPublish;
|
|
51
|
+
|
|
52
|
+
case 'mfe-package-publish':
|
|
53
|
+
return MFEPackagePublish;
|
|
54
|
+
|
|
55
|
+
case 'mfe-package-clean':
|
|
56
|
+
return MFEPackageClean;
|
|
57
|
+
|
|
46
58
|
default:
|
|
47
59
|
log.error(`${name}: command not found!`);
|
|
48
60
|
process.exit(127);
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { runCommandOutput } from './cli-os';
|
|
2
|
+
|
|
3
|
+
export const gitGetBranch = (): string => {
|
|
4
|
+
return runCommandOutput('git rev-parse --abbrev-ref HEAD').trim();
|
|
5
|
+
};
|
|
6
|
+
|
|
7
|
+
export const gitGetCommitHash = (): string => {
|
|
8
|
+
return runCommandOutput('git rev-parse --short HEAD').trim();
|
|
9
|
+
};
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { runCommand, runCommandOutput } from './cli-os';
|
|
2
|
+
|
|
3
|
+
export const npmGetPackageVersions = (registry: string, packageName: string): string[] => {
|
|
4
|
+
try {
|
|
5
|
+
const v = runCommandOutput(
|
|
6
|
+
`npm show ${packageName} versions --registry ${registry} --json`,
|
|
7
|
+
{ timeout: 10000 }
|
|
8
|
+
);
|
|
9
|
+
|
|
10
|
+
return JSON.parse(v);
|
|
11
|
+
} catch {
|
|
12
|
+
return [];
|
|
13
|
+
}
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
export const npmGetPackageVersionDates = (
|
|
17
|
+
registry: string,
|
|
18
|
+
packageName: string
|
|
19
|
+
): [string, Date][] => {
|
|
20
|
+
try {
|
|
21
|
+
const v = runCommandOutput(`npm view ${packageName} time --registry ${registry} --json`, {
|
|
22
|
+
timeout: 10000,
|
|
23
|
+
});
|
|
24
|
+
const map = JSON.parse(v);
|
|
25
|
+
|
|
26
|
+
return Object.keys(map).reduce(
|
|
27
|
+
(out, version) => [...out, [version, new Date(map[version])]],
|
|
28
|
+
[]
|
|
29
|
+
);
|
|
30
|
+
} catch {
|
|
31
|
+
return [];
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
export const npmUnpublish = async (
|
|
36
|
+
registry: string,
|
|
37
|
+
packageName: string,
|
|
38
|
+
packageVersion: string
|
|
39
|
+
) => {
|
|
40
|
+
await runCommand(`npm unpublish ${packageName}@${packageVersion} --registry ${registry}`, {
|
|
41
|
+
timeout: 10000,
|
|
42
|
+
});
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
export const npmPublishDry = async () => {
|
|
46
|
+
await runCommand('npm publish --dry-run');
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
export const npmPublish = async (tag?: string) => {
|
|
50
|
+
await runCommand(['npm publish', !!tag && `--tag ${tag}`]);
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
export const npmPackageSet = async (key: string, value: string) => {
|
|
54
|
+
await runCommand(`npm pkg set ${key}=${value}`);
|
|
55
|
+
};
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import {
|
|
2
|
+
execSync,
|
|
3
|
+
ExecSyncOptionsWithBufferEncoding,
|
|
4
|
+
spawn,
|
|
5
|
+
SpawnOptionsWithoutStdio,
|
|
6
|
+
} from 'child_process';
|
|
7
|
+
import { log } from '../../utils';
|
|
8
|
+
|
|
9
|
+
export const runCommand = (
|
|
10
|
+
command: string | (string | false)[],
|
|
11
|
+
opts?: SpawnOptionsWithoutStdio
|
|
12
|
+
): Promise<void> => {
|
|
13
|
+
return new Promise((resolve, reject) => {
|
|
14
|
+
const commandArray: string[] = Array.isArray(command)
|
|
15
|
+
? command
|
|
16
|
+
.filter(c => !!c)
|
|
17
|
+
.map(c => c.toString())
|
|
18
|
+
.join(' ')
|
|
19
|
+
.split(' ')
|
|
20
|
+
: command.split(' ');
|
|
21
|
+
const fullCommand = commandArray.join(' ');
|
|
22
|
+
|
|
23
|
+
const commandName = commandArray.shift();
|
|
24
|
+
|
|
25
|
+
if (!commandName) {
|
|
26
|
+
reject();
|
|
27
|
+
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
log.info(`run command ${fullCommand}`);
|
|
32
|
+
|
|
33
|
+
const proc = spawn(commandName, commandArray, opts);
|
|
34
|
+
|
|
35
|
+
proc.stdout.pipe(process.stdout);
|
|
36
|
+
proc.stderr.pipe(process.stderr);
|
|
37
|
+
|
|
38
|
+
proc.on('exit', function (code: any) {
|
|
39
|
+
log.info(`command finished with code ${code}`, fullCommand);
|
|
40
|
+
|
|
41
|
+
if (code) {
|
|
42
|
+
reject();
|
|
43
|
+
} else {
|
|
44
|
+
resolve();
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
});
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
export const runCommandOutput = (
|
|
51
|
+
command: string | (string | false)[],
|
|
52
|
+
options?: ExecSyncOptionsWithBufferEncoding
|
|
53
|
+
): string => {
|
|
54
|
+
const commandArray: string[] = Array.isArray(command)
|
|
55
|
+
? command
|
|
56
|
+
.filter(c => !!c)
|
|
57
|
+
.map(c => c.toString())
|
|
58
|
+
.join(' ')
|
|
59
|
+
.split(' ')
|
|
60
|
+
: command.split(' ');
|
|
61
|
+
const fullCommand = commandArray.join(' ');
|
|
62
|
+
|
|
63
|
+
const commandName = commandArray.shift();
|
|
64
|
+
|
|
65
|
+
if (!commandName) {
|
|
66
|
+
throw new Error();
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
log.info(`run command ${fullCommand}`);
|
|
70
|
+
|
|
71
|
+
const result = execSync(fullCommand, options).toString();
|
|
72
|
+
|
|
73
|
+
log.info('command finished', result);
|
|
74
|
+
|
|
75
|
+
return result;
|
|
76
|
+
};
|