@clickview/ship-it 0.0.2-dev.2 → 0.0.2
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/GitLabApiClient.js +1 -1
- package/lib/src/api-clients/index.js +1 -1
- package/lib/src/commands/BumpPackagesCommand.js +4 -12
- package/lib/src/commands/CreateBranchCommand.js +8 -8
- package/lib/src/commands/CreateMergeRequestCommand.js +10 -10
- package/lib/src/commands/CreateReleaseNotesCommand.js +4 -4
- package/lib/src/commands/ReleaseCommand.js +14 -14
- package/lib/src/commands/StatusCommand.js +2 -2
- package/lib/src/commands/VersionCommand.js +2 -2
- package/lib/src/commands/index.js +0 -1
- package/lib/src/index.js +85 -2
- package/lib/src/interfaces/index.js +1 -2
- package/lib/src/inversify.config.js +0 -3
- package/lib/src/services/GitLabService.js +33 -60
- package/lib/src/tasks/BumpPackagesTask.js +239 -102
- package/lib/src/tasks/BumpVersionTxtTask.js +26 -13
- package/lib/src/tasks/CreateBranchTask.js +32 -17
- package/lib/src/tasks/CreateMergeRequestTask.js +36 -21
- package/lib/src/tasks/CreateReleaseNotesTask.js +6 -2
- package/lib/src/tasks/ValidateCommitsTask.js +14 -6
- package/lib/src/tasks/ValidateDescriptionsTask.js +8 -4
- package/lib/src/tasks/ValidateTask.js +6 -5
- package/lib/src/tasks/VersionTask.js +20 -7
- package/lib/src/tasks/index.js +0 -2
- package/lib/src/types.js +1 -4
- package/lib/src/utils/Descriptions.js +4 -5
- package/lib/src/utils/ProjectIds.js +2 -6
- package/package.json +22 -22
- package/lib/src/api-clients/git-lab/GitLabApiClient.js +0 -285
- package/lib/src/api-clients/git-lab/GitLabMapper.js +0 -51
- package/lib/src/commands/CommitPackageVersionsCommand.js +0 -78
- package/lib/src/commands/InstallPackagesCommand.js +0 -78
- package/lib/src/constants/CommandTypeMapping.js +0 -14
- package/lib/src/constants/MonorepoPackageJsonFiles.js +0 -13
- package/lib/src/constants/index.js +0 -18
- package/lib/src/errors/ShipItError.js +0 -32
- package/lib/src/errors/index.js +0 -17
- package/lib/src/interfaces/VersionType.js +0 -2
- package/lib/src/interfaces/command-options/BumpPackagesCommandOptions.js +0 -2
- package/lib/src/interfaces/command-options/CommitPackageVersionsCommandOptions.js +0 -2
- package/lib/src/interfaces/command-options/MilestoneCommandOptions.js +0 -2
- package/lib/src/interfaces/command-options/index.js +0 -18
- package/lib/src/startup/AddMilestoneCommand.js +0 -75
- package/lib/src/startup/SetupCommands.js +0 -66
- package/lib/src/tasks/CommitLocalPackagesTask.js +0 -137
- package/lib/src/tasks/CommitPackageVersionsTask.js +0 -111
- package/lib/src/tasks/InstallPackagesTask.js +0 -317
|
@@ -52,7 +52,7 @@ exports.GitLabApiClient = void 0;
|
|
|
52
52
|
require("reflect-metadata");
|
|
53
53
|
var inversify_1 = require("inversify");
|
|
54
54
|
var node_1 = require("@gitbeaker/node");
|
|
55
|
-
var types_1 = require("types");
|
|
55
|
+
var types_1 = require("../types");
|
|
56
56
|
var GitLabApiClient = /** @class */ (function () {
|
|
57
57
|
function GitLabApiClient(config) {
|
|
58
58
|
this._config = config;
|
|
@@ -14,4 +14,4 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
__exportStar(require("./
|
|
17
|
+
__exportStar(require("./GitLabApiClient"), exports);
|
|
@@ -53,22 +53,15 @@ require("reflect-metadata");
|
|
|
53
53
|
var inversify_1 = require("inversify");
|
|
54
54
|
var types_1 = require("../types");
|
|
55
55
|
var BumpPackagesCommand = /** @class */ (function () {
|
|
56
|
-
function BumpPackagesCommand(bumpPackagesTask
|
|
57
|
-
this.
|
|
58
|
-
this.commitPackageVersionsTask = commitPackageVersionsTask;
|
|
56
|
+
function BumpPackagesCommand(bumpPackagesTask) {
|
|
57
|
+
this._bumpPackagesTask = bumpPackagesTask;
|
|
59
58
|
}
|
|
60
59
|
BumpPackagesCommand.prototype.run = function (options) {
|
|
61
60
|
return __awaiter(this, void 0, void 0, function () {
|
|
62
|
-
var cont;
|
|
63
61
|
return __generator(this, function (_a) {
|
|
64
62
|
switch (_a.label) {
|
|
65
|
-
case 0: return [4 /*yield*/, this.
|
|
63
|
+
case 0: return [4 /*yield*/, this._bumpPackagesTask.run(options)];
|
|
66
64
|
case 1:
|
|
67
|
-
cont = _a.sent();
|
|
68
|
-
if (!cont)
|
|
69
|
-
return [2 /*return*/];
|
|
70
|
-
return [4 /*yield*/, this.commitPackageVersionsTask.run(options)];
|
|
71
|
-
case 2:
|
|
72
65
|
_a.sent();
|
|
73
66
|
return [2 /*return*/];
|
|
74
67
|
}
|
|
@@ -78,8 +71,7 @@ var BumpPackagesCommand = /** @class */ (function () {
|
|
|
78
71
|
BumpPackagesCommand = __decorate([
|
|
79
72
|
(0, inversify_1.injectable)(),
|
|
80
73
|
__param(0, (0, inversify_1.inject)(types_1.TASKS.BumpPackagesTask)),
|
|
81
|
-
|
|
82
|
-
__metadata("design:paramtypes", [Object, Object])
|
|
74
|
+
__metadata("design:paramtypes", [Object])
|
|
83
75
|
], BumpPackagesCommand);
|
|
84
76
|
return BumpPackagesCommand;
|
|
85
77
|
}());
|
|
@@ -54,34 +54,34 @@ var inversify_1 = require("inversify");
|
|
|
54
54
|
var types_1 = require("../types");
|
|
55
55
|
var CreateBranchCommand = /** @class */ (function () {
|
|
56
56
|
function CreateBranchCommand(validateTask, versionTask, validateCommitsTask, createBranchTask) {
|
|
57
|
-
this.
|
|
58
|
-
this.
|
|
59
|
-
this.
|
|
60
|
-
this.
|
|
57
|
+
this._validateTask = validateTask;
|
|
58
|
+
this._versionTask = versionTask;
|
|
59
|
+
this._validateCommitsTask = validateCommitsTask;
|
|
60
|
+
this._createBranchTask = createBranchTask;
|
|
61
61
|
}
|
|
62
62
|
CreateBranchCommand.prototype.run = function (options) {
|
|
63
63
|
return __awaiter(this, void 0, void 0, function () {
|
|
64
64
|
var cont;
|
|
65
65
|
return __generator(this, function (_a) {
|
|
66
66
|
switch (_a.label) {
|
|
67
|
-
case 0: return [4 /*yield*/, this.
|
|
67
|
+
case 0: return [4 /*yield*/, this._validateTask.run(options)];
|
|
68
68
|
case 1:
|
|
69
69
|
cont = _a.sent();
|
|
70
70
|
// Check if we want to continue with inquirer?
|
|
71
71
|
if (!cont)
|
|
72
72
|
return [2 /*return*/];
|
|
73
|
-
return [4 /*yield*/, this.
|
|
73
|
+
return [4 /*yield*/, this._versionTask.run(options)];
|
|
74
74
|
case 2:
|
|
75
75
|
cont = _a.sent();
|
|
76
76
|
// Check if we want to continue with inquirer?
|
|
77
77
|
if (!cont)
|
|
78
78
|
return [2 /*return*/];
|
|
79
|
-
return [4 /*yield*/, this.
|
|
79
|
+
return [4 /*yield*/, this._validateCommitsTask.run(options)];
|
|
80
80
|
case 3:
|
|
81
81
|
cont = _a.sent();
|
|
82
82
|
if (!cont)
|
|
83
83
|
return [2 /*return*/];
|
|
84
|
-
return [4 /*yield*/, this.
|
|
84
|
+
return [4 /*yield*/, this._createBranchTask.run(options)];
|
|
85
85
|
case 4:
|
|
86
86
|
_a.sent();
|
|
87
87
|
return [2 /*return*/];
|
|
@@ -54,40 +54,40 @@ var inversify_1 = require("inversify");
|
|
|
54
54
|
var types_1 = require("../types");
|
|
55
55
|
var CreateMergeRequestCommand = /** @class */ (function () {
|
|
56
56
|
function CreateMergeRequestCommand(validateTask, versionTask, validateDescriptionsTask, validateCommitsTask, createMergeRequestCommand) {
|
|
57
|
-
this.
|
|
58
|
-
this.
|
|
59
|
-
this.
|
|
60
|
-
this.
|
|
61
|
-
this.
|
|
57
|
+
this._validateTask = validateTask;
|
|
58
|
+
this._versionTask = versionTask;
|
|
59
|
+
this._validateDescriptionsTask = validateDescriptionsTask;
|
|
60
|
+
this._validateCommitsTask = validateCommitsTask;
|
|
61
|
+
this._createMergeRequestCommand = createMergeRequestCommand;
|
|
62
62
|
}
|
|
63
63
|
CreateMergeRequestCommand.prototype.run = function (options) {
|
|
64
64
|
return __awaiter(this, void 0, void 0, function () {
|
|
65
65
|
var cont;
|
|
66
66
|
return __generator(this, function (_a) {
|
|
67
67
|
switch (_a.label) {
|
|
68
|
-
case 0: return [4 /*yield*/, this.
|
|
68
|
+
case 0: return [4 /*yield*/, this._validateTask.run(options)];
|
|
69
69
|
case 1:
|
|
70
70
|
cont = _a.sent();
|
|
71
71
|
// Check if we want to continue with inquirer?
|
|
72
72
|
if (!cont)
|
|
73
73
|
return [2 /*return*/];
|
|
74
|
-
return [4 /*yield*/, this.
|
|
74
|
+
return [4 /*yield*/, this._versionTask.run(options)];
|
|
75
75
|
case 2:
|
|
76
76
|
cont = _a.sent();
|
|
77
77
|
// Check if we want to continue with inquirer?
|
|
78
78
|
if (!cont)
|
|
79
79
|
return [2 /*return*/];
|
|
80
|
-
return [4 /*yield*/, this.
|
|
80
|
+
return [4 /*yield*/, this._validateDescriptionsTask.run(options)];
|
|
81
81
|
case 3:
|
|
82
82
|
cont = _a.sent();
|
|
83
83
|
if (!cont)
|
|
84
84
|
return [2 /*return*/];
|
|
85
|
-
return [4 /*yield*/, this.
|
|
85
|
+
return [4 /*yield*/, this._validateCommitsTask.run(options)];
|
|
86
86
|
case 4:
|
|
87
87
|
cont = _a.sent();
|
|
88
88
|
if (!cont)
|
|
89
89
|
return [2 /*return*/];
|
|
90
|
-
return [4 /*yield*/, this.
|
|
90
|
+
return [4 /*yield*/, this._createMergeRequestCommand.run(options)];
|
|
91
91
|
case 5:
|
|
92
92
|
_a.sent();
|
|
93
93
|
return [2 /*return*/];
|
|
@@ -54,20 +54,20 @@ var inversify_1 = require("inversify");
|
|
|
54
54
|
var types_1 = require("../types");
|
|
55
55
|
var CreateReleaseNotesCommand = /** @class */ (function () {
|
|
56
56
|
function CreateReleaseNotesCommand(validateDescriptionsTask, createReleaseNotesTask) {
|
|
57
|
-
this.
|
|
58
|
-
this.
|
|
57
|
+
this._validateDescriptionsTask = validateDescriptionsTask;
|
|
58
|
+
this._createReleaseNotesTask = createReleaseNotesTask;
|
|
59
59
|
}
|
|
60
60
|
CreateReleaseNotesCommand.prototype.run = function (options) {
|
|
61
61
|
return __awaiter(this, void 0, void 0, function () {
|
|
62
62
|
var cont;
|
|
63
63
|
return __generator(this, function (_a) {
|
|
64
64
|
switch (_a.label) {
|
|
65
|
-
case 0: return [4 /*yield*/, this.
|
|
65
|
+
case 0: return [4 /*yield*/, this._validateDescriptionsTask.run(options)];
|
|
66
66
|
case 1:
|
|
67
67
|
cont = _a.sent();
|
|
68
68
|
if (!cont)
|
|
69
69
|
return [2 /*return*/];
|
|
70
|
-
return [4 /*yield*/, this.
|
|
70
|
+
return [4 /*yield*/, this._createReleaseNotesTask.run(options)];
|
|
71
71
|
case 2:
|
|
72
72
|
_a.sent();
|
|
73
73
|
return [2 /*return*/];
|
|
@@ -54,51 +54,51 @@ var inversify_1 = require("inversify");
|
|
|
54
54
|
var types_1 = require("../types");
|
|
55
55
|
var ReleaseCommand = /** @class */ (function () {
|
|
56
56
|
function ReleaseCommand(validateTask, versionTask, validateDescriptionsTask, validateCommitsTask, createBranchTask, bumpVersionTxtTask, createMergeRequestTask) {
|
|
57
|
-
this.
|
|
58
|
-
this.
|
|
59
|
-
this.
|
|
60
|
-
this.
|
|
61
|
-
this.
|
|
62
|
-
this.
|
|
63
|
-
this.
|
|
57
|
+
this._validateTask = validateTask;
|
|
58
|
+
this._versionTask = versionTask;
|
|
59
|
+
this._validateDescriptionsTask = validateDescriptionsTask;
|
|
60
|
+
this._validateCommitsTask = validateCommitsTask;
|
|
61
|
+
this._createBranchTask = createBranchTask;
|
|
62
|
+
this._bumpVersionTxtTask = bumpVersionTxtTask;
|
|
63
|
+
this._createMergeRequestTask = createMergeRequestTask;
|
|
64
64
|
}
|
|
65
65
|
ReleaseCommand.prototype.run = function (options) {
|
|
66
66
|
return __awaiter(this, void 0, void 0, function () {
|
|
67
67
|
var cont;
|
|
68
68
|
return __generator(this, function (_a) {
|
|
69
69
|
switch (_a.label) {
|
|
70
|
-
case 0: return [4 /*yield*/, this.
|
|
70
|
+
case 0: return [4 /*yield*/, this._validateTask.run(options)];
|
|
71
71
|
case 1:
|
|
72
72
|
cont = _a.sent();
|
|
73
73
|
// Check if we want to continue with inquirer?
|
|
74
74
|
if (!cont)
|
|
75
75
|
return [2 /*return*/];
|
|
76
|
-
return [4 /*yield*/, this.
|
|
76
|
+
return [4 /*yield*/, this._versionTask.run(options)];
|
|
77
77
|
case 2:
|
|
78
78
|
cont = _a.sent();
|
|
79
79
|
if (!cont)
|
|
80
80
|
return [2 /*return*/];
|
|
81
|
-
return [4 /*yield*/, this.
|
|
81
|
+
return [4 /*yield*/, this._validateDescriptionsTask.run(options)];
|
|
82
82
|
case 3:
|
|
83
83
|
cont = _a.sent();
|
|
84
84
|
if (!cont)
|
|
85
85
|
return [2 /*return*/];
|
|
86
|
-
return [4 /*yield*/, this.
|
|
86
|
+
return [4 /*yield*/, this._validateCommitsTask.run(options)];
|
|
87
87
|
case 4:
|
|
88
88
|
cont = _a.sent();
|
|
89
89
|
if (!cont)
|
|
90
90
|
return [2 /*return*/];
|
|
91
|
-
return [4 /*yield*/, this.
|
|
91
|
+
return [4 /*yield*/, this._createBranchTask.run(options)];
|
|
92
92
|
case 5:
|
|
93
93
|
cont = _a.sent();
|
|
94
94
|
if (!cont)
|
|
95
95
|
return [2 /*return*/];
|
|
96
|
-
return [4 /*yield*/, this.
|
|
96
|
+
return [4 /*yield*/, this._bumpVersionTxtTask.run(options)];
|
|
97
97
|
case 6:
|
|
98
98
|
cont = _a.sent();
|
|
99
99
|
if (!cont)
|
|
100
100
|
return [2 /*return*/];
|
|
101
|
-
return [4 /*yield*/, this.
|
|
101
|
+
return [4 /*yield*/, this._createMergeRequestTask.run(options)];
|
|
102
102
|
case 7:
|
|
103
103
|
_a.sent();
|
|
104
104
|
return [2 /*return*/];
|
|
@@ -54,13 +54,13 @@ var inversify_1 = require("inversify");
|
|
|
54
54
|
var types_1 = require("../types");
|
|
55
55
|
var StatusCommand = /** @class */ (function () {
|
|
56
56
|
function StatusCommand(validateTask) {
|
|
57
|
-
this.
|
|
57
|
+
this._validateTask = validateTask;
|
|
58
58
|
}
|
|
59
59
|
StatusCommand.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._validateTask.run(options)];
|
|
64
64
|
case 1:
|
|
65
65
|
_a.sent();
|
|
66
66
|
return [2 /*return*/];
|
|
@@ -54,13 +54,13 @@ var inversify_1 = require("inversify");
|
|
|
54
54
|
var types_1 = require("../types");
|
|
55
55
|
var VersionCommand = /** @class */ (function () {
|
|
56
56
|
function VersionCommand(versionTask) {
|
|
57
|
-
this.
|
|
57
|
+
this._versionTask = versionTask;
|
|
58
58
|
}
|
|
59
59
|
VersionCommand.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._versionTask.run(options)];
|
|
64
64
|
case 1:
|
|
65
65
|
_a.sent();
|
|
66
66
|
return [2 /*return*/];
|
|
@@ -18,7 +18,6 @@ __exportStar(require("./BumpPackagesCommand"), exports);
|
|
|
18
18
|
__exportStar(require("./CreateBranchCommand"), exports);
|
|
19
19
|
__exportStar(require("./CreateMergeRequestCommand"), exports);
|
|
20
20
|
__exportStar(require("./CreateReleaseNotesCommand"), exports);
|
|
21
|
-
__exportStar(require("./InstallPackagesCommand"), exports);
|
|
22
21
|
__exportStar(require("./ReleaseCommand"), exports);
|
|
23
22
|
__exportStar(require("./StatusCommand"), exports);
|
|
24
23
|
__exportStar(require("./VersionCommand"), exports);
|
package/lib/src/index.js
CHANGED
|
@@ -1,18 +1,101 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
"use strict";
|
|
3
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
4
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
5
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
6
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
7
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
8
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
9
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
10
|
+
});
|
|
11
|
+
};
|
|
12
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
13
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
14
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
15
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
16
|
+
function step(op) {
|
|
17
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
18
|
+
while (_) try {
|
|
19
|
+
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;
|
|
20
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
21
|
+
switch (op[0]) {
|
|
22
|
+
case 0: case 1: t = op; break;
|
|
23
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
24
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
25
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
26
|
+
default:
|
|
27
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
28
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
29
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
30
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
31
|
+
if (t[2]) _.ops.pop();
|
|
32
|
+
_.trys.pop(); continue;
|
|
33
|
+
}
|
|
34
|
+
op = body.call(thisArg, _);
|
|
35
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
36
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
37
|
+
}
|
|
38
|
+
};
|
|
3
39
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
4
40
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
5
41
|
};
|
|
6
42
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
43
|
var commander_1 = require("commander");
|
|
8
44
|
var inversify_config_1 = require("./inversify.config");
|
|
9
|
-
var
|
|
45
|
+
var types_1 = require("./types");
|
|
46
|
+
var utils_1 = require("./utils");
|
|
10
47
|
var config_json_1 = __importDefault(require("../config.json"));
|
|
48
|
+
function processOptions(options) {
|
|
49
|
+
var opts = {
|
|
50
|
+
milestone: options.milestone,
|
|
51
|
+
version: 'minor'
|
|
52
|
+
};
|
|
53
|
+
if (options.projectIds)
|
|
54
|
+
opts.projectIds = utils_1.ProjectIds.getProjectIds(options.projectIds);
|
|
55
|
+
if (options.hotfix && options.major)
|
|
56
|
+
throw new Error('Cannot pass both --hotfix and --major options');
|
|
57
|
+
if (options.major)
|
|
58
|
+
opts.version = 'major';
|
|
59
|
+
if (options.hotfix)
|
|
60
|
+
opts.version = 'patch';
|
|
61
|
+
return opts;
|
|
62
|
+
}
|
|
63
|
+
var commandTypeMapping = {
|
|
64
|
+
'status': types_1.COMMANDS.StatusCommand,
|
|
65
|
+
'version': types_1.COMMANDS.VersionCommand,
|
|
66
|
+
'release': types_1.COMMANDS.ReleaseCommand,
|
|
67
|
+
'create-branches': types_1.COMMANDS.CreateBranchCommand,
|
|
68
|
+
'create-mrs': types_1.COMMANDS.CreateMergeRequestCommand,
|
|
69
|
+
'create-notes': types_1.COMMANDS.CreateReleaseNotesCommand,
|
|
70
|
+
'bump-packages': types_1.COMMANDS.BumpPackagesCommand
|
|
71
|
+
};
|
|
72
|
+
function addCommand(name, description) {
|
|
73
|
+
var _this = this;
|
|
74
|
+
program.command(name)
|
|
75
|
+
.description(description)
|
|
76
|
+
.requiredOption('-m, --milestone <milestone>')
|
|
77
|
+
.option('-p, --projectIds <projectIds...>')
|
|
78
|
+
.option('--hotfix')
|
|
79
|
+
.option('--major')
|
|
80
|
+
.action(function (options) { return __awaiter(_this, void 0, void 0, function () {
|
|
81
|
+
return __generator(this, function (_a) {
|
|
82
|
+
container.get(commandTypeMapping[name])
|
|
83
|
+
.run(processOptions(options));
|
|
84
|
+
return [2 /*return*/];
|
|
85
|
+
});
|
|
86
|
+
}); });
|
|
87
|
+
}
|
|
11
88
|
var program = new commander_1.Command();
|
|
12
89
|
program
|
|
13
90
|
.name('ship-it')
|
|
14
91
|
.description('ClickView Release Manager')
|
|
15
92
|
.version('0.0.0');
|
|
16
93
|
var container = (0, inversify_config_1.createContainer)(config_json_1.default);
|
|
17
|
-
(
|
|
94
|
+
addCommand('status', 'Get the status of all MRs in a milestone');
|
|
95
|
+
addCommand('version', 'Display the versions that will be used for the release');
|
|
96
|
+
addCommand('create-branches', 'Create release branches for all projects that are part of a milestone');
|
|
97
|
+
addCommand('create-mrs', 'Create merge requests for all projects that are part of a milestone');
|
|
98
|
+
addCommand('create-notes', 'Builds descriptions for all projects that are part of a milestone');
|
|
99
|
+
addCommand('release', 'Create releases for all projects that are part of a milestone');
|
|
100
|
+
addCommand('bump-packages', 'Bump consuming project npm packages for all projects that are part of a milestone');
|
|
18
101
|
program.parseAsync();
|
|
@@ -14,10 +14,9 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
__exportStar(require("./command-options"), exports);
|
|
18
17
|
__exportStar(require("./models"), exports);
|
|
19
18
|
__exportStar(require("./view-models"), exports);
|
|
20
19
|
__exportStar(require("./Config"), exports);
|
|
21
20
|
__exportStar(require("./ShipItCommand"), exports);
|
|
21
|
+
__exportStar(require("./ShipItOptions"), exports);
|
|
22
22
|
__exportStar(require("./ShipItTask"), exports);
|
|
23
|
-
__exportStar(require("./VersionType"), exports);
|
|
@@ -32,9 +32,7 @@ function createContainer(config) {
|
|
|
32
32
|
container.bind(types_1.TASKS.CreateMergeRequestTask).to(tasks_1.CreateMergeRequestTask);
|
|
33
33
|
container.bind(types_1.TASKS.ValidateDescriptionsTask).to(tasks_1.ValidateDescriptionsTask);
|
|
34
34
|
container.bind(types_1.TASKS.CreateReleaseNotesTask).to(tasks_1.CreateReleaseNotesTask);
|
|
35
|
-
container.bind(types_1.TASKS.InstallPackagesTask).to(tasks_1.InstallPackagesTask);
|
|
36
35
|
container.bind(types_1.TASKS.BumpPackagesTask).to(tasks_1.BumpPackagesTask);
|
|
37
|
-
container.bind(types_1.TASKS.CommitPackageVersionsTask).to(tasks_1.CommitPackageVersionsTask);
|
|
38
36
|
/**
|
|
39
37
|
* Commands
|
|
40
38
|
*/
|
|
@@ -44,7 +42,6 @@ function createContainer(config) {
|
|
|
44
42
|
container.bind(types_1.COMMANDS.CreateMergeRequestCommand).to(commands_1.CreateMergeRequestCommand);
|
|
45
43
|
container.bind(types_1.COMMANDS.ReleaseCommand).to(commands_1.ReleaseCommand);
|
|
46
44
|
container.bind(types_1.COMMANDS.CreateReleaseNotesCommand).to(commands_1.CreateReleaseNotesCommand);
|
|
47
|
-
container.bind(types_1.COMMANDS.InstallPackagesCommand).to(commands_1.InstallPackagesCommand);
|
|
48
45
|
container.bind(types_1.COMMANDS.BumpPackagesCommand).to(commands_1.BumpPackagesCommand);
|
|
49
46
|
return container;
|
|
50
47
|
}
|
|
@@ -69,11 +69,9 @@ var lodash_1 = __importDefault(require("lodash"));
|
|
|
69
69
|
var semver_1 = __importDefault(require("semver"));
|
|
70
70
|
var types_1 = require("../types");
|
|
71
71
|
var api_clients_1 = require("../api-clients");
|
|
72
|
-
var errors_1 = require("../errors");
|
|
73
|
-
var utils_1 = require("../utils");
|
|
74
72
|
var GitLabService = /** @class */ (function () {
|
|
75
73
|
function GitLabService(apiClient) {
|
|
76
|
-
this.
|
|
74
|
+
this._apiClient = apiClient;
|
|
77
75
|
}
|
|
78
76
|
GitLabService.prototype.getProjects = function (options) {
|
|
79
77
|
return __awaiter(this, void 0, void 0, function () {
|
|
@@ -81,20 +79,20 @@ var GitLabService = /** @class */ (function () {
|
|
|
81
79
|
return __generator(this, function (_a) {
|
|
82
80
|
switch (_a.label) {
|
|
83
81
|
case 0:
|
|
84
|
-
if (this.
|
|
85
|
-
return [2 /*return*/, this.
|
|
86
|
-
return [4 /*yield*/, this.
|
|
82
|
+
if (this._projects)
|
|
83
|
+
return [2 /*return*/, this._projects];
|
|
84
|
+
return [4 /*yield*/, this._apiClient.getMergeRequests(options)];
|
|
87
85
|
case 1:
|
|
88
86
|
mergeRequests = _a.sent();
|
|
89
87
|
if (!(mergeRequests === null || mergeRequests === void 0 ? void 0 : mergeRequests.length))
|
|
90
|
-
throw new
|
|
88
|
+
throw new Error('Could not find any merge requests for the specified options');
|
|
91
89
|
projectIds = lodash_1.default.uniqBy(mergeRequests, function (m) { return m.projectId; }).map(function (m) { return m.projectId; });
|
|
92
|
-
return [4 /*yield*/, this.
|
|
90
|
+
return [4 /*yield*/, this._apiClient.getProjectsByIds(projectIds)];
|
|
93
91
|
case 2:
|
|
94
92
|
projects = _a.sent();
|
|
95
93
|
if (!(projects === null || projects === void 0 ? void 0 : projects.length) || projects.length !== projectIds.length)
|
|
96
|
-
throw new
|
|
97
|
-
return [2 /*return*/, (this.
|
|
94
|
+
throw new Error('Could not find all projects for the found merge requests');
|
|
95
|
+
return [2 /*return*/, (this._projects = projects.map(function (p) { return (__assign(__assign({}, p), { mergeRequests: mergeRequests.filter(function (mr) { return mr.projectId === p.id; }) })); }))];
|
|
98
96
|
}
|
|
99
97
|
});
|
|
100
98
|
});
|
|
@@ -104,7 +102,7 @@ var GitLabService = /** @class */ (function () {
|
|
|
104
102
|
var commits, lastDevCommit, title;
|
|
105
103
|
return __generator(this, function (_a) {
|
|
106
104
|
switch (_a.label) {
|
|
107
|
-
case 0: return [4 /*yield*/, this.
|
|
105
|
+
case 0: return [4 /*yield*/, this._apiClient.getCommitsSince(projectId, 'dev', sinceSha)];
|
|
108
106
|
case 1:
|
|
109
107
|
commits = _a.sent();
|
|
110
108
|
lastDevCommit = lodash_1.default.last(commits);
|
|
@@ -115,7 +113,7 @@ var GitLabService = /** @class */ (function () {
|
|
|
115
113
|
commits.pop();
|
|
116
114
|
}
|
|
117
115
|
if (!(commits === null || commits === void 0 ? void 0 : commits.length))
|
|
118
|
-
throw new
|
|
116
|
+
throw new Error("Could not find any commits in dev for projectId: ".concat(projectId, " since ").concat(sinceSha));
|
|
119
117
|
return [2 /*return*/, commits];
|
|
120
118
|
}
|
|
121
119
|
});
|
|
@@ -125,7 +123,7 @@ var GitLabService = /** @class */ (function () {
|
|
|
125
123
|
return __awaiter(this, void 0, void 0, function () {
|
|
126
124
|
return __generator(this, function (_a) {
|
|
127
125
|
switch (_a.label) {
|
|
128
|
-
case 0: return [4 /*yield*/, this.
|
|
126
|
+
case 0: return [4 /*yield*/, this._apiClient.getBranch(projectId, branchName)];
|
|
129
127
|
case 1: return [2 /*return*/, _a.sent()];
|
|
130
128
|
}
|
|
131
129
|
});
|
|
@@ -133,47 +131,53 @@ var GitLabService = /** @class */ (function () {
|
|
|
133
131
|
};
|
|
134
132
|
GitLabService.prototype.createBranch = function (project, branchFrom, branchName, cherryPick) {
|
|
135
133
|
return __awaiter(this, void 0, void 0, function () {
|
|
136
|
-
var
|
|
134
|
+
var newBranch_1, i, mr, newBranch;
|
|
137
135
|
return __generator(this, function (_a) {
|
|
138
136
|
switch (_a.label) {
|
|
139
137
|
case 0:
|
|
140
138
|
if (!cherryPick) return [3 /*break*/, 6];
|
|
141
|
-
return [4 /*yield*/, this.
|
|
139
|
+
return [4 /*yield*/, this._apiClient.createBranch(project.id, branchName, 'master')];
|
|
142
140
|
case 1:
|
|
143
|
-
|
|
141
|
+
newBranch_1 = _a.sent();
|
|
142
|
+
if (!newBranch_1)
|
|
143
|
+
throw new Error("Failed to create branch from master for projectId: ".concat(project.id));
|
|
144
144
|
i = 0;
|
|
145
145
|
_a.label = 2;
|
|
146
146
|
case 2:
|
|
147
147
|
if (!(i < project.mergeRequests.length)) return [3 /*break*/, 5];
|
|
148
148
|
mr = project.mergeRequests[i];
|
|
149
149
|
if (!mr.mergeCommit)
|
|
150
|
-
throw new
|
|
151
|
-
return [4 /*yield*/, this.
|
|
150
|
+
throw new Error("Could not find the merge commit sha for MR: ".concat(mr.title, " in projectId: ").concat(project.id));
|
|
151
|
+
return [4 /*yield*/, this._apiClient.cherryPick(project.id, mr.mergeCommit, branchName)];
|
|
152
152
|
case 3:
|
|
153
153
|
_a.sent();
|
|
154
154
|
_a.label = 4;
|
|
155
155
|
case 4:
|
|
156
156
|
i++;
|
|
157
157
|
return [3 /*break*/, 2];
|
|
158
|
-
case 5: return [2 /*return*/,
|
|
159
|
-
case 6: return [4 /*yield*/, this.
|
|
160
|
-
case 7:
|
|
158
|
+
case 5: return [2 /*return*/, newBranch_1];
|
|
159
|
+
case 6: return [4 /*yield*/, this._apiClient.createBranch(project.id, branchName, branchFrom)];
|
|
160
|
+
case 7:
|
|
161
|
+
newBranch = _a.sent();
|
|
162
|
+
if (!newBranch)
|
|
163
|
+
throw new Error("Failed to create branch from master for projectId: ".concat(project.id));
|
|
164
|
+
return [2 /*return*/, newBranch];
|
|
161
165
|
}
|
|
162
166
|
});
|
|
163
167
|
});
|
|
164
168
|
};
|
|
165
169
|
GitLabService.prototype.getMergeRequest = function (projectId, branchName) {
|
|
166
|
-
return this.
|
|
170
|
+
return this._apiClient.getMergeRequest(projectId, branchName, 'master');
|
|
167
171
|
};
|
|
168
172
|
GitLabService.prototype.createMergeRequest = function (projectId, branchName, description) {
|
|
169
|
-
return this.
|
|
173
|
+
return this._apiClient.createMergeRequest(projectId, branchName, 'master', branchName, description);
|
|
170
174
|
};
|
|
171
175
|
GitLabService.prototype.bumpVersionTxt = function (projectId, branchName, newVersion) {
|
|
172
176
|
return __awaiter(this, void 0, void 0, function () {
|
|
173
177
|
var versionTxt, buff, text;
|
|
174
178
|
return __generator(this, function (_a) {
|
|
175
179
|
switch (_a.label) {
|
|
176
|
-
case 0: return [4 /*yield*/, this.
|
|
180
|
+
case 0: return [4 /*yield*/, this._apiClient.getFile(projectId, 'version.txt', branchName)];
|
|
177
181
|
case 1:
|
|
178
182
|
versionTxt = _a.sent();
|
|
179
183
|
if (!versionTxt)
|
|
@@ -182,7 +186,7 @@ var GitLabService = /** @class */ (function () {
|
|
|
182
186
|
text = buff.toString('utf-8');
|
|
183
187
|
if (text === newVersion)
|
|
184
188
|
return [2 /*return*/, false];
|
|
185
|
-
return [4 /*yield*/, this.
|
|
189
|
+
return [4 /*yield*/, this._apiClient.updateFile(projectId, 'version.txt', branchName, newVersion, 'Bumping version.txt')];
|
|
186
190
|
case 2:
|
|
187
191
|
_a.sent();
|
|
188
192
|
return [2 /*return*/, true];
|
|
@@ -194,20 +198,20 @@ var GitLabService = /** @class */ (function () {
|
|
|
194
198
|
return __awaiter(this, void 0, void 0, function () {
|
|
195
199
|
return __generator(this, function (_a) {
|
|
196
200
|
switch (_a.label) {
|
|
197
|
-
case 0: return [4 /*yield*/, this.
|
|
201
|
+
case 0: return [4 /*yield*/, this._apiClient.getFile(projectId, file, branchName)];
|
|
198
202
|
case 1: return [2 /*return*/, _a.sent()];
|
|
199
203
|
}
|
|
200
204
|
});
|
|
201
205
|
});
|
|
202
206
|
};
|
|
203
207
|
GitLabService.prototype.updateFile = function (projectId, filePath, branchName, content, commit) {
|
|
204
|
-
return this.
|
|
208
|
+
return this._apiClient.updateFile(projectId, filePath, branchName, content, commit);
|
|
205
209
|
};
|
|
206
210
|
GitLabService.prototype.commit = function (projectId, branchName, commitMessage, files) {
|
|
207
211
|
return __awaiter(this, void 0, void 0, function () {
|
|
208
212
|
return __generator(this, function (_a) {
|
|
209
213
|
switch (_a.label) {
|
|
210
|
-
case 0: return [4 /*yield*/, this.
|
|
214
|
+
case 0: return [4 /*yield*/, this._apiClient.commit(projectId, branchName, files, commitMessage)];
|
|
211
215
|
case 1:
|
|
212
216
|
_a.sent();
|
|
213
217
|
return [2 /*return*/];
|
|
@@ -215,16 +219,12 @@ var GitLabService = /** @class */ (function () {
|
|
|
215
219
|
});
|
|
216
220
|
});
|
|
217
221
|
};
|
|
218
|
-
/**
|
|
219
|
-
* We use the latest valid semver tag in master to determine what the current version
|
|
220
|
-
* of a project is
|
|
221
|
-
*/
|
|
222
222
|
GitLabService.prototype.getCurrentVersionTag = function (projectId) {
|
|
223
223
|
return __awaiter(this, void 0, void 0, function () {
|
|
224
224
|
var tags, tagNames, sortedTagNames, currentVersion, currentTag;
|
|
225
225
|
return __generator(this, function (_a) {
|
|
226
226
|
switch (_a.label) {
|
|
227
|
-
case 0: return [4 /*yield*/, this.
|
|
227
|
+
case 0: return [4 /*yield*/, this._apiClient.getLatestTags(projectId)];
|
|
228
228
|
case 1:
|
|
229
229
|
tags = _a.sent();
|
|
230
230
|
if (!(tags === null || tags === void 0 ? void 0 : tags.length))
|
|
@@ -242,33 +242,6 @@ var GitLabService = /** @class */ (function () {
|
|
|
242
242
|
});
|
|
243
243
|
});
|
|
244
244
|
};
|
|
245
|
-
GitLabService.prototype.getNextBranchInfo = function (projectId, version) {
|
|
246
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
247
|
-
var tag, nextVersion, branchName, branch;
|
|
248
|
-
return __generator(this, function (_a) {
|
|
249
|
-
switch (_a.label) {
|
|
250
|
-
case 0: return [4 /*yield*/, this.getCurrentVersionTag(projectId)];
|
|
251
|
-
case 1:
|
|
252
|
-
tag = _a.sent();
|
|
253
|
-
if (!tag)
|
|
254
|
-
throw new errors_1.ShipItError("Could not find the latest semver tag for projectId: ".concat(projectId));
|
|
255
|
-
nextVersion = utils_1.Versions.getNextVersion(tag.name, version);
|
|
256
|
-
branchName = version === 'patch' ?
|
|
257
|
-
utils_1.BranchNames.getHotfix(nextVersion) :
|
|
258
|
-
utils_1.BranchNames.getRelease(nextVersion);
|
|
259
|
-
return [4 /*yield*/, this.getBranch(projectId, branchName)];
|
|
260
|
-
case 2:
|
|
261
|
-
branch = _a.sent();
|
|
262
|
-
return [2 /*return*/, {
|
|
263
|
-
nextVersion: nextVersion,
|
|
264
|
-
branchName: branchName,
|
|
265
|
-
branch: branch,
|
|
266
|
-
tag: tag
|
|
267
|
-
}];
|
|
268
|
-
}
|
|
269
|
-
});
|
|
270
|
-
});
|
|
271
|
-
};
|
|
272
245
|
GitLabService = __decorate([
|
|
273
246
|
(0, inversify_1.injectable)(),
|
|
274
247
|
__param(0, (0, inversify_1.inject)(types_1.API_CLIENTS.GitLabApiClient)),
|