@clickview/ship-it 0.0.2-dev.2 → 0.0.3
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/lib/src/api-clients/git-lab/GitLabApiClient.js +34 -2
- package/lib/src/api-clients/git-lab/GitLabMapper.js +10 -1
- package/lib/src/commands/CreateMergeRequestCommand.js +3 -3
- package/lib/src/commands/{CommitPackageVersionsCommand.js → ValidateMergeRequestCommand.js} +12 -12
- package/lib/src/commands/index.js +1 -0
- package/lib/src/constants/CommandTypeMapping.js +2 -1
- package/lib/src/index.js +1 -1
- package/lib/src/interfaces/command-options/index.js +2 -0
- package/lib/src/interfaces/models/Milestone.js +2 -0
- package/lib/src/interfaces/models/index.js +1 -0
- package/lib/src/inversify.config.js +2 -0
- package/lib/src/services/GitLabService.js +36 -2
- package/lib/src/startup/SetupCommands.js +36 -10
- package/lib/src/tasks/BumpPackagesTask.js +20 -7
- package/lib/src/tasks/CommitPackageVersionsTask.js +11 -17
- package/lib/src/tasks/CreateMergeRequestTask.js +2 -2
- package/lib/src/tasks/InstallPackagesTask.js +58 -17
- package/lib/src/tasks/ValidateDescriptionsTask.js +11 -8
- package/lib/src/tasks/{CommitLocalPackagesTask.js → ValidateMergeRequestTask.js} +38 -67
- package/lib/src/tasks/ValidateTask.js +2 -2
- package/lib/src/tasks/index.js +1 -0
- package/lib/src/types.js +4 -2
- package/lib/src/utils/Descriptions.js +23 -19
- package/lib/src/utils/ProjectIds.js +1 -1
- package/package.json +1 -1
- package/lib/src/api-clients/GitLabApiClient.js +0 -342
- package/lib/src/constants/index.js +0 -18
- /package/lib/src/interfaces/{ShipItOptions.js → command-options/InstallPackagesCommandOptions.js} +0 -0
- /package/lib/src/interfaces/command-options/{CommitPackageVersionsCommandOptions.js → ValidateMRCommandOptions.js} +0 -0
|
@@ -213,13 +213,29 @@ var GitLabApiClient = /** @class */ (function () {
|
|
|
213
213
|
});
|
|
214
214
|
});
|
|
215
215
|
};
|
|
216
|
-
GitLabApiClient.prototype.
|
|
216
|
+
GitLabApiClient.prototype.getMergeRequestById = function (projectId, mergeRequestId) {
|
|
217
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
218
|
+
var mergeRequest;
|
|
219
|
+
return __generator(this, function (_a) {
|
|
220
|
+
switch (_a.label) {
|
|
221
|
+
case 0: return [4 /*yield*/, this.client.MergeRequests.show(projectId, mergeRequestId)];
|
|
222
|
+
case 1:
|
|
223
|
+
mergeRequest = _a.sent();
|
|
224
|
+
if (!mergeRequest)
|
|
225
|
+
return [2 /*return*/, null];
|
|
226
|
+
return [2 /*return*/, GitLabMapper_1.GitLabMapper.mergeRequest(mergeRequest)];
|
|
227
|
+
}
|
|
228
|
+
});
|
|
229
|
+
});
|
|
230
|
+
};
|
|
231
|
+
GitLabApiClient.prototype.createMergeRequest = function (projectId, sourceBranch, targetBranch, title, description, milestone) {
|
|
217
232
|
return __awaiter(this, void 0, void 0, function () {
|
|
218
233
|
var mergeRequest;
|
|
219
234
|
return __generator(this, function (_a) {
|
|
220
235
|
switch (_a.label) {
|
|
221
236
|
case 0: return [4 /*yield*/, this.client.MergeRequests.create(projectId, sourceBranch, targetBranch, title, {
|
|
222
|
-
description: description
|
|
237
|
+
description: description,
|
|
238
|
+
milestoneId: milestone.id
|
|
223
239
|
})];
|
|
224
240
|
case 1:
|
|
225
241
|
mergeRequest = _a.sent();
|
|
@@ -275,6 +291,22 @@ var GitLabApiClient = /** @class */ (function () {
|
|
|
275
291
|
});
|
|
276
292
|
});
|
|
277
293
|
};
|
|
294
|
+
GitLabApiClient.prototype.getMilestone = function (projectId, milestoneName) {
|
|
295
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
296
|
+
var milestones, milestone;
|
|
297
|
+
return __generator(this, function (_a) {
|
|
298
|
+
switch (_a.label) {
|
|
299
|
+
case 0: return [4 /*yield*/, this.client.ProjectMilestones.all(projectId)];
|
|
300
|
+
case 1:
|
|
301
|
+
milestones = _a.sent();
|
|
302
|
+
milestone = milestones.find(function (milestone) { return milestone.title === milestoneName; });
|
|
303
|
+
if (!milestone)
|
|
304
|
+
return [2 /*return*/, null];
|
|
305
|
+
return [2 /*return*/, GitLabMapper_1.GitLabMapper.milestone(milestone)];
|
|
306
|
+
}
|
|
307
|
+
});
|
|
308
|
+
});
|
|
309
|
+
};
|
|
278
310
|
GitLabApiClient = __decorate([
|
|
279
311
|
(0, inversify_1.injectable)(),
|
|
280
312
|
__param(0, (0, inversify_1.inject)(types_1.MISC.GitLabConfig)),
|
|
@@ -14,7 +14,8 @@ exports.GitLabMapper = {
|
|
|
14
14
|
assignee: (_a = m.assignee) === null || _a === void 0 ? void 0 : _a.name,
|
|
15
15
|
url: m.web_url,
|
|
16
16
|
hasConflicts: m.has_conflicts,
|
|
17
|
-
targetBranch: m.target_branch
|
|
17
|
+
targetBranch: m.target_branch,
|
|
18
|
+
milestone: exports.GitLabMapper.milestone(m.milestone)
|
|
18
19
|
};
|
|
19
20
|
},
|
|
20
21
|
project: function (p) {
|
|
@@ -47,5 +48,13 @@ exports.GitLabMapper = {
|
|
|
47
48
|
path: f.file_path,
|
|
48
49
|
content: f.content
|
|
49
50
|
};
|
|
51
|
+
},
|
|
52
|
+
milestone: function (m) {
|
|
53
|
+
if (!m)
|
|
54
|
+
return null;
|
|
55
|
+
return {
|
|
56
|
+
id: m.id,
|
|
57
|
+
name: m.title
|
|
58
|
+
};
|
|
50
59
|
}
|
|
51
60
|
};
|
|
@@ -53,12 +53,12 @@ require("reflect-metadata");
|
|
|
53
53
|
var inversify_1 = require("inversify");
|
|
54
54
|
var types_1 = require("../types");
|
|
55
55
|
var CreateMergeRequestCommand = /** @class */ (function () {
|
|
56
|
-
function CreateMergeRequestCommand(validateTask, versionTask, validateDescriptionsTask, validateCommitsTask,
|
|
56
|
+
function CreateMergeRequestCommand(validateTask, versionTask, validateDescriptionsTask, validateCommitsTask, createMergeRequestTask) {
|
|
57
57
|
this.validateTask = validateTask;
|
|
58
58
|
this.versionTask = versionTask;
|
|
59
59
|
this.validateDescriptionsTask = validateDescriptionsTask;
|
|
60
60
|
this.validateCommitsTask = validateCommitsTask;
|
|
61
|
-
this.
|
|
61
|
+
this.createMergeRequestTask = createMergeRequestTask;
|
|
62
62
|
}
|
|
63
63
|
CreateMergeRequestCommand.prototype.run = function (options) {
|
|
64
64
|
return __awaiter(this, void 0, void 0, function () {
|
|
@@ -87,7 +87,7 @@ var CreateMergeRequestCommand = /** @class */ (function () {
|
|
|
87
87
|
cont = _a.sent();
|
|
88
88
|
if (!cont)
|
|
89
89
|
return [2 /*return*/];
|
|
90
|
-
return [4 /*yield*/, this.
|
|
90
|
+
return [4 /*yield*/, this.createMergeRequestTask.run(options)];
|
|
91
91
|
case 5:
|
|
92
92
|
_a.sent();
|
|
93
93
|
return [2 /*return*/];
|
|
@@ -48,19 +48,19 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
48
48
|
}
|
|
49
49
|
};
|
|
50
50
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
51
|
-
exports.
|
|
51
|
+
exports.ValidateMergeRequestCommand = void 0;
|
|
52
52
|
require("reflect-metadata");
|
|
53
53
|
var inversify_1 = require("inversify");
|
|
54
|
-
var types_1 = require("types");
|
|
55
|
-
var
|
|
56
|
-
function
|
|
57
|
-
this.
|
|
54
|
+
var types_1 = require("../types");
|
|
55
|
+
var ValidateMergeRequestCommand = /** @class */ (function () {
|
|
56
|
+
function ValidateMergeRequestCommand(validateMergeRequestTask) {
|
|
57
|
+
this.validateMergeRequestTask = validateMergeRequestTask;
|
|
58
58
|
}
|
|
59
|
-
|
|
59
|
+
ValidateMergeRequestCommand.prototype.run = function (options) {
|
|
60
60
|
return __awaiter(this, void 0, void 0, function () {
|
|
61
61
|
return __generator(this, function (_a) {
|
|
62
62
|
switch (_a.label) {
|
|
63
|
-
case 0: return [4 /*yield*/, this.
|
|
63
|
+
case 0: return [4 /*yield*/, this.validateMergeRequestTask.run(options)];
|
|
64
64
|
case 1:
|
|
65
65
|
_a.sent();
|
|
66
66
|
return [2 /*return*/];
|
|
@@ -68,11 +68,11 @@ var CommitPackageVersionsCommand = /** @class */ (function () {
|
|
|
68
68
|
});
|
|
69
69
|
});
|
|
70
70
|
};
|
|
71
|
-
|
|
71
|
+
ValidateMergeRequestCommand = __decorate([
|
|
72
72
|
(0, inversify_1.injectable)(),
|
|
73
|
-
__param(0, (0, inversify_1.inject)(types_1.TASKS.
|
|
73
|
+
__param(0, (0, inversify_1.inject)(types_1.TASKS.ValidateMergeRequestTask)),
|
|
74
74
|
__metadata("design:paramtypes", [Object])
|
|
75
|
-
],
|
|
76
|
-
return
|
|
75
|
+
], ValidateMergeRequestCommand);
|
|
76
|
+
return ValidateMergeRequestCommand;
|
|
77
77
|
}());
|
|
78
|
-
exports.
|
|
78
|
+
exports.ValidateMergeRequestCommand = ValidateMergeRequestCommand;
|
|
@@ -21,4 +21,5 @@ __exportStar(require("./CreateReleaseNotesCommand"), exports);
|
|
|
21
21
|
__exportStar(require("./InstallPackagesCommand"), exports);
|
|
22
22
|
__exportStar(require("./ReleaseCommand"), exports);
|
|
23
23
|
__exportStar(require("./StatusCommand"), exports);
|
|
24
|
+
__exportStar(require("./ValidateMergeRequestCommand"), exports);
|
|
24
25
|
__exportStar(require("./VersionCommand"), exports);
|
|
@@ -10,5 +10,6 @@ exports.CommandTypeMapping = {
|
|
|
10
10
|
'create-mrs': types_1.COMMANDS.CreateMergeRequestCommand,
|
|
11
11
|
'create-notes': types_1.COMMANDS.CreateReleaseNotesCommand,
|
|
12
12
|
'install-packages': types_1.COMMANDS.InstallPackagesCommand,
|
|
13
|
-
'bump-packages': types_1.COMMANDS.BumpPackagesCommand
|
|
13
|
+
'bump-packages': types_1.COMMANDS.BumpPackagesCommand,
|
|
14
|
+
'validate-mr': types_1.COMMANDS.ValidateMergeRequestCommand
|
|
14
15
|
};
|
package/lib/src/index.js
CHANGED
|
@@ -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("./BumpPackagesCommandOptions"), exports);
|
|
18
|
+
__exportStar(require("./InstallPackagesCommandOptions"), exports);
|
|
18
19
|
__exportStar(require("./MilestoneCommandOptions"), exports);
|
|
20
|
+
__exportStar(require("./ValidateMRCommandOptions"), exports);
|
|
@@ -19,5 +19,6 @@ __exportStar(require("./Commit"), exports);
|
|
|
19
19
|
__exportStar(require("./CommitFile"), exports);
|
|
20
20
|
__exportStar(require("./File"), exports);
|
|
21
21
|
__exportStar(require("./MergeRequest"), exports);
|
|
22
|
+
__exportStar(require("./Milestone"), exports);
|
|
22
23
|
__exportStar(require("./Project"), exports);
|
|
23
24
|
__exportStar(require("./Tag"), exports);
|
|
@@ -35,6 +35,7 @@ function createContainer(config) {
|
|
|
35
35
|
container.bind(types_1.TASKS.InstallPackagesTask).to(tasks_1.InstallPackagesTask);
|
|
36
36
|
container.bind(types_1.TASKS.BumpPackagesTask).to(tasks_1.BumpPackagesTask);
|
|
37
37
|
container.bind(types_1.TASKS.CommitPackageVersionsTask).to(tasks_1.CommitPackageVersionsTask);
|
|
38
|
+
container.bind(types_1.TASKS.ValidateMergeRequestTask).to(tasks_1.ValidateMergeRequestTask);
|
|
38
39
|
/**
|
|
39
40
|
* Commands
|
|
40
41
|
*/
|
|
@@ -46,6 +47,7 @@ function createContainer(config) {
|
|
|
46
47
|
container.bind(types_1.COMMANDS.CreateReleaseNotesCommand).to(commands_1.CreateReleaseNotesCommand);
|
|
47
48
|
container.bind(types_1.COMMANDS.InstallPackagesCommand).to(commands_1.InstallPackagesCommand);
|
|
48
49
|
container.bind(types_1.COMMANDS.BumpPackagesCommand).to(commands_1.BumpPackagesCommand);
|
|
50
|
+
container.bind(types_1.COMMANDS.ValidateMergeRequestCommand).to(commands_1.ValidateMergeRequestCommand);
|
|
49
51
|
return container;
|
|
50
52
|
}
|
|
51
53
|
exports.createContainer = createContainer;
|
|
@@ -99,6 +99,21 @@ var GitLabService = /** @class */ (function () {
|
|
|
99
99
|
});
|
|
100
100
|
});
|
|
101
101
|
};
|
|
102
|
+
GitLabService.prototype.getProject = function (projectId) {
|
|
103
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
104
|
+
var projects;
|
|
105
|
+
return __generator(this, function (_a) {
|
|
106
|
+
switch (_a.label) {
|
|
107
|
+
case 0: return [4 /*yield*/, this.apiClient.getProjectsByIds([projectId])];
|
|
108
|
+
case 1:
|
|
109
|
+
projects = _a.sent();
|
|
110
|
+
if (!projects.length)
|
|
111
|
+
throw new errors_1.ShipItError("Could not find project projectId: ".concat(projectId));
|
|
112
|
+
return [2 /*return*/, projects[0]];
|
|
113
|
+
}
|
|
114
|
+
});
|
|
115
|
+
});
|
|
116
|
+
};
|
|
102
117
|
GitLabService.prototype.getDevCommitsSince = function (projectId, sinceSha) {
|
|
103
118
|
return __awaiter(this, void 0, void 0, function () {
|
|
104
119
|
var commits, lastDevCommit, title;
|
|
@@ -165,8 +180,27 @@ var GitLabService = /** @class */ (function () {
|
|
|
165
180
|
GitLabService.prototype.getMergeRequest = function (projectId, branchName) {
|
|
166
181
|
return this.apiClient.getMergeRequest(projectId, branchName, 'master');
|
|
167
182
|
};
|
|
168
|
-
GitLabService.prototype.
|
|
169
|
-
|
|
183
|
+
GitLabService.prototype.getMergeRequestById = function (projectId, mergeRequestId) {
|
|
184
|
+
var idAsNumber = lodash_1.default.toNumber(mergeRequestId);
|
|
185
|
+
if (!lodash_1.default.isNumber(idAsNumber))
|
|
186
|
+
throw new errors_1.ShipItError("MergeRequest Id must be a number: ".concat(mergeRequestId));
|
|
187
|
+
return this.apiClient.getMergeRequestById(projectId, idAsNumber);
|
|
188
|
+
};
|
|
189
|
+
GitLabService.prototype.createMergeRequest = function (projectId, branchName, description, milestoneName) {
|
|
190
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
191
|
+
var milestone;
|
|
192
|
+
return __generator(this, function (_a) {
|
|
193
|
+
switch (_a.label) {
|
|
194
|
+
case 0: return [4 /*yield*/, this.getMilestone(projectId, milestoneName)];
|
|
195
|
+
case 1:
|
|
196
|
+
milestone = _a.sent();
|
|
197
|
+
return [2 /*return*/, this.apiClient.createMergeRequest(projectId, branchName, 'master', branchName, description, milestone)];
|
|
198
|
+
}
|
|
199
|
+
});
|
|
200
|
+
});
|
|
201
|
+
};
|
|
202
|
+
GitLabService.prototype.getMilestone = function (projectId, milestoneName) {
|
|
203
|
+
return this.apiClient.getMilestone(projectId, milestoneName);
|
|
170
204
|
};
|
|
171
205
|
GitLabService.prototype.bumpVersionTxt = function (projectId, branchName, newVersion) {
|
|
172
206
|
return __awaiter(this, void 0, void 0, function () {
|
|
@@ -38,9 +38,9 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
38
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
39
|
exports.setupCommands = void 0;
|
|
40
40
|
var CommandTypeMapping_1 = require("../constants/CommandTypeMapping");
|
|
41
|
+
var errors_1 = require("../errors");
|
|
41
42
|
var AddMilestoneCommand_1 = require("./AddMilestoneCommand");
|
|
42
43
|
function setupCommands(program, container) {
|
|
43
|
-
var _this = this;
|
|
44
44
|
var addMilestoneCommand = (0, AddMilestoneCommand_1.getAddMilestoneCommand)(program, container);
|
|
45
45
|
// All commands below accept the same options
|
|
46
46
|
addMilestoneCommand('status', 'Get the status of all MRs in a milestone');
|
|
@@ -49,18 +49,44 @@ function setupCommands(program, container) {
|
|
|
49
49
|
addMilestoneCommand('create-mrs', 'Create merge requests for all projects that are part of a milestone');
|
|
50
50
|
addMilestoneCommand('create-notes', 'Builds descriptions for all projects that are part of a milestone');
|
|
51
51
|
addMilestoneCommand('release', 'Create releases for all projects that are part of a milestone');
|
|
52
|
-
addMilestoneCommand('install-packages', 'Install the latest clickview npm packages in all consuming projects that are part of a milestone');
|
|
53
52
|
program.command('bump-packages')
|
|
54
53
|
.description('Bump clickview npm package versions in monorepo to their next version')
|
|
55
54
|
.requiredOption('-b, --branchName <branchName>')
|
|
56
55
|
.option('-p, --preId <preId>')
|
|
57
|
-
.action(
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
56
|
+
.action(getAction('bump-packages'));
|
|
57
|
+
program.command('install-packages')
|
|
58
|
+
.description('Install the latest clickview npm packages in all consuming projects that are part of a milestone')
|
|
59
|
+
.option('-m, --milestone <milestone>')
|
|
60
|
+
.option('-b, --branchName <branchName>')
|
|
61
|
+
.option('-p, --projectIds <projectIds...>')
|
|
62
|
+
.action(getAction('install-packages'));
|
|
63
|
+
program.command('validate-mr')
|
|
64
|
+
.description('Validate a merge request in a single project, ensuring it has a milestone and valid description')
|
|
65
|
+
.option('-p, --projectId <projectId>')
|
|
66
|
+
.option('-b, --branchName <branchName>')
|
|
67
|
+
.action(getAction('validate-mr'));
|
|
68
|
+
function getAction(command) {
|
|
69
|
+
var _this = this;
|
|
70
|
+
return function (options) { return __awaiter(_this, void 0, void 0, function () {
|
|
71
|
+
var err_1;
|
|
72
|
+
return __generator(this, function (_a) {
|
|
73
|
+
switch (_a.label) {
|
|
74
|
+
case 0:
|
|
75
|
+
_a.trys.push([0, 2, , 3]);
|
|
76
|
+
return [4 /*yield*/, container.get(CommandTypeMapping_1.CommandTypeMapping[command]).run(options)];
|
|
77
|
+
case 1:
|
|
78
|
+
_a.sent();
|
|
79
|
+
return [3 /*break*/, 3];
|
|
80
|
+
case 2:
|
|
81
|
+
err_1 = _a.sent();
|
|
82
|
+
if (!(err_1 instanceof errors_1.ShipItError))
|
|
83
|
+
throw err_1;
|
|
84
|
+
program.error(err_1.message);
|
|
85
|
+
return [3 /*break*/, 3];
|
|
86
|
+
case 3: return [2 /*return*/];
|
|
87
|
+
}
|
|
88
|
+
});
|
|
89
|
+
}); };
|
|
90
|
+
}
|
|
65
91
|
}
|
|
66
92
|
exports.setupCommands = setupCommands;
|
|
@@ -94,6 +94,7 @@ var BumpPackagesTask = /** @class */ (function () {
|
|
|
94
94
|
return [2 /*return*/, false];
|
|
95
95
|
}
|
|
96
96
|
(0, child_process_1.execSync)(lernaVersionCmd);
|
|
97
|
+
utils_1.Logger.logSuccess('Successfully executed Lerna versioning command.');
|
|
97
98
|
return [2 /*return*/, true];
|
|
98
99
|
}
|
|
99
100
|
});
|
|
@@ -149,18 +150,26 @@ var BumpPackagesTask = /** @class */ (function () {
|
|
|
149
150
|
*
|
|
150
151
|
* E.g. this would change 0.0.1-dev.0 to 0.0.0-dev.1
|
|
151
152
|
*/
|
|
152
|
-
if (isInPrerelease && options.preId)
|
|
153
|
+
if (isInPrerelease && options.preId) {
|
|
154
|
+
utils_1.Logger.logMessage("Incrementing \"".concat(options.preId, "\" preId for each package."));
|
|
153
155
|
return [2 /*return*/, "lerna version prerelease --preid ".concat(options.preId, " ").concat(SHARED_LERNA_OPTIONS)];
|
|
156
|
+
}
|
|
154
157
|
// Bump the patch with the preId "dev". We currently only support dev prereleases on patch versions
|
|
155
|
-
if (options.preId === 'dev')
|
|
158
|
+
if (options.preId === 'dev') {
|
|
159
|
+
utils_1.Logger.logMessage("Incrementing the patch version for each package and appending preId: \"dev\".");
|
|
156
160
|
return [2 /*return*/, "lerna version prepatch --preid dev ".concat(SHARED_LERNA_OPTIONS)];
|
|
161
|
+
}
|
|
157
162
|
if (options.preId === 'rc') {
|
|
158
163
|
// Bump the minor number with the preId "rc". Release branches always bump the minor number.
|
|
159
|
-
if (this.isReleaseBranch)
|
|
164
|
+
if (this.isReleaseBranch) {
|
|
165
|
+
utils_1.Logger.logMessage("Incrementing the minor version for each package and appending preId: \"rc\".");
|
|
160
166
|
return [2 /*return*/, "lerna version preminor --preid rc ".concat(SHARED_LERNA_OPTIONS)];
|
|
167
|
+
}
|
|
161
168
|
// Bump the patch with the preId "rc". Hotfix branches always bump the patch number.
|
|
162
|
-
if (this.isHotfixBranch)
|
|
169
|
+
if (this.isHotfixBranch) {
|
|
170
|
+
utils_1.Logger.logMessage("Incrementing the patch version for each package and appending preId: \"rc\".");
|
|
163
171
|
return [2 /*return*/, "lerna version prepatch --preid rc ".concat(SHARED_LERNA_OPTIONS)];
|
|
172
|
+
}
|
|
164
173
|
}
|
|
165
174
|
/**
|
|
166
175
|
* If no preId is provided, we bump the version number to a production version.
|
|
@@ -168,10 +177,14 @@ var BumpPackagesTask = /** @class */ (function () {
|
|
|
168
177
|
* Release branch = minor bump
|
|
169
178
|
* Hotfix branch = patch bump
|
|
170
179
|
*/
|
|
171
|
-
if (this.isReleaseBranch)
|
|
180
|
+
if (this.isReleaseBranch) {
|
|
181
|
+
utils_1.Logger.logMessage('Updating each package to production release version.');
|
|
172
182
|
return [2 /*return*/, "lerna version minor ".concat(SHARED_LERNA_OPTIONS)];
|
|
173
|
-
|
|
183
|
+
}
|
|
184
|
+
if (this.isHotfixBranch) {
|
|
185
|
+
utils_1.Logger.logMessage('Updating each package to production hotfix version.');
|
|
174
186
|
return [2 /*return*/, "lerna version patch ".concat(SHARED_LERNA_OPTIONS)];
|
|
187
|
+
}
|
|
175
188
|
// Should never be reached
|
|
176
189
|
return [2 /*return*/, ''];
|
|
177
190
|
}
|
|
@@ -192,7 +205,7 @@ var BumpPackagesTask = /** @class */ (function () {
|
|
|
192
205
|
return [4 /*yield*/, this.getFileText(utils_1.ProjectIds.MONOREPO_PROJECT_ID, branchName, file)];
|
|
193
206
|
case 2:
|
|
194
207
|
text = _a.sent();
|
|
195
|
-
json = JSON.parse(
|
|
208
|
+
json = JSON.parse(text);
|
|
196
209
|
if (RC_VERSION_REGEX.test(json.version))
|
|
197
210
|
return [2 /*return*/, true];
|
|
198
211
|
if (DEV_VERSION_REGEX.test(json.version))
|
|
@@ -74,32 +74,26 @@ var CommitPackageVersionsTask = /** @class */ (function () {
|
|
|
74
74
|
utils_1.Logger.logError("Branch with name ".concat(options.branchName, " was not be found."));
|
|
75
75
|
return [2 /*return*/, false];
|
|
76
76
|
}
|
|
77
|
-
|
|
78
|
-
case 2:
|
|
79
|
-
commitFiles = _a.sent();
|
|
77
|
+
commitFiles = this.getCommitFiles();
|
|
80
78
|
return [4 /*yield*/, this.service.commit(utils_1.ProjectIds.MONOREPO_PROJECT_ID, options.branchName, 'Bump package versions', commitFiles)];
|
|
81
|
-
case
|
|
79
|
+
case 2:
|
|
82
80
|
_a.sent();
|
|
81
|
+
utils_1.Logger.logSuccess('Successfully committed package versions.');
|
|
83
82
|
return [2 /*return*/, true];
|
|
84
83
|
}
|
|
85
84
|
});
|
|
86
85
|
});
|
|
87
86
|
};
|
|
88
87
|
CommitPackageVersionsTask.prototype.getCommitFiles = function () {
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
commitFiles.push({
|
|
96
|
-
filePath: filePath,
|
|
97
|
-
content: (0, fs_1.readFileSync)(filePath, { encoding: 'utf8' })
|
|
98
|
-
});
|
|
99
|
-
}
|
|
100
|
-
return [2 /*return*/, commitFiles];
|
|
88
|
+
var commitFiles = [];
|
|
89
|
+
for (var _i = 0, MONOREPO_PACKAGE_JSON_FILES_1 = MonorepoPackageJsonFiles_1.MONOREPO_PACKAGE_JSON_FILES; _i < MONOREPO_PACKAGE_JSON_FILES_1.length; _i++) {
|
|
90
|
+
var filePath = MONOREPO_PACKAGE_JSON_FILES_1[_i];
|
|
91
|
+
commitFiles.push({
|
|
92
|
+
filePath: filePath,
|
|
93
|
+
content: (0, fs_1.readFileSync)(filePath, { encoding: 'utf8' })
|
|
101
94
|
});
|
|
102
|
-
}
|
|
95
|
+
}
|
|
96
|
+
return commitFiles;
|
|
103
97
|
};
|
|
104
98
|
CommitPackageVersionsTask = __decorate([
|
|
105
99
|
(0, inversify_1.injectable)(),
|
|
@@ -84,14 +84,14 @@ var CreateMergeRequestTask = /** @class */ (function () {
|
|
|
84
84
|
case 4:
|
|
85
85
|
mergeRequest = _b.sent();
|
|
86
86
|
if (mergeRequest) {
|
|
87
|
-
utils_1.Logger.logWarning("[".concat(project.title, "]: MR already
|
|
87
|
+
utils_1.Logger.logWarning("[".concat(project.title, "]: MR already exists"));
|
|
88
88
|
utils_1.Logger.logInfo(mergeRequest.url);
|
|
89
89
|
return [3 /*break*/, 6];
|
|
90
90
|
}
|
|
91
91
|
description = project.id.toString() === utils_1.ProjectIds.MONOREPO_PROJECT_ID ?
|
|
92
92
|
utils_1.Descriptions.getMonorepoCombinedDescription(project.mergeRequests) :
|
|
93
93
|
utils_1.Descriptions.getCombinedDescription(project.mergeRequests);
|
|
94
|
-
return [4 /*yield*/, this.service.createMergeRequest(project.id, branchName, description)];
|
|
94
|
+
return [4 /*yield*/, this.service.createMergeRequest(project.id, branchName, description, options.milestone)];
|
|
95
95
|
case 5:
|
|
96
96
|
mergeRequest = _b.sent();
|
|
97
97
|
utils_1.Logger.logMessage("[".concat(project.title, "]: MR created"));
|
|
@@ -77,15 +77,25 @@ var InstallPackagesTask = /** @class */ (function () {
|
|
|
77
77
|
function InstallPackagesTask(service) {
|
|
78
78
|
this.service = service;
|
|
79
79
|
}
|
|
80
|
-
InstallPackagesTask.prototype.run = function (
|
|
80
|
+
InstallPackagesTask.prototype.run = function (_options) {
|
|
81
81
|
return __awaiter(this, void 0, void 0, function () {
|
|
82
|
-
var projects, monorepo, consumingProjects, _a, monorepoBranch, monorepoBranchName, versions, _i, consumingProjects_1, project, _b, branch, branchName, hasUpdates;
|
|
82
|
+
var milestone, options, projects, monorepo, consumingProjects, _a, monorepoBranch, monorepoBranchName, versions, _i, consumingProjects_1, project, _b, branch, branchName, hasUpdates;
|
|
83
83
|
return __generator(this, function (_c) {
|
|
84
84
|
switch (_c.label) {
|
|
85
85
|
case 0:
|
|
86
86
|
utils_1.Logger.logTask('Installing npm packages');
|
|
87
|
-
return [4 /*yield*/, this.
|
|
87
|
+
return [4 /*yield*/, this.getMilestone(_options)];
|
|
88
88
|
case 1:
|
|
89
|
+
milestone = _c.sent();
|
|
90
|
+
if (!milestone)
|
|
91
|
+
return [2 /*return*/, false];
|
|
92
|
+
options = {
|
|
93
|
+
version: _options.version,
|
|
94
|
+
projectIds: _options.projectIds,
|
|
95
|
+
milestone: milestone
|
|
96
|
+
};
|
|
97
|
+
return [4 /*yield*/, this.service.getProjects(options)];
|
|
98
|
+
case 2:
|
|
89
99
|
projects = _c.sent();
|
|
90
100
|
monorepo = projects.find(function (p) { return p.id.toString() === utils_1.ProjectIds.MONOREPO_PROJECT_ID; });
|
|
91
101
|
consumingProjects = projects.filter(function (p) { return p.id.toString() !== utils_1.ProjectIds.MONOREPO_PROJECT_ID; });
|
|
@@ -98,14 +108,14 @@ var InstallPackagesTask = /** @class */ (function () {
|
|
|
98
108
|
return [2 /*return*/, false];
|
|
99
109
|
}
|
|
100
110
|
return [4 /*yield*/, this.service.getNextBranchInfo(monorepo.id, options.version)];
|
|
101
|
-
case
|
|
111
|
+
case 3:
|
|
102
112
|
_a = _c.sent(), monorepoBranch = _a.branch, monorepoBranchName = _a.branchName;
|
|
103
113
|
if (!monorepoBranch) {
|
|
104
114
|
utils_1.Logger.logError("[".concat(monorepo.title, "]: [").concat(monorepoBranchName, "] branch does not exist"));
|
|
105
115
|
return [2 /*return*/, false];
|
|
106
116
|
}
|
|
107
117
|
return [4 /*yield*/, this.getPackageVersions(monorepoBranchName)];
|
|
108
|
-
case
|
|
118
|
+
case 4:
|
|
109
119
|
versions = _c.sent();
|
|
110
120
|
utils_1.Logger.logMessage("Versions identified for ".concat(monorepoBranchName));
|
|
111
121
|
Object.keys(versions).forEach(function (key) {
|
|
@@ -113,26 +123,26 @@ var InstallPackagesTask = /** @class */ (function () {
|
|
|
113
123
|
});
|
|
114
124
|
utils_1.Logger.logMessage('\nInstalling packages:\n');
|
|
115
125
|
_i = 0, consumingProjects_1 = consumingProjects;
|
|
116
|
-
_c.label =
|
|
117
|
-
case
|
|
118
|
-
if (!(_i < consumingProjects_1.length)) return [3 /*break*/,
|
|
126
|
+
_c.label = 5;
|
|
127
|
+
case 5:
|
|
128
|
+
if (!(_i < consumingProjects_1.length)) return [3 /*break*/, 10];
|
|
119
129
|
project = consumingProjects_1[_i];
|
|
120
130
|
return [4 /*yield*/, this.service.getNextBranchInfo(project.id, options.version)];
|
|
121
|
-
case
|
|
131
|
+
case 6:
|
|
122
132
|
_b = _c.sent(), branch = _b.branch, branchName = _b.branchName;
|
|
123
133
|
if (!branch) {
|
|
124
134
|
utils_1.Logger.logError("[".concat(project.title, "]: [").concat(branchName, "] does not exist"));
|
|
125
|
-
return [3 /*break*/,
|
|
135
|
+
return [3 /*break*/, 9];
|
|
126
136
|
}
|
|
127
137
|
return [4 /*yield*/, this.updateAndSavePackageFiles(project, options.milestone, branchName, versions)];
|
|
128
|
-
case
|
|
138
|
+
case 7:
|
|
129
139
|
hasUpdates = _c.sent();
|
|
130
140
|
/**
|
|
131
141
|
* If there are no changes to the versions, we're done here
|
|
132
142
|
*/
|
|
133
143
|
if (!hasUpdates) {
|
|
134
144
|
utils_1.Logger.logWarning("[".concat(project.title, "]: [").concat(branchName, "] does not require any updates"));
|
|
135
|
-
return [3 /*break*/,
|
|
145
|
+
return [3 /*break*/, 9];
|
|
136
146
|
}
|
|
137
147
|
/**
|
|
138
148
|
* Run npm i to update our package log file
|
|
@@ -144,17 +154,48 @@ var InstallPackagesTask = /** @class */ (function () {
|
|
|
144
154
|
* Commit our updated package.json and package-lock.json
|
|
145
155
|
*/
|
|
146
156
|
return [4 /*yield*/, this.commitUpdatedFiles(project, options.milestone, branchName)];
|
|
147
|
-
case
|
|
157
|
+
case 8:
|
|
148
158
|
/**
|
|
149
159
|
* Commit our updated package.json and package-lock.json
|
|
150
160
|
*/
|
|
151
161
|
_c.sent();
|
|
152
162
|
utils_1.Logger.logMessage("[".concat(project.title, "]: File changes committed"));
|
|
153
|
-
_c.label =
|
|
154
|
-
case
|
|
163
|
+
_c.label = 9;
|
|
164
|
+
case 9:
|
|
155
165
|
_i++;
|
|
156
|
-
return [3 /*break*/,
|
|
157
|
-
case
|
|
166
|
+
return [3 /*break*/, 5];
|
|
167
|
+
case 10: return [2 /*return*/, true];
|
|
168
|
+
}
|
|
169
|
+
});
|
|
170
|
+
});
|
|
171
|
+
};
|
|
172
|
+
InstallPackagesTask.prototype.getMilestone = function (options) {
|
|
173
|
+
var _a, _b;
|
|
174
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
175
|
+
var mergeRequest;
|
|
176
|
+
return __generator(this, function (_c) {
|
|
177
|
+
switch (_c.label) {
|
|
178
|
+
case 0:
|
|
179
|
+
if (options.milestone)
|
|
180
|
+
return [2 /*return*/, options.milestone];
|
|
181
|
+
if (!options.branchName) {
|
|
182
|
+
utils_1.Logger.logError('Please provide either a milestone or branch name argument.');
|
|
183
|
+
return [2 /*return*/, ''];
|
|
184
|
+
}
|
|
185
|
+
utils_1.Logger.logInfo("Searching for a merge request in project \"monorepo\" with branch name \"".concat(options.branchName, "\"..."));
|
|
186
|
+
return [4 /*yield*/, this.service.getMergeRequest(utils_1.ProjectIds.MONOREPO_PROJECT_ID, options.branchName)];
|
|
187
|
+
case 1:
|
|
188
|
+
mergeRequest = _c.sent();
|
|
189
|
+
if (!mergeRequest) {
|
|
190
|
+
utils_1.Logger.logError("No merge request in project \"monorepo\" with branch name \"".concat(options.branchName, "\" could be found."));
|
|
191
|
+
return [2 /*return*/, ''];
|
|
192
|
+
}
|
|
193
|
+
if (!mergeRequest.milestone) {
|
|
194
|
+
utils_1.Logger.logError("No milestone could be found on merge request \"".concat(mergeRequest.title, "\". Please attach a milestone then try again: ").concat(mergeRequest.url));
|
|
195
|
+
return [2 /*return*/, ''];
|
|
196
|
+
}
|
|
197
|
+
utils_1.Logger.logInfo("Found milestone \"".concat(mergeRequest.milestone.name, "\". Proceeding to install packages in consuming projects..."));
|
|
198
|
+
return [2 /*return*/, (_b = (_a = mergeRequest.milestone) === null || _a === void 0 ? void 0 : _a.name) !== null && _b !== void 0 ? _b : ''];
|
|
158
199
|
}
|
|
159
200
|
});
|
|
160
201
|
});
|
|
@@ -64,20 +64,23 @@ var ValidateDescriptionsTask = /** @class */ (function () {
|
|
|
64
64
|
}
|
|
65
65
|
ValidateDescriptionsTask.prototype.run = function (options) {
|
|
66
66
|
return __awaiter(this, void 0, void 0, function () {
|
|
67
|
-
var projects, cont, _i, projects_1, project, invalidMrs, _a,
|
|
68
|
-
return __generator(this, function (
|
|
69
|
-
switch (
|
|
67
|
+
var projects, cont, _i, projects_1, project, invalidMrs, mergeRequestsTargetingDev, _a, mergeRequestsTargetingDev_1, mr, isDescriptionValid, groupedByUser, key, _b, _c, mr;
|
|
68
|
+
return __generator(this, function (_d) {
|
|
69
|
+
switch (_d.label) {
|
|
70
70
|
case 0:
|
|
71
71
|
utils_1.Logger.logTask('Validating descriptions');
|
|
72
72
|
return [4 /*yield*/, this.service.getProjects(options)];
|
|
73
73
|
case 1:
|
|
74
|
-
projects =
|
|
74
|
+
projects = _d.sent();
|
|
75
75
|
cont = true;
|
|
76
76
|
for (_i = 0, projects_1 = projects; _i < projects_1.length; _i++) {
|
|
77
77
|
project = projects_1[_i];
|
|
78
78
|
invalidMrs = [];
|
|
79
|
-
|
|
80
|
-
|
|
79
|
+
mergeRequestsTargetingDev = project.mergeRequests.filter(function (mergeRequest) {
|
|
80
|
+
return mergeRequest.targetBranch === 'dev';
|
|
81
|
+
});
|
|
82
|
+
for (_a = 0, mergeRequestsTargetingDev_1 = mergeRequestsTargetingDev; _a < mergeRequestsTargetingDev_1.length; _a++) {
|
|
83
|
+
mr = mergeRequestsTargetingDev_1[_a];
|
|
81
84
|
isDescriptionValid = project.id.toString() === utils_1.ProjectIds.MONOREPO_PROJECT_ID ?
|
|
82
85
|
utils_1.Descriptions.isMonorepoDescriptionValid(mr.description) :
|
|
83
86
|
utils_1.Descriptions.isDescriptionValid(mr.description);
|
|
@@ -89,8 +92,8 @@ var ValidateDescriptionsTask = /** @class */ (function () {
|
|
|
89
92
|
groupedByUser = lodash_1.default.groupBy(invalidMrs, function (mr) { return mr.author; });
|
|
90
93
|
for (key in groupedByUser) {
|
|
91
94
|
utils_1.Logger.logMessage(key);
|
|
92
|
-
for (
|
|
93
|
-
mr =
|
|
95
|
+
for (_b = 0, _c = groupedByUser[key]; _b < _c.length; _b++) {
|
|
96
|
+
mr = _c[_b];
|
|
94
97
|
utils_1.Logger.logMessage("- ".concat(mr.url));
|
|
95
98
|
}
|
|
96
99
|
}
|