@clickview/ship-it 0.0.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/README.md +1 -0
- package/lib/src/api-clients/GitLabApiClient.js +342 -0
- package/lib/src/api-clients/index.js +17 -0
- package/lib/src/commands/BumpPackagesCommand.js +78 -0
- package/lib/src/commands/CreateBranchCommand.js +102 -0
- package/lib/src/commands/CreateMergeRequestCommand.js +109 -0
- package/lib/src/commands/CreateReleaseNotesCommand.js +86 -0
- package/lib/src/commands/ReleaseCommand.js +122 -0
- package/lib/src/commands/StatusCommand.js +78 -0
- package/lib/src/commands/VersionCommand.js +78 -0
- package/lib/src/commands/index.js +23 -0
- package/lib/src/index.js +101 -0
- package/lib/src/interfaces/Config.js +2 -0
- package/lib/src/interfaces/ShipItCommand.js +2 -0
- package/lib/src/interfaces/ShipItOptions.js +2 -0
- package/lib/src/interfaces/ShipItTask.js +2 -0
- package/lib/src/interfaces/index.js +22 -0
- package/lib/src/interfaces/models/Branch.js +2 -0
- package/lib/src/interfaces/models/Commit.js +2 -0
- package/lib/src/interfaces/models/CommitFile.js +2 -0
- package/lib/src/interfaces/models/File.js +2 -0
- package/lib/src/interfaces/models/MergeRequest.js +2 -0
- package/lib/src/interfaces/models/Project.js +2 -0
- package/lib/src/interfaces/models/Tag.js +2 -0
- package/lib/src/interfaces/models/index.js +23 -0
- package/lib/src/interfaces/view-models/MilestoneProject.js +2 -0
- package/lib/src/interfaces/view-models/index.js +17 -0
- package/lib/src/inversify.config.js +48 -0
- package/lib/src/services/GitLabService.js +252 -0
- package/lib/src/services/index.js +17 -0
- package/lib/src/tasks/BumpPackagesTask.js +353 -0
- package/lib/src/tasks/BumpVersionTxtTask.js +115 -0
- package/lib/src/tasks/CreateBranchTask.js +119 -0
- package/lib/src/tasks/CreateMergeRequestTask.js +130 -0
- package/lib/src/tasks/CreateReleaseNotesTask.js +124 -0
- package/lib/src/tasks/ValidateCommitsTask.js +115 -0
- package/lib/src/tasks/ValidateDescriptionsTask.js +118 -0
- package/lib/src/tasks/ValidateTask.js +167 -0
- package/lib/src/tasks/VersionTask.js +111 -0
- package/lib/src/tasks/index.js +25 -0
- package/lib/src/types.js +32 -0
- package/lib/src/utils/BranchNames.js +11 -0
- package/lib/src/utils/Commits.js +33 -0
- package/lib/src/utils/Descriptions.js +162 -0
- package/lib/src/utils/Logger.js +62 -0
- package/lib/src/utils/ProjectIds.js +34 -0
- package/lib/src/utils/Versions.js +20 -0
- package/lib/src/utils/index.js +22 -0
- package/package.json +45 -0
|
@@ -0,0 +1,353 @@
|
|
|
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
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
51
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
52
|
+
};
|
|
53
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
54
|
+
exports.BumpPackagesTask = void 0;
|
|
55
|
+
require("reflect-metadata");
|
|
56
|
+
var inversify_1 = require("inversify");
|
|
57
|
+
var fs_extra_1 = __importDefault(require("fs-extra"));
|
|
58
|
+
var semver_1 = __importDefault(require("semver"));
|
|
59
|
+
var child_process_1 = __importDefault(require("child_process"));
|
|
60
|
+
var types_1 = require("../types");
|
|
61
|
+
var services_1 = require("../services");
|
|
62
|
+
var utils_1 = require("../utils");
|
|
63
|
+
var MONOREPO_PACKAGES_FILES = [
|
|
64
|
+
'packages/libs/analytics/package.json',
|
|
65
|
+
'packages/libs/styles/package.json',
|
|
66
|
+
'packages/libs/tooling/package.json',
|
|
67
|
+
'packages/projects/curator/package.json',
|
|
68
|
+
'packages/projects/library-editor/package.json',
|
|
69
|
+
'packages/projects/lite/package.json',
|
|
70
|
+
'packages/projects/online/package.json',
|
|
71
|
+
'packages/projects/reports/package.json'
|
|
72
|
+
];
|
|
73
|
+
var ROOT_DIRECTORIES = {
|
|
74
|
+
// Curator
|
|
75
|
+
62: 'src/ClickView.Curator.Web/Assets',
|
|
76
|
+
// Library Editor
|
|
77
|
+
534: 'src/ClickView.Cloud',
|
|
78
|
+
// Lite
|
|
79
|
+
822: 'src/ClickView.Lite',
|
|
80
|
+
// Online
|
|
81
|
+
109: 'src/ClickView.Web.Online.Pages',
|
|
82
|
+
// Reports
|
|
83
|
+
970: 'src/ClickView.Analytics.Web'
|
|
84
|
+
};
|
|
85
|
+
var BumpPackagesTask = /** @class */ (function () {
|
|
86
|
+
function BumpPackagesTask(service) {
|
|
87
|
+
this._service = service;
|
|
88
|
+
}
|
|
89
|
+
BumpPackagesTask.prototype.run = function (options) {
|
|
90
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
91
|
+
var projects, monorepo, consumingProjects, monorepoBranchName, versions, _i, consumingProjects_1, project, branchName, _a, consumingProjects_2, project, _b, consumingProjects_3, project, branchName;
|
|
92
|
+
return __generator(this, function (_c) {
|
|
93
|
+
switch (_c.label) {
|
|
94
|
+
case 0:
|
|
95
|
+
utils_1.Logger.logTask('Bumping npm packages');
|
|
96
|
+
return [4 /*yield*/, this._service.getProjects(options)];
|
|
97
|
+
case 1:
|
|
98
|
+
projects = _c.sent();
|
|
99
|
+
monorepo = projects.find(function (p) { return p.id.toString() === utils_1.ProjectIds.MONOREPO_PROJECT_ID; });
|
|
100
|
+
consumingProjects = projects.filter(function (p) { return p.id.toString() !== utils_1.ProjectIds.MONOREPO_PROJECT_ID; });
|
|
101
|
+
if (!monorepo) {
|
|
102
|
+
utils_1.Logger.logError("Monorepo was not in this release");
|
|
103
|
+
return [2 /*return*/, false];
|
|
104
|
+
}
|
|
105
|
+
if (!consumingProjects.length) {
|
|
106
|
+
utils_1.Logger.logError("No projects that consume monorepo could be found");
|
|
107
|
+
return [2 /*return*/, false];
|
|
108
|
+
}
|
|
109
|
+
return [4 /*yield*/, this.getBranchName(monorepo.id, options.version)];
|
|
110
|
+
case 2:
|
|
111
|
+
monorepoBranchName = _c.sent();
|
|
112
|
+
if (!monorepoBranchName) {
|
|
113
|
+
utils_1.Logger.logError("[".concat(monorepo.title, "] branch does not exist"));
|
|
114
|
+
return [2 /*return*/, false];
|
|
115
|
+
}
|
|
116
|
+
return [4 /*yield*/, this.getPackageVersions(monorepoBranchName)];
|
|
117
|
+
case 3:
|
|
118
|
+
versions = _c.sent();
|
|
119
|
+
utils_1.Logger.logMessage("Versions identified for ".concat(monorepoBranchName));
|
|
120
|
+
Object.keys(versions).forEach(function (key) {
|
|
121
|
+
utils_1.Logger.logMessage("- [".concat(key, "]: ").concat(versions[key]));
|
|
122
|
+
});
|
|
123
|
+
// let cont = true;
|
|
124
|
+
utils_1.Logger.logMessage('\nBumping packages:\n');
|
|
125
|
+
_i = 0, consumingProjects_1 = consumingProjects;
|
|
126
|
+
_c.label = 4;
|
|
127
|
+
case 4:
|
|
128
|
+
if (!(_i < consumingProjects_1.length)) return [3 /*break*/, 8];
|
|
129
|
+
project = consumingProjects_1[_i];
|
|
130
|
+
return [4 /*yield*/, this.getBranchName(project.id, options.version)];
|
|
131
|
+
case 5:
|
|
132
|
+
branchName = _c.sent();
|
|
133
|
+
// TODO: potentially add a validate branches task and removing the branch checking from this task
|
|
134
|
+
// so that bump packages can't be run until create release is run
|
|
135
|
+
if (!branchName) {
|
|
136
|
+
utils_1.Logger.logError("[".concat(project.title, "]: branch does not exist"));
|
|
137
|
+
return [3 /*break*/, 7];
|
|
138
|
+
}
|
|
139
|
+
return [4 /*yield*/, this.updateAndSavePackageFiles(project, options.milestone, branchName, versions)];
|
|
140
|
+
case 6:
|
|
141
|
+
_c.sent();
|
|
142
|
+
_c.label = 7;
|
|
143
|
+
case 7:
|
|
144
|
+
_i++;
|
|
145
|
+
return [3 /*break*/, 4];
|
|
146
|
+
case 8:
|
|
147
|
+
for (_a = 0, consumingProjects_2 = consumingProjects; _a < consumingProjects_2.length; _a++) {
|
|
148
|
+
project = consumingProjects_2[_a];
|
|
149
|
+
utils_1.Logger.logInfo("[".concat(project.title, "]: Running npm i --package-lock-only"));
|
|
150
|
+
this.npmInstall(project, options.milestone);
|
|
151
|
+
utils_1.Logger.logInfo('\n');
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* TODO: Need to not commit when there's no changes
|
|
155
|
+
*/
|
|
156
|
+
utils_1.Logger.logMessage('Committing files');
|
|
157
|
+
_b = 0, consumingProjects_3 = consumingProjects;
|
|
158
|
+
_c.label = 9;
|
|
159
|
+
case 9:
|
|
160
|
+
if (!(_b < consumingProjects_3.length)) return [3 /*break*/, 13];
|
|
161
|
+
project = consumingProjects_3[_b];
|
|
162
|
+
return [4 /*yield*/, this.getBranchName(project.id, options.version)];
|
|
163
|
+
case 10:
|
|
164
|
+
branchName = _c.sent();
|
|
165
|
+
if (!branchName) {
|
|
166
|
+
utils_1.Logger.logError("[".concat(project.title, "]: branch does not exist"));
|
|
167
|
+
return [3 /*break*/, 12];
|
|
168
|
+
}
|
|
169
|
+
return [4 /*yield*/, this.commitUpdatedFiles(project, options.milestone, branchName)];
|
|
170
|
+
case 11:
|
|
171
|
+
_c.sent();
|
|
172
|
+
utils_1.Logger.logMessage("[".concat(project.title, "]: File changes committed"));
|
|
173
|
+
_c.label = 12;
|
|
174
|
+
case 12:
|
|
175
|
+
_b++;
|
|
176
|
+
return [3 /*break*/, 9];
|
|
177
|
+
case 13: return [2 /*return*/, true];
|
|
178
|
+
}
|
|
179
|
+
});
|
|
180
|
+
});
|
|
181
|
+
};
|
|
182
|
+
BumpPackagesTask.prototype.commitUpdatedFiles = function (project, milestone, branchName) {
|
|
183
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
184
|
+
var rootDir, outputPath, commitFiles, _a;
|
|
185
|
+
var _b, _c;
|
|
186
|
+
return __generator(this, function (_d) {
|
|
187
|
+
switch (_d.label) {
|
|
188
|
+
case 0:
|
|
189
|
+
rootDir = ROOT_DIRECTORIES[project.id];
|
|
190
|
+
outputPath = this.getOutputPath(project, milestone);
|
|
191
|
+
_b = {
|
|
192
|
+
filePath: "".concat(rootDir, "/package.json")
|
|
193
|
+
};
|
|
194
|
+
return [4 /*yield*/, fs_extra_1.default.readFile("".concat(outputPath, "/package.json"), 'utf8')];
|
|
195
|
+
case 1:
|
|
196
|
+
_a = [(_b.content = _d.sent(),
|
|
197
|
+
_b)];
|
|
198
|
+
_c = {
|
|
199
|
+
filePath: "".concat(rootDir, "/package-lock.json")
|
|
200
|
+
};
|
|
201
|
+
return [4 /*yield*/, fs_extra_1.default.readFile("".concat(outputPath, "/package-lock.json"), 'utf8')];
|
|
202
|
+
case 2:
|
|
203
|
+
commitFiles = _a.concat([(_c.content = _d.sent(),
|
|
204
|
+
_c)]);
|
|
205
|
+
return [4 /*yield*/, this._service.commit(project.id, branchName, 'Bumping @clickview npm packages', commitFiles)];
|
|
206
|
+
case 3:
|
|
207
|
+
_d.sent();
|
|
208
|
+
return [2 /*return*/];
|
|
209
|
+
}
|
|
210
|
+
});
|
|
211
|
+
});
|
|
212
|
+
};
|
|
213
|
+
BumpPackagesTask.prototype.npmInstall = function (project, milestone) {
|
|
214
|
+
var outputPath = this.getOutputPath(project, milestone);
|
|
215
|
+
child_process_1.default.execSync('npm i --package-lock-only', {
|
|
216
|
+
cwd: outputPath,
|
|
217
|
+
// Uncomment if we want to silence
|
|
218
|
+
// stdio: 'pipe'
|
|
219
|
+
});
|
|
220
|
+
};
|
|
221
|
+
BumpPackagesTask.prototype.updateAndSavePackageFiles = function (project, milestone, branchName, versions) {
|
|
222
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
223
|
+
var rootDir, packageJson, packageLock, packageJsonObj, outputPath;
|
|
224
|
+
return __generator(this, function (_a) {
|
|
225
|
+
switch (_a.label) {
|
|
226
|
+
case 0:
|
|
227
|
+
rootDir = ROOT_DIRECTORIES[project.id];
|
|
228
|
+
return [4 /*yield*/, this.getFileText(project.id, branchName, "".concat(rootDir, "/package.json"))];
|
|
229
|
+
case 1:
|
|
230
|
+
packageJson = _a.sent();
|
|
231
|
+
return [4 /*yield*/, this.getFileText(project.id, branchName, "".concat(rootDir, "/package-lock.json"))];
|
|
232
|
+
case 2:
|
|
233
|
+
packageLock = _a.sent();
|
|
234
|
+
packageJsonObj = JSON.parse(packageJson);
|
|
235
|
+
utils_1.Logger.logMessage(project.title);
|
|
236
|
+
/**
|
|
237
|
+
* Annoyingly some projects have clickview packages sitting in dependencies
|
|
238
|
+
* and others have it in devDependencies
|
|
239
|
+
*/
|
|
240
|
+
if (packageJsonObj.dependencies)
|
|
241
|
+
packageJson = this.replaceVersions(packageJson, versions, packageJsonObj.dependencies);
|
|
242
|
+
if (packageJsonObj.devDependencies)
|
|
243
|
+
packageJson = this.replaceVersions(packageJson, versions, packageJsonObj.devDependencies);
|
|
244
|
+
outputPath = this.getOutputPath(project, milestone);
|
|
245
|
+
return [4 /*yield*/, fs_extra_1.default.outputFile("".concat(outputPath, "/package.json"), packageJson, { encoding: 'utf8' })];
|
|
246
|
+
case 3:
|
|
247
|
+
_a.sent();
|
|
248
|
+
return [4 /*yield*/, fs_extra_1.default.outputFile("".concat(outputPath, "/package-lock.json"), packageLock, { encoding: 'utf8' })];
|
|
249
|
+
case 4:
|
|
250
|
+
_a.sent();
|
|
251
|
+
return [2 /*return*/];
|
|
252
|
+
}
|
|
253
|
+
});
|
|
254
|
+
});
|
|
255
|
+
};
|
|
256
|
+
BumpPackagesTask.prototype.replaceVersions = function (packageJson, versions, deps) {
|
|
257
|
+
Object.keys(deps).forEach(function (key) {
|
|
258
|
+
if (!key.startsWith('@clickview'))
|
|
259
|
+
return;
|
|
260
|
+
if (!versions[key])
|
|
261
|
+
return;
|
|
262
|
+
var oldVersion = deps[key];
|
|
263
|
+
var newVersion = versions[key];
|
|
264
|
+
if (oldVersion === newVersion) {
|
|
265
|
+
utils_1.Logger.logWarning("- [".concat(key, "]: ").concat(versions[key], " is up to date"));
|
|
266
|
+
return;
|
|
267
|
+
}
|
|
268
|
+
if (semver_1.default.compare(oldVersion, newVersion) === 1) {
|
|
269
|
+
utils_1.Logger.logError("- [".concat(key, "]: ").concat(deps[key], " -> ").concat(versions[key], " downgrade detected"));
|
|
270
|
+
return;
|
|
271
|
+
}
|
|
272
|
+
packageJson = packageJson.replace("\"".concat(key, "\": \"").concat(deps[key], "\""), "\"".concat(key, "\": \"").concat(versions[key], "\""));
|
|
273
|
+
utils_1.Logger.logMessage("- [".concat(key, "]: ").concat(deps[key], " -> ").concat(versions[key]));
|
|
274
|
+
});
|
|
275
|
+
return packageJson;
|
|
276
|
+
};
|
|
277
|
+
BumpPackagesTask.prototype.getPackageVersions = function (branchName) {
|
|
278
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
279
|
+
var monorepoPackages, _i, MONOREPO_PACKAGES_FILES_1, file, text, json;
|
|
280
|
+
return __generator(this, function (_a) {
|
|
281
|
+
switch (_a.label) {
|
|
282
|
+
case 0:
|
|
283
|
+
monorepoPackages = {};
|
|
284
|
+
_i = 0, MONOREPO_PACKAGES_FILES_1 = MONOREPO_PACKAGES_FILES;
|
|
285
|
+
_a.label = 1;
|
|
286
|
+
case 1:
|
|
287
|
+
if (!(_i < MONOREPO_PACKAGES_FILES_1.length)) return [3 /*break*/, 4];
|
|
288
|
+
file = MONOREPO_PACKAGES_FILES_1[_i];
|
|
289
|
+
return [4 /*yield*/, this.getFileText(utils_1.ProjectIds.MONOREPO_PROJECT_ID, branchName, file)];
|
|
290
|
+
case 2:
|
|
291
|
+
text = _a.sent();
|
|
292
|
+
json = JSON.parse(text);
|
|
293
|
+
monorepoPackages[json.name] = json.version;
|
|
294
|
+
_a.label = 3;
|
|
295
|
+
case 3:
|
|
296
|
+
_i++;
|
|
297
|
+
return [3 /*break*/, 1];
|
|
298
|
+
case 4: return [2 /*return*/, monorepoPackages];
|
|
299
|
+
}
|
|
300
|
+
});
|
|
301
|
+
});
|
|
302
|
+
};
|
|
303
|
+
BumpPackagesTask.prototype.getFileText = function (projectId, branchName, fileName) {
|
|
304
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
305
|
+
var file, buff;
|
|
306
|
+
return __generator(this, function (_a) {
|
|
307
|
+
switch (_a.label) {
|
|
308
|
+
case 0: return [4 /*yield*/, this._service.getFile(projectId, branchName, fileName)];
|
|
309
|
+
case 1:
|
|
310
|
+
file = _a.sent();
|
|
311
|
+
if (!file)
|
|
312
|
+
return [2 /*return*/, ''];
|
|
313
|
+
buff = Buffer.from(file.content, 'base64');
|
|
314
|
+
return [2 /*return*/, buff.toString('utf-8')];
|
|
315
|
+
}
|
|
316
|
+
});
|
|
317
|
+
});
|
|
318
|
+
};
|
|
319
|
+
BumpPackagesTask.prototype.getBranchName = function (projectId, version) {
|
|
320
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
321
|
+
var currentVersionTag, nextVersion, branchName, branch;
|
|
322
|
+
return __generator(this, function (_a) {
|
|
323
|
+
switch (_a.label) {
|
|
324
|
+
case 0: return [4 /*yield*/, this._service.getCurrentVersionTag(projectId)];
|
|
325
|
+
case 1:
|
|
326
|
+
currentVersionTag = _a.sent();
|
|
327
|
+
if (!currentVersionTag)
|
|
328
|
+
return [2 /*return*/, null];
|
|
329
|
+
return [4 /*yield*/, utils_1.Versions.getNextVersion(currentVersionTag.name, version)];
|
|
330
|
+
case 2:
|
|
331
|
+
nextVersion = _a.sent();
|
|
332
|
+
branchName = utils_1.BranchNames.getRelease(nextVersion);
|
|
333
|
+
return [4 /*yield*/, this._service.getBranch(projectId, branchName)];
|
|
334
|
+
case 3:
|
|
335
|
+
branch = _a.sent();
|
|
336
|
+
if (!branch)
|
|
337
|
+
return [2 /*return*/, null];
|
|
338
|
+
return [2 /*return*/, branchName];
|
|
339
|
+
}
|
|
340
|
+
});
|
|
341
|
+
});
|
|
342
|
+
};
|
|
343
|
+
BumpPackagesTask.prototype.getOutputPath = function (project, milestone) {
|
|
344
|
+
return "./temp/".concat(milestone, "/").concat(project.title);
|
|
345
|
+
};
|
|
346
|
+
BumpPackagesTask = __decorate([
|
|
347
|
+
(0, inversify_1.injectable)(),
|
|
348
|
+
__param(0, (0, inversify_1.inject)(types_1.SERVICES.GitLabService)),
|
|
349
|
+
__metadata("design:paramtypes", [services_1.GitLabService])
|
|
350
|
+
], BumpPackagesTask);
|
|
351
|
+
return BumpPackagesTask;
|
|
352
|
+
}());
|
|
353
|
+
exports.BumpPackagesTask = BumpPackagesTask;
|
|
@@ -0,0 +1,115 @@
|
|
|
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.BumpVersionTxtTask = void 0;
|
|
52
|
+
require("reflect-metadata");
|
|
53
|
+
var inversify_1 = require("inversify");
|
|
54
|
+
var Logger_1 = require("../utils/Logger");
|
|
55
|
+
var types_1 = require("../types");
|
|
56
|
+
var services_1 = require("../services");
|
|
57
|
+
var utils_1 = require("../utils");
|
|
58
|
+
var BumpVersionTxtTask = /** @class */ (function () {
|
|
59
|
+
function BumpVersionTxtTask(service) {
|
|
60
|
+
this._service = service;
|
|
61
|
+
}
|
|
62
|
+
BumpVersionTxtTask.prototype.run = function (options) {
|
|
63
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
64
|
+
var projects, cont, _i, projects_1, project, currentVersionTag, nextVersion, branchName, versionBumped;
|
|
65
|
+
return __generator(this, function (_a) {
|
|
66
|
+
switch (_a.label) {
|
|
67
|
+
case 0:
|
|
68
|
+
Logger_1.Logger.logTask('Bumping version.txt');
|
|
69
|
+
return [4 /*yield*/, this._service.getProjects(options)];
|
|
70
|
+
case 1:
|
|
71
|
+
projects = _a.sent();
|
|
72
|
+
if (!projects.length) {
|
|
73
|
+
Logger_1.Logger.logError("No projects could be found with the specified options");
|
|
74
|
+
return [2 /*return*/, false];
|
|
75
|
+
}
|
|
76
|
+
cont = true;
|
|
77
|
+
_i = 0, projects_1 = projects;
|
|
78
|
+
_a.label = 2;
|
|
79
|
+
case 2:
|
|
80
|
+
if (!(_i < projects_1.length)) return [3 /*break*/, 6];
|
|
81
|
+
project = projects_1[_i];
|
|
82
|
+
return [4 /*yield*/, this._service.getCurrentVersionTag(project.id)];
|
|
83
|
+
case 3:
|
|
84
|
+
currentVersionTag = _a.sent();
|
|
85
|
+
if (currentVersionTag === null) {
|
|
86
|
+
Logger_1.Logger.logError("[".concat(project.title, "]: Could not find current version tag"));
|
|
87
|
+
cont = false;
|
|
88
|
+
return [3 /*break*/, 5];
|
|
89
|
+
}
|
|
90
|
+
nextVersion = utils_1.Versions.getNextVersion(currentVersionTag.name, options.version);
|
|
91
|
+
branchName = utils_1.BranchNames.getRelease(nextVersion);
|
|
92
|
+
return [4 /*yield*/, this._service.bumpVersionTxt(project.id, branchName, nextVersion)];
|
|
93
|
+
case 4:
|
|
94
|
+
versionBumped = _a.sent();
|
|
95
|
+
if (versionBumped)
|
|
96
|
+
Logger_1.Logger.logMessage("[".concat(project.title, "]: Bumped to ").concat(nextVersion));
|
|
97
|
+
else
|
|
98
|
+
Logger_1.Logger.logWarning("[".concat(project.title, "]: Has already been bumped, or does not have a version.txt"));
|
|
99
|
+
_a.label = 5;
|
|
100
|
+
case 5:
|
|
101
|
+
_i++;
|
|
102
|
+
return [3 /*break*/, 2];
|
|
103
|
+
case 6: return [2 /*return*/, cont];
|
|
104
|
+
}
|
|
105
|
+
});
|
|
106
|
+
});
|
|
107
|
+
};
|
|
108
|
+
BumpVersionTxtTask = __decorate([
|
|
109
|
+
(0, inversify_1.injectable)(),
|
|
110
|
+
__param(0, (0, inversify_1.inject)(types_1.SERVICES.GitLabService)),
|
|
111
|
+
__metadata("design:paramtypes", [services_1.GitLabService])
|
|
112
|
+
], BumpVersionTxtTask);
|
|
113
|
+
return BumpVersionTxtTask;
|
|
114
|
+
}());
|
|
115
|
+
exports.BumpVersionTxtTask = BumpVersionTxtTask;
|
|
@@ -0,0 +1,119 @@
|
|
|
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.CreateBranchTask = void 0;
|
|
52
|
+
require("reflect-metadata");
|
|
53
|
+
var inversify_1 = require("inversify");
|
|
54
|
+
var types_1 = require("../types");
|
|
55
|
+
var services_1 = require("../services");
|
|
56
|
+
var utils_1 = require("../utils");
|
|
57
|
+
var CreateBranchTask = /** @class */ (function () {
|
|
58
|
+
function CreateBranchTask(service) {
|
|
59
|
+
this._service = service;
|
|
60
|
+
}
|
|
61
|
+
CreateBranchTask.prototype.run = function (options) {
|
|
62
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
63
|
+
var projects, _i, projects_1, project, currentVersionTag, nextVersion, branchName, branch, branchFrom;
|
|
64
|
+
return __generator(this, function (_a) {
|
|
65
|
+
switch (_a.label) {
|
|
66
|
+
case 0:
|
|
67
|
+
utils_1.Logger.logTask('Creating release branches');
|
|
68
|
+
return [4 /*yield*/, this._service.getProjects(options)];
|
|
69
|
+
case 1:
|
|
70
|
+
projects = _a.sent();
|
|
71
|
+
if (!projects.length) {
|
|
72
|
+
utils_1.Logger.logError("No projects could be found with the specified options");
|
|
73
|
+
return [2 /*return*/, false];
|
|
74
|
+
}
|
|
75
|
+
_i = 0, projects_1 = projects;
|
|
76
|
+
_a.label = 2;
|
|
77
|
+
case 2:
|
|
78
|
+
if (!(_i < projects_1.length)) return [3 /*break*/, 8];
|
|
79
|
+
project = projects_1[_i];
|
|
80
|
+
return [4 /*yield*/, this._service.getCurrentVersionTag(project.id)];
|
|
81
|
+
case 3:
|
|
82
|
+
currentVersionTag = _a.sent();
|
|
83
|
+
if (!currentVersionTag) {
|
|
84
|
+
utils_1.Logger.logError("Could not find the next version for: ".concat(project.title));
|
|
85
|
+
return [2 /*return*/, false];
|
|
86
|
+
}
|
|
87
|
+
return [4 /*yield*/, utils_1.Versions.getNextVersion(currentVersionTag.name, options.version)];
|
|
88
|
+
case 4:
|
|
89
|
+
nextVersion = _a.sent();
|
|
90
|
+
branchName = utils_1.BranchNames.getRelease(nextVersion);
|
|
91
|
+
return [4 /*yield*/, this._service.getBranch(project.id, branchName)];
|
|
92
|
+
case 5:
|
|
93
|
+
branch = _a.sent();
|
|
94
|
+
if (branch) {
|
|
95
|
+
utils_1.Logger.logWarning("[".concat(project.title, "]: [").concat(branchName, "] Already exists"));
|
|
96
|
+
return [3 /*break*/, 7];
|
|
97
|
+
}
|
|
98
|
+
branchFrom = options.version === 'patch' ? 'master' : 'dev';
|
|
99
|
+
return [4 /*yield*/, this._service.createBranch(project, branchFrom, branchName, false)];
|
|
100
|
+
case 6:
|
|
101
|
+
_a.sent();
|
|
102
|
+
utils_1.Logger.logMessage("[".concat(project.title, "]: [").concat(branchName, "] Has been created"));
|
|
103
|
+
_a.label = 7;
|
|
104
|
+
case 7:
|
|
105
|
+
_i++;
|
|
106
|
+
return [3 /*break*/, 2];
|
|
107
|
+
case 8: return [2 /*return*/, true];
|
|
108
|
+
}
|
|
109
|
+
});
|
|
110
|
+
});
|
|
111
|
+
};
|
|
112
|
+
CreateBranchTask = __decorate([
|
|
113
|
+
(0, inversify_1.injectable)(),
|
|
114
|
+
__param(0, (0, inversify_1.inject)(types_1.SERVICES.GitLabService)),
|
|
115
|
+
__metadata("design:paramtypes", [services_1.GitLabService])
|
|
116
|
+
], CreateBranchTask);
|
|
117
|
+
return CreateBranchTask;
|
|
118
|
+
}());
|
|
119
|
+
exports.CreateBranchTask = CreateBranchTask;
|