@clickview/ship-it 0.0.33 → 0.0.35-dev.0
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/Dockerfile +33 -33
- package/README.md +48 -48
- package/config.json +19 -19
- package/lib/config.json +20 -20
- package/lib/src/api-clients/git-lab/GitLabApiClient.js +439 -439
- package/lib/src/api-clients/git-lab/GitLabMapper.js +82 -82
- package/lib/src/api-clients/index.js +20 -20
- package/lib/src/api-clients/slack/SlackApiClient.js +206 -206
- package/lib/src/api-clients/team-city/TeamCityApiClient.js +100 -100
- package/lib/src/api-clients/trello/TrelloApiClient.js +145 -145
- package/lib/src/commands/BumpPackagesCommand.js +84 -84
- package/lib/src/commands/CreateBranchCommand.js +100 -100
- package/lib/src/commands/CreateMergeRequestCommand.js +107 -107
- package/lib/src/commands/CreateNotesAuditCommand.js +84 -84
- package/lib/src/commands/CreateReleaseNotesCommand.js +95 -95
- package/lib/src/commands/CreateTrelloCardsCommand.js +77 -77
- package/lib/src/commands/InstallPackagesCommand.js +76 -76
- package/lib/src/commands/ListProjectsCommand.js +76 -76
- package/lib/src/commands/ReleaseCommand.js +129 -129
- package/lib/src/commands/StartProjectBuildsCommand.js +76 -76
- package/lib/src/commands/StatusCommand.js +88 -88
- package/lib/src/commands/TagMasterCommand.js +76 -76
- package/lib/src/commands/ValidateMergeRequestCommand.js +76 -76
- package/lib/src/commands/VersionCommand.js +76 -76
- package/lib/src/commands/index.js +30 -30
- package/lib/src/constants/CommandTypeMapping.js +20 -20
- package/lib/src/constants/GitLabMemberIds.js +6 -6
- package/lib/src/constants/MonorepoPackageJsonFiles.js +17 -17
- package/lib/src/constants/MonorepoProjectNames.js +16 -16
- package/lib/src/constants/ProjectNames.js +68 -68
- package/lib/src/constants/SlackUserEmailList.js +13 -13
- package/lib/src/constants/TeamCityBuildIDs.js +45 -45
- package/lib/src/constants/index.js +19 -19
- package/lib/src/errors/ShipItError.js +32 -32
- package/lib/src/errors/index.js +17 -17
- package/lib/src/index.js +18 -18
- package/lib/src/interfaces/Config.js +2 -2
- package/lib/src/interfaces/MergeRequestState.js +2 -2
- package/lib/src/interfaces/ProjectNames.js +2 -2
- package/lib/src/interfaces/ShipItCommand.js +2 -2
- package/lib/src/interfaces/ShipItTask.js +2 -2
- package/lib/src/interfaces/VersionType.js +2 -2
- package/lib/src/interfaces/command-cli-options/MilestoneCommandCliOptions.js +2 -2
- package/lib/src/interfaces/command-cli-options/ReleaseCommandCliOptions.js +2 -2
- package/lib/src/interfaces/command-cli-options/StatusCommandCliOptions.js +2 -2
- package/lib/src/interfaces/command-cli-options/index.js +19 -19
- package/lib/src/interfaces/command-options/BaseCommandOptions.js +2 -2
- package/lib/src/interfaces/command-options/BumpPackagesCommandOptions.js +2 -2
- package/lib/src/interfaces/command-options/DockerMilestoneCommandOptions.js +2 -2
- package/lib/src/interfaces/command-options/MilestoneCommandOptions.js +2 -2
- package/lib/src/interfaces/command-options/ReleaseCommandOptions.js +2 -2
- package/lib/src/interfaces/command-options/StatusCommandOptions.js +2 -2
- package/lib/src/interfaces/command-options/ValidateMRCommandOptions.js +2 -2
- package/lib/src/interfaces/command-options/index.js +22 -22
- package/lib/src/interfaces/index.js +26 -26
- package/lib/src/interfaces/models/Branch.js +2 -2
- package/lib/src/interfaces/models/Commit.js +2 -2
- package/lib/src/interfaces/models/CommitFile.js +2 -2
- package/lib/src/interfaces/models/File.js +2 -2
- package/lib/src/interfaces/models/Label.js +2 -2
- package/lib/src/interfaces/models/MergeRequest.js +2 -2
- package/lib/src/interfaces/models/Milestone.js +2 -2
- package/lib/src/interfaces/models/Project.js +2 -2
- package/lib/src/interfaces/models/ProjectConfig.js +9 -9
- package/lib/src/interfaces/models/Release.js +2 -2
- package/lib/src/interfaces/models/Tag.js +2 -2
- package/lib/src/interfaces/models/index.js +26 -26
- package/lib/src/interfaces/view-models/MilestoneProject.js +2 -2
- package/lib/src/interfaces/view-models/index.js +17 -17
- package/lib/src/inversify.config.js +75 -75
- package/lib/src/services/GitLabService.js +510 -508
- package/lib/src/services/SlackService.js +142 -142
- package/lib/src/services/TeamCityService.js +37 -37
- package/lib/src/services/TrelloService.js +84 -84
- package/lib/src/services/index.js +20 -20
- package/lib/src/startup/AddMilestoneCommand.js +96 -96
- package/lib/src/startup/GetAction.js +68 -68
- package/lib/src/startup/SetupCommands.js +168 -168
- package/lib/src/tasks/BumpPackagesTask.js +229 -229
- package/lib/src/tasks/BumpVersionTxtTask.js +110 -110
- package/lib/src/tasks/CommitPackageVersionsTask.js +116 -116
- package/lib/src/tasks/CreateBranchTask.js +104 -104
- package/lib/src/tasks/CreateMergeRequestTask.js +118 -118
- package/lib/src/tasks/CreateNotesAuditTask.js +140 -140
- package/lib/src/tasks/CreateReleaseNotesTask.js +144 -144
- package/lib/src/tasks/InstallPackagesTask.js +407 -407
- package/lib/src/tasks/ListProjectsTask.js +87 -87
- package/lib/src/tasks/PopulateTrelloBoardTask.js +140 -140
- package/lib/src/tasks/StartMonorepoBuildTask.js +109 -109
- package/lib/src/tasks/StartProjectBuildsTask.js +170 -170
- package/lib/src/tasks/TagMasterTask.js +186 -186
- package/lib/src/tasks/ValidateCommitsTask.js +143 -143
- package/lib/src/tasks/ValidateDescriptionsTask.js +178 -178
- package/lib/src/tasks/ValidateMergeRequestTask.js +115 -115
- package/lib/src/tasks/ValidateTask.js +419 -419
- package/lib/src/tasks/VersionTask.js +98 -98
- package/lib/src/tasks/index.js +34 -34
- package/lib/src/types.js +57 -57
- package/lib/src/utils/BranchNames.js +11 -11
- package/lib/src/utils/Commits.js +55 -55
- package/lib/src/utils/Csv.js +54 -54
- package/lib/src/utils/Descriptions.js +274 -274
- package/lib/src/utils/GroupIds.js +6 -6
- package/lib/src/utils/Logger.js +62 -62
- package/lib/src/utils/ProjectIds.js +47 -47
- package/lib/src/utils/Versions.js +20 -20
- package/lib/src/utils/index.js +22 -22
- package/package.json +50 -50
|
@@ -1,229 +1,229 @@
|
|
|
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 __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
|
-
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
|
-
};
|
|
14
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
15
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
16
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
17
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
18
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
19
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
20
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
21
|
-
});
|
|
22
|
-
};
|
|
23
|
-
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
24
|
-
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
25
|
-
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
26
|
-
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
27
|
-
function step(op) {
|
|
28
|
-
if (f) throw new TypeError("Generator is already executing.");
|
|
29
|
-
while (_) try {
|
|
30
|
-
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
31
|
-
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
32
|
-
switch (op[0]) {
|
|
33
|
-
case 0: case 1: t = op; break;
|
|
34
|
-
case 4: _.label++; return { value: op[1], done: false };
|
|
35
|
-
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
36
|
-
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
37
|
-
default:
|
|
38
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
39
|
-
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
40
|
-
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
41
|
-
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
42
|
-
if (t[2]) _.ops.pop();
|
|
43
|
-
_.trys.pop(); continue;
|
|
44
|
-
}
|
|
45
|
-
op = body.call(thisArg, _);
|
|
46
|
-
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
47
|
-
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
48
|
-
}
|
|
49
|
-
};
|
|
50
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
51
|
-
exports.BumpPackagesTask = void 0;
|
|
52
|
-
require("reflect-metadata");
|
|
53
|
-
var inversify_1 = require("inversify");
|
|
54
|
-
var child_process_1 = require("child_process");
|
|
55
|
-
var types_1 = require("../types");
|
|
56
|
-
var services_1 = require("../services");
|
|
57
|
-
var MonorepoPackageJsonFiles_1 = require("../constants/MonorepoPackageJsonFiles");
|
|
58
|
-
var utils_1 = require("../utils");
|
|
59
|
-
var RELEASE_BRANCH_REGEX = /^release\/(\d|\.)+$/;
|
|
60
|
-
var HOTFIX_BRANCH_REGEX = /^hotfix\/(\d|\.)+$/;
|
|
61
|
-
var DEV_VERSION_REGEX = /-dev\.\d+$/;
|
|
62
|
-
var RC_VERSION_REGEX = /-rc\.\d+$/;
|
|
63
|
-
var SHARED_LERNA_OPTIONS = '--exact --no-git-tag-version --no-push --yes';
|
|
64
|
-
var BumpPackagesTask = /** @class */ (function () {
|
|
65
|
-
function BumpPackagesTask(service) {
|
|
66
|
-
this.isReleaseBranch = false;
|
|
67
|
-
this.isHotfixBranch = false;
|
|
68
|
-
this.service = service;
|
|
69
|
-
}
|
|
70
|
-
BumpPackagesTask.prototype.run = function (options) {
|
|
71
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
72
|
-
var branch, isValid, lernaVersionCmd;
|
|
73
|
-
return __generator(this, function (_a) {
|
|
74
|
-
switch (_a.label) {
|
|
75
|
-
case 0:
|
|
76
|
-
utils_1.Logger.logTask('Bumping clickview npm package versions');
|
|
77
|
-
this.isReleaseBranch = RELEASE_BRANCH_REGEX.test(options.branchName);
|
|
78
|
-
this.isHotfixBranch = HOTFIX_BRANCH_REGEX.test(options.branchName);
|
|
79
|
-
return [4 /*yield*/, this.service.getBranch(utils_1.ProjectIds.MONOREPO_PROJECT_ID, options.branchName)];
|
|
80
|
-
case 1:
|
|
81
|
-
branch = _a.sent();
|
|
82
|
-
if (!branch) {
|
|
83
|
-
utils_1.Logger.logError("Branch with name ".concat(options.branchName, " was not be found."));
|
|
84
|
-
return [2 /*return*/, false];
|
|
85
|
-
}
|
|
86
|
-
isValid = this.validateOptions(options);
|
|
87
|
-
if (!isValid)
|
|
88
|
-
return [2 /*return*/, false];
|
|
89
|
-
return [4 /*yield*/, this.getLernaCommand(options)];
|
|
90
|
-
case 2:
|
|
91
|
-
lernaVersionCmd = _a.sent();
|
|
92
|
-
if (!lernaVersionCmd) {
|
|
93
|
-
utils_1.Logger.logError('Something went wrong while trying to detect which versioning script to run with Lerna.');
|
|
94
|
-
return [2 /*return*/, false];
|
|
95
|
-
}
|
|
96
|
-
(0, child_process_1.execSync)(lernaVersionCmd);
|
|
97
|
-
utils_1.Logger.logSuccess('Successfully executed Lerna versioning command.');
|
|
98
|
-
return [2 /*return*/, true];
|
|
99
|
-
}
|
|
100
|
-
});
|
|
101
|
-
});
|
|
102
|
-
};
|
|
103
|
-
BumpPackagesTask.prototype.validateOptions = function (options) {
|
|
104
|
-
var isValidReleaseBranch = this.isReleaseBranch || this.isHotfixBranch;
|
|
105
|
-
if (options.preId && options.preId !== 'rc' && options.preId !== 'dev') {
|
|
106
|
-
utils_1.Logger.logError("Argument for \"preId\" can only be \"rc\" or \"dev\". You entered: ".concat(options.preId));
|
|
107
|
-
return false;
|
|
108
|
-
}
|
|
109
|
-
if (options.preId === 'dev' && isValidReleaseBranch) {
|
|
110
|
-
utils_1.Logger.logError('Dev versions cannot be generated on release or hotfix branches.');
|
|
111
|
-
return false;
|
|
112
|
-
}
|
|
113
|
-
if (options.preId === 'rc' && !isValidReleaseBranch) {
|
|
114
|
-
utils_1.Logger.logError('Release Candidate versions can only be generated on release or hotfix branches.');
|
|
115
|
-
return false;
|
|
116
|
-
}
|
|
117
|
-
if (!options.preId && !isValidReleaseBranch) {
|
|
118
|
-
utils_1.Logger.logError('Production package versions can only be generated on release or hotfix branches.');
|
|
119
|
-
return false;
|
|
120
|
-
}
|
|
121
|
-
return true;
|
|
122
|
-
};
|
|
123
|
-
BumpPackagesTask.prototype.getFileText = function (projectId, branchName, fileName) {
|
|
124
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
125
|
-
var file, buff;
|
|
126
|
-
return __generator(this, function (_a) {
|
|
127
|
-
switch (_a.label) {
|
|
128
|
-
case 0: return [4 /*yield*/, this.service.getFile(projectId, branchName, fileName)];
|
|
129
|
-
case 1:
|
|
130
|
-
file = _a.sent();
|
|
131
|
-
if (!file)
|
|
132
|
-
return [2 /*return*/, ''];
|
|
133
|
-
buff = Buffer.from(file.content, 'base64');
|
|
134
|
-
return [2 /*return*/, buff.toString('utf-8')];
|
|
135
|
-
}
|
|
136
|
-
});
|
|
137
|
-
});
|
|
138
|
-
};
|
|
139
|
-
BumpPackagesTask.prototype.getLernaCommand = function (options) {
|
|
140
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
141
|
-
var isInPrerelease;
|
|
142
|
-
return __generator(this, function (_a) {
|
|
143
|
-
switch (_a.label) {
|
|
144
|
-
case 0: return [4 /*yield*/, this.isInPrerelease(options.branchName)];
|
|
145
|
-
case 1:
|
|
146
|
-
isInPrerelease = _a.sent();
|
|
147
|
-
/**
|
|
148
|
-
* The `lerna version prerelease` script only cares about incrementing the preId part
|
|
149
|
-
* of the version number. That's why we run this if `isInPrerelease` is true.
|
|
150
|
-
*
|
|
151
|
-
* E.g. this would change 0.0.1-dev.0 to 0.0.0-dev.1
|
|
152
|
-
*/
|
|
153
|
-
if (isInPrerelease && options.preId) {
|
|
154
|
-
utils_1.Logger.logMessage("Incrementing \"".concat(options.preId, "\" preId for each package."));
|
|
155
|
-
return [2 /*return*/, "lerna version prerelease --preid ".concat(options.preId, " ").concat(SHARED_LERNA_OPTIONS)];
|
|
156
|
-
}
|
|
157
|
-
// Bump the patch with the preId "dev". We currently only support dev prereleases on patch versions
|
|
158
|
-
if (options.preId === 'dev') {
|
|
159
|
-
utils_1.Logger.logMessage("Incrementing the patch version for each package and appending preId: \"dev\".");
|
|
160
|
-
return [2 /*return*/, "lerna version prepatch --preid dev ".concat(SHARED_LERNA_OPTIONS)];
|
|
161
|
-
}
|
|
162
|
-
if (options.preId === 'rc') {
|
|
163
|
-
// Bump the minor number with the preId "rc". Release branches always bump the minor number.
|
|
164
|
-
if (this.isReleaseBranch) {
|
|
165
|
-
utils_1.Logger.logMessage("Incrementing the minor version for each package and appending preId: \"rc\".");
|
|
166
|
-
return [2 /*return*/, "lerna version preminor --preid rc ".concat(SHARED_LERNA_OPTIONS)];
|
|
167
|
-
}
|
|
168
|
-
// Bump the patch with the preId "rc". Hotfix branches always bump the patch number.
|
|
169
|
-
if (this.isHotfixBranch) {
|
|
170
|
-
utils_1.Logger.logMessage("Incrementing the patch version for each package and appending preId: \"rc\".");
|
|
171
|
-
return [2 /*return*/, "lerna version prepatch --preid rc ".concat(SHARED_LERNA_OPTIONS)];
|
|
172
|
-
}
|
|
173
|
-
}
|
|
174
|
-
/**
|
|
175
|
-
* If no preId is provided, we bump the version number to a production version.
|
|
176
|
-
*
|
|
177
|
-
* Release branch = minor bump
|
|
178
|
-
* Hotfix branch = patch bump
|
|
179
|
-
*/
|
|
180
|
-
if (this.isReleaseBranch) {
|
|
181
|
-
utils_1.Logger.logMessage('Updating each package to production release version.');
|
|
182
|
-
return [2 /*return*/, "lerna version minor ".concat(SHARED_LERNA_OPTIONS)];
|
|
183
|
-
}
|
|
184
|
-
if (this.isHotfixBranch) {
|
|
185
|
-
utils_1.Logger.logMessage('Updating each package to production hotfix version.');
|
|
186
|
-
return [2 /*return*/, "lerna version patch ".concat(SHARED_LERNA_OPTIONS)];
|
|
187
|
-
}
|
|
188
|
-
// Should never be reached
|
|
189
|
-
return [2 /*return*/, ''];
|
|
190
|
-
}
|
|
191
|
-
});
|
|
192
|
-
});
|
|
193
|
-
};
|
|
194
|
-
BumpPackagesTask.prototype.isInPrerelease = function (branchName) {
|
|
195
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
196
|
-
var _i, MONOREPO_PACKAGE_JSON_FILES_1, file, text, json;
|
|
197
|
-
return __generator(this, function (_a) {
|
|
198
|
-
switch (_a.label) {
|
|
199
|
-
case 0:
|
|
200
|
-
_i = 0, MONOREPO_PACKAGE_JSON_FILES_1 = MonorepoPackageJsonFiles_1.MONOREPO_PACKAGE_JSON_FILES;
|
|
201
|
-
_a.label = 1;
|
|
202
|
-
case 1:
|
|
203
|
-
if (!(_i < MONOREPO_PACKAGE_JSON_FILES_1.length)) return [3 /*break*/, 4];
|
|
204
|
-
file = MONOREPO_PACKAGE_JSON_FILES_1[_i];
|
|
205
|
-
return [4 /*yield*/, this.getFileText(utils_1.ProjectIds.MONOREPO_PROJECT_ID, branchName, file)];
|
|
206
|
-
case 2:
|
|
207
|
-
text = _a.sent();
|
|
208
|
-
json = JSON.parse(text);
|
|
209
|
-
if (RC_VERSION_REGEX.test(json.version))
|
|
210
|
-
return [2 /*return*/, true];
|
|
211
|
-
if (DEV_VERSION_REGEX.test(json.version))
|
|
212
|
-
return [2 /*return*/, true];
|
|
213
|
-
_a.label = 3;
|
|
214
|
-
case 3:
|
|
215
|
-
_i++;
|
|
216
|
-
return [3 /*break*/, 1];
|
|
217
|
-
case 4: return [2 /*return*/, false];
|
|
218
|
-
}
|
|
219
|
-
});
|
|
220
|
-
});
|
|
221
|
-
};
|
|
222
|
-
BumpPackagesTask = __decorate([
|
|
223
|
-
(0, inversify_1.injectable)(),
|
|
224
|
-
__param(0, (0, inversify_1.inject)(types_1.SERVICES.GitLabService)),
|
|
225
|
-
__metadata("design:paramtypes", [services_1.GitLabService])
|
|
226
|
-
], BumpPackagesTask);
|
|
227
|
-
return BumpPackagesTask;
|
|
228
|
-
}());
|
|
229
|
-
exports.BumpPackagesTask = BumpPackagesTask;
|
|
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 __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
|
+
};
|
|
14
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
15
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
16
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
17
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
18
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
19
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
20
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
21
|
+
});
|
|
22
|
+
};
|
|
23
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
24
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
25
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
26
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
27
|
+
function step(op) {
|
|
28
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
29
|
+
while (_) try {
|
|
30
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
31
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
32
|
+
switch (op[0]) {
|
|
33
|
+
case 0: case 1: t = op; break;
|
|
34
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
35
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
36
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
37
|
+
default:
|
|
38
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
39
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
40
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
41
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
42
|
+
if (t[2]) _.ops.pop();
|
|
43
|
+
_.trys.pop(); continue;
|
|
44
|
+
}
|
|
45
|
+
op = body.call(thisArg, _);
|
|
46
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
47
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
51
|
+
exports.BumpPackagesTask = void 0;
|
|
52
|
+
require("reflect-metadata");
|
|
53
|
+
var inversify_1 = require("inversify");
|
|
54
|
+
var child_process_1 = require("child_process");
|
|
55
|
+
var types_1 = require("../types");
|
|
56
|
+
var services_1 = require("../services");
|
|
57
|
+
var MonorepoPackageJsonFiles_1 = require("../constants/MonorepoPackageJsonFiles");
|
|
58
|
+
var utils_1 = require("../utils");
|
|
59
|
+
var RELEASE_BRANCH_REGEX = /^release\/(\d|\.)+$/;
|
|
60
|
+
var HOTFIX_BRANCH_REGEX = /^hotfix\/(\d|\.)+$/;
|
|
61
|
+
var DEV_VERSION_REGEX = /-dev\.\d+$/;
|
|
62
|
+
var RC_VERSION_REGEX = /-rc\.\d+$/;
|
|
63
|
+
var SHARED_LERNA_OPTIONS = '--exact --no-git-tag-version --no-push --yes';
|
|
64
|
+
var BumpPackagesTask = /** @class */ (function () {
|
|
65
|
+
function BumpPackagesTask(service) {
|
|
66
|
+
this.isReleaseBranch = false;
|
|
67
|
+
this.isHotfixBranch = false;
|
|
68
|
+
this.service = service;
|
|
69
|
+
}
|
|
70
|
+
BumpPackagesTask.prototype.run = function (options) {
|
|
71
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
72
|
+
var branch, isValid, lernaVersionCmd;
|
|
73
|
+
return __generator(this, function (_a) {
|
|
74
|
+
switch (_a.label) {
|
|
75
|
+
case 0:
|
|
76
|
+
utils_1.Logger.logTask('Bumping clickview npm package versions');
|
|
77
|
+
this.isReleaseBranch = RELEASE_BRANCH_REGEX.test(options.branchName);
|
|
78
|
+
this.isHotfixBranch = HOTFIX_BRANCH_REGEX.test(options.branchName);
|
|
79
|
+
return [4 /*yield*/, this.service.getBranch(utils_1.ProjectIds.MONOREPO_PROJECT_ID, options.branchName)];
|
|
80
|
+
case 1:
|
|
81
|
+
branch = _a.sent();
|
|
82
|
+
if (!branch) {
|
|
83
|
+
utils_1.Logger.logError("Branch with name ".concat(options.branchName, " was not be found."));
|
|
84
|
+
return [2 /*return*/, false];
|
|
85
|
+
}
|
|
86
|
+
isValid = this.validateOptions(options);
|
|
87
|
+
if (!isValid)
|
|
88
|
+
return [2 /*return*/, false];
|
|
89
|
+
return [4 /*yield*/, this.getLernaCommand(options)];
|
|
90
|
+
case 2:
|
|
91
|
+
lernaVersionCmd = _a.sent();
|
|
92
|
+
if (!lernaVersionCmd) {
|
|
93
|
+
utils_1.Logger.logError('Something went wrong while trying to detect which versioning script to run with Lerna.');
|
|
94
|
+
return [2 /*return*/, false];
|
|
95
|
+
}
|
|
96
|
+
(0, child_process_1.execSync)(lernaVersionCmd);
|
|
97
|
+
utils_1.Logger.logSuccess('Successfully executed Lerna versioning command.');
|
|
98
|
+
return [2 /*return*/, true];
|
|
99
|
+
}
|
|
100
|
+
});
|
|
101
|
+
});
|
|
102
|
+
};
|
|
103
|
+
BumpPackagesTask.prototype.validateOptions = function (options) {
|
|
104
|
+
var isValidReleaseBranch = this.isReleaseBranch || this.isHotfixBranch;
|
|
105
|
+
if (options.preId && options.preId !== 'rc' && options.preId !== 'dev') {
|
|
106
|
+
utils_1.Logger.logError("Argument for \"preId\" can only be \"rc\" or \"dev\". You entered: ".concat(options.preId));
|
|
107
|
+
return false;
|
|
108
|
+
}
|
|
109
|
+
if (options.preId === 'dev' && isValidReleaseBranch) {
|
|
110
|
+
utils_1.Logger.logError('Dev versions cannot be generated on release or hotfix branches.');
|
|
111
|
+
return false;
|
|
112
|
+
}
|
|
113
|
+
if (options.preId === 'rc' && !isValidReleaseBranch) {
|
|
114
|
+
utils_1.Logger.logError('Release Candidate versions can only be generated on release or hotfix branches.');
|
|
115
|
+
return false;
|
|
116
|
+
}
|
|
117
|
+
if (!options.preId && !isValidReleaseBranch) {
|
|
118
|
+
utils_1.Logger.logError('Production package versions can only be generated on release or hotfix branches.');
|
|
119
|
+
return false;
|
|
120
|
+
}
|
|
121
|
+
return true;
|
|
122
|
+
};
|
|
123
|
+
BumpPackagesTask.prototype.getFileText = function (projectId, branchName, fileName) {
|
|
124
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
125
|
+
var file, buff;
|
|
126
|
+
return __generator(this, function (_a) {
|
|
127
|
+
switch (_a.label) {
|
|
128
|
+
case 0: return [4 /*yield*/, this.service.getFile(projectId, branchName, fileName)];
|
|
129
|
+
case 1:
|
|
130
|
+
file = _a.sent();
|
|
131
|
+
if (!file)
|
|
132
|
+
return [2 /*return*/, ''];
|
|
133
|
+
buff = Buffer.from(file.content, 'base64');
|
|
134
|
+
return [2 /*return*/, buff.toString('utf-8')];
|
|
135
|
+
}
|
|
136
|
+
});
|
|
137
|
+
});
|
|
138
|
+
};
|
|
139
|
+
BumpPackagesTask.prototype.getLernaCommand = function (options) {
|
|
140
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
141
|
+
var isInPrerelease;
|
|
142
|
+
return __generator(this, function (_a) {
|
|
143
|
+
switch (_a.label) {
|
|
144
|
+
case 0: return [4 /*yield*/, this.isInPrerelease(options.branchName)];
|
|
145
|
+
case 1:
|
|
146
|
+
isInPrerelease = _a.sent();
|
|
147
|
+
/**
|
|
148
|
+
* The `lerna version prerelease` script only cares about incrementing the preId part
|
|
149
|
+
* of the version number. That's why we run this if `isInPrerelease` is true.
|
|
150
|
+
*
|
|
151
|
+
* E.g. this would change 0.0.1-dev.0 to 0.0.0-dev.1
|
|
152
|
+
*/
|
|
153
|
+
if (isInPrerelease && options.preId) {
|
|
154
|
+
utils_1.Logger.logMessage("Incrementing \"".concat(options.preId, "\" preId for each package."));
|
|
155
|
+
return [2 /*return*/, "lerna version prerelease --preid ".concat(options.preId, " ").concat(SHARED_LERNA_OPTIONS)];
|
|
156
|
+
}
|
|
157
|
+
// Bump the patch with the preId "dev". We currently only support dev prereleases on patch versions
|
|
158
|
+
if (options.preId === 'dev') {
|
|
159
|
+
utils_1.Logger.logMessage("Incrementing the patch version for each package and appending preId: \"dev\".");
|
|
160
|
+
return [2 /*return*/, "lerna version prepatch --preid dev ".concat(SHARED_LERNA_OPTIONS)];
|
|
161
|
+
}
|
|
162
|
+
if (options.preId === 'rc') {
|
|
163
|
+
// Bump the minor number with the preId "rc". Release branches always bump the minor number.
|
|
164
|
+
if (this.isReleaseBranch) {
|
|
165
|
+
utils_1.Logger.logMessage("Incrementing the minor version for each package and appending preId: \"rc\".");
|
|
166
|
+
return [2 /*return*/, "lerna version preminor --preid rc ".concat(SHARED_LERNA_OPTIONS)];
|
|
167
|
+
}
|
|
168
|
+
// Bump the patch with the preId "rc". Hotfix branches always bump the patch number.
|
|
169
|
+
if (this.isHotfixBranch) {
|
|
170
|
+
utils_1.Logger.logMessage("Incrementing the patch version for each package and appending preId: \"rc\".");
|
|
171
|
+
return [2 /*return*/, "lerna version prepatch --preid rc ".concat(SHARED_LERNA_OPTIONS)];
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* If no preId is provided, we bump the version number to a production version.
|
|
176
|
+
*
|
|
177
|
+
* Release branch = minor bump
|
|
178
|
+
* Hotfix branch = patch bump
|
|
179
|
+
*/
|
|
180
|
+
if (this.isReleaseBranch) {
|
|
181
|
+
utils_1.Logger.logMessage('Updating each package to production release version.');
|
|
182
|
+
return [2 /*return*/, "lerna version minor ".concat(SHARED_LERNA_OPTIONS)];
|
|
183
|
+
}
|
|
184
|
+
if (this.isHotfixBranch) {
|
|
185
|
+
utils_1.Logger.logMessage('Updating each package to production hotfix version.');
|
|
186
|
+
return [2 /*return*/, "lerna version patch ".concat(SHARED_LERNA_OPTIONS)];
|
|
187
|
+
}
|
|
188
|
+
// Should never be reached
|
|
189
|
+
return [2 /*return*/, ''];
|
|
190
|
+
}
|
|
191
|
+
});
|
|
192
|
+
});
|
|
193
|
+
};
|
|
194
|
+
BumpPackagesTask.prototype.isInPrerelease = function (branchName) {
|
|
195
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
196
|
+
var _i, MONOREPO_PACKAGE_JSON_FILES_1, file, text, json;
|
|
197
|
+
return __generator(this, function (_a) {
|
|
198
|
+
switch (_a.label) {
|
|
199
|
+
case 0:
|
|
200
|
+
_i = 0, MONOREPO_PACKAGE_JSON_FILES_1 = MonorepoPackageJsonFiles_1.MONOREPO_PACKAGE_JSON_FILES;
|
|
201
|
+
_a.label = 1;
|
|
202
|
+
case 1:
|
|
203
|
+
if (!(_i < MONOREPO_PACKAGE_JSON_FILES_1.length)) return [3 /*break*/, 4];
|
|
204
|
+
file = MONOREPO_PACKAGE_JSON_FILES_1[_i];
|
|
205
|
+
return [4 /*yield*/, this.getFileText(utils_1.ProjectIds.MONOREPO_PROJECT_ID, branchName, file)];
|
|
206
|
+
case 2:
|
|
207
|
+
text = _a.sent();
|
|
208
|
+
json = JSON.parse(text);
|
|
209
|
+
if (RC_VERSION_REGEX.test(json.version))
|
|
210
|
+
return [2 /*return*/, true];
|
|
211
|
+
if (DEV_VERSION_REGEX.test(json.version))
|
|
212
|
+
return [2 /*return*/, true];
|
|
213
|
+
_a.label = 3;
|
|
214
|
+
case 3:
|
|
215
|
+
_i++;
|
|
216
|
+
return [3 /*break*/, 1];
|
|
217
|
+
case 4: return [2 /*return*/, false];
|
|
218
|
+
}
|
|
219
|
+
});
|
|
220
|
+
});
|
|
221
|
+
};
|
|
222
|
+
BumpPackagesTask = __decorate([
|
|
223
|
+
(0, inversify_1.injectable)(),
|
|
224
|
+
__param(0, (0, inversify_1.inject)(types_1.SERVICES.GitLabService)),
|
|
225
|
+
__metadata("design:paramtypes", [services_1.GitLabService])
|
|
226
|
+
], BumpPackagesTask);
|
|
227
|
+
return BumpPackagesTask;
|
|
228
|
+
}());
|
|
229
|
+
exports.BumpPackagesTask = BumpPackagesTask;
|