@clickview/ship-it 0.0.4-dev.5 → 0.0.4

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.
Files changed (27) hide show
  1. package/lib/src/api-clients/git-lab/GitLabApiClient.js +65 -0
  2. package/lib/src/api-clients/git-lab/GitLabMapper.js +18 -1
  3. package/lib/src/commands/ReleaseCommand.js +11 -7
  4. package/lib/src/commands/{CommitPackageVersionsCommand.js → TagMasterCommand.js} +13 -15
  5. package/lib/src/commands/index.js +1 -0
  6. package/lib/src/constants/CommandTypeMapping.js +2 -1
  7. package/lib/src/interfaces/models/index.js +2 -0
  8. package/lib/src/inversify.config.js +2 -0
  9. package/lib/src/services/GitLabService.js +114 -8
  10. package/lib/src/startup/SetupCommands.js +23 -11
  11. package/lib/src/tasks/BumpPackagesTask.js +1 -2
  12. package/lib/src/tasks/CommitPackageVersionsTask.js +4 -0
  13. package/lib/src/tasks/CreateBranchTask.js +19 -37
  14. package/lib/src/tasks/{CommitLocalPackagesTask.js → TagMasterTask.js} +56 -71
  15. package/lib/src/tasks/ValidateDescriptionsTask.js +15 -11
  16. package/lib/src/tasks/ValidateMergeRequestTask.js +12 -6
  17. package/lib/src/tasks/ValidateTask.js +4 -4
  18. package/lib/src/tasks/index.js +1 -0
  19. package/lib/src/types.js +4 -2
  20. package/lib/src/utils/BranchNames.js +0 -2
  21. package/lib/src/utils/ProjectIds.js +1 -5
  22. package/lib/src/utils/Versions.js +0 -1
  23. package/package.json +1 -1
  24. package/lib/src/api-clients/GitLabApiClient.js +0 -342
  25. package/lib/src/interfaces/command-options/InstallPackagesCommandOptions.js +0 -2
  26. /package/lib/src/interfaces/{ShipItOptions.js → models/Label.js} +0 -0
  27. /package/lib/src/interfaces/{command-options/CommitPackageVersionsCommandOptions.js → models/Release.js} +0 -0
@@ -122,6 +122,58 @@ var GitLabApiClient = /** @class */ (function () {
122
122
  });
123
123
  });
124
124
  };
125
+ GitLabApiClient.prototype.getTag = function (projectId, tagName) {
126
+ return __awaiter(this, void 0, void 0, function () {
127
+ var tag, _a;
128
+ return __generator(this, function (_b) {
129
+ switch (_b.label) {
130
+ case 0:
131
+ _b.trys.push([0, 2, , 3]);
132
+ return [4 /*yield*/, this.client.Tags.show(projectId, tagName)];
133
+ case 1:
134
+ tag = _b.sent();
135
+ return [2 /*return*/, GitLabMapper_1.GitLabMapper.tag(tag)];
136
+ case 2:
137
+ _a = _b.sent();
138
+ return [2 /*return*/, null];
139
+ case 3: return [2 /*return*/];
140
+ }
141
+ });
142
+ });
143
+ };
144
+ GitLabApiClient.prototype.createTag = function (projectId, tagName, sha) {
145
+ return __awaiter(this, void 0, void 0, function () {
146
+ var tag;
147
+ return __generator(this, function (_a) {
148
+ switch (_a.label) {
149
+ case 0: return [4 /*yield*/, this.client.Tags.create(projectId, tagName, sha)];
150
+ case 1:
151
+ tag = _a.sent();
152
+ return [2 /*return*/, GitLabMapper_1.GitLabMapper.tag(tag)];
153
+ }
154
+ });
155
+ });
156
+ };
157
+ GitLabApiClient.prototype.createRelease = function (projectId, release) {
158
+ return __awaiter(this, void 0, void 0, function () {
159
+ var newRelease;
160
+ return __generator(this, function (_a) {
161
+ switch (_a.label) {
162
+ case 0: return [4 /*yield*/, this.client.Releases.create(projectId, {
163
+ id: projectId,
164
+ name: release.name,
165
+ tag_name: release.tag,
166
+ description: release.description,
167
+ ref: release.ref,
168
+ milestones: release.milestones
169
+ })];
170
+ case 1:
171
+ newRelease = _a.sent();
172
+ return [2 /*return*/, GitLabMapper_1.GitLabMapper.release(newRelease)];
173
+ }
174
+ });
175
+ });
176
+ };
125
177
  GitLabApiClient.prototype.getCommitsSince = function (projectId, branchName, sinceSha) {
126
178
  return __awaiter(this, void 0, void 0, function () {
127
179
  var commit, commits;
@@ -331,6 +383,19 @@ var GitLabApiClient = /** @class */ (function () {
331
383
  });
332
384
  });
333
385
  };
386
+ GitLabApiClient.prototype.getLabels = function (projectId) {
387
+ return __awaiter(this, void 0, void 0, function () {
388
+ var labels;
389
+ return __generator(this, function (_a) {
390
+ switch (_a.label) {
391
+ case 0: return [4 /*yield*/, this.client.Labels.all(projectId)];
392
+ case 1:
393
+ labels = _a.sent();
394
+ return [2 /*return*/, labels.map(GitLabMapper_1.GitLabMapper.label)];
395
+ }
396
+ });
397
+ });
398
+ };
334
399
  GitLabApiClient = __decorate([
335
400
  (0, inversify_1.injectable)(),
336
401
  __param(0, (0, inversify_1.inject)(types_1.MISC.GitLabConfig)),
@@ -16,7 +16,8 @@ exports.GitLabMapper = {
16
16
  hasConflicts: m.has_conflicts,
17
17
  targetBranch: m.target_branch,
18
18
  sourceBranch: m.source_branch,
19
- milestone: exports.GitLabMapper.milestone(m.milestone)
19
+ milestone: exports.GitLabMapper.milestone(m.milestone),
20
+ labels: m.labels
20
21
  };
21
22
  },
22
23
  project: function (p) {
@@ -57,5 +58,21 @@ exports.GitLabMapper = {
57
58
  id: m.id,
58
59
  name: m.title
59
60
  };
61
+ },
62
+ label: function (m) {
63
+ return {
64
+ name: m.name,
65
+ description: m.description
66
+ };
67
+ },
68
+ release: function (m) {
69
+ var _a;
70
+ return {
71
+ name: m.name,
72
+ tag: m.tag_name,
73
+ description: m.description,
74
+ ref: m.commit.id,
75
+ milestones: (_a = m.milestones) === null || _a === void 0 ? void 0 : _a.map(function (m) { return m.title; })
76
+ };
60
77
  }
61
78
  };
@@ -79,31 +79,35 @@ var ReleaseCommand = /** @class */ (function () {
79
79
  cont = _a.sent();
80
80
  if (!cont)
81
81
  return [2 /*return*/, false];
82
- // cont = await this.validateDescriptionsTask.run(options);
82
+ return [4 /*yield*/, this.validateDescriptionsTask.run(options)];
83
+ case 3:
84
+ cont = _a.sent();
83
85
  if (!cont)
84
86
  return [2 /*return*/, false];
85
- // cont = await this.validateCommitsTask.run(options);
87
+ return [4 /*yield*/, this.validateCommitsTask.run(options)];
88
+ case 4:
89
+ cont = _a.sent();
86
90
  if (!cont)
87
91
  return [2 /*return*/, false];
88
92
  return [4 /*yield*/, this.createBranchTask.run(options)];
89
- case 3:
93
+ case 5:
90
94
  cont = _a.sent();
91
95
  if (!cont)
92
96
  return [2 /*return*/, false];
93
97
  return [4 /*yield*/, this.bumpVersionTxtTask.run(options)];
94
- case 4:
98
+ case 6:
95
99
  cont = _a.sent();
96
100
  if (!cont)
97
101
  return [2 /*return*/, false];
98
102
  return [4 /*yield*/, this.createMergeRequestTask.run(options)];
99
- case 5:
103
+ case 7:
100
104
  cont = _a.sent();
101
105
  if (!cont)
102
106
  return [2 /*return*/, false];
103
107
  if (!options.triggerMonorepoBuild)
104
- return [2 /*return*/, false];
108
+ return [2 /*return*/, true];
105
109
  return [4 /*yield*/, this.startMonorepoBuildTask.run(options)];
106
- case 6: return [2 /*return*/, _a.sent()];
110
+ case 8: return [2 /*return*/, _a.sent()];
107
111
  }
108
112
  });
109
113
  });
@@ -48,31 +48,29 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
48
48
  }
49
49
  };
50
50
  Object.defineProperty(exports, "__esModule", { value: true });
51
- exports.CommitPackageVersionsCommand = void 0;
51
+ exports.TagMasterCommand = void 0;
52
52
  require("reflect-metadata");
53
53
  var inversify_1 = require("inversify");
54
- var types_1 = require("types");
55
- var CommitPackageVersionsCommand = /** @class */ (function () {
56
- function CommitPackageVersionsCommand(commitPackageVersionsTask) {
57
- this.commitPackageVersionsTask = commitPackageVersionsTask;
54
+ var types_1 = require("../types");
55
+ var TagMasterCommand = /** @class */ (function () {
56
+ function TagMasterCommand(tagMasterTask) {
57
+ this.tagMasterTask = tagMasterTask;
58
58
  }
59
- CommitPackageVersionsCommand.prototype.run = function (options) {
59
+ TagMasterCommand.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.commitPackageVersionsTask.run(options)];
64
- case 1:
65
- _a.sent();
66
- return [2 /*return*/];
63
+ case 0: return [4 /*yield*/, this.tagMasterTask.run(options)];
64
+ case 1: return [2 /*return*/, _a.sent()];
67
65
  }
68
66
  });
69
67
  });
70
68
  };
71
- CommitPackageVersionsCommand = __decorate([
69
+ TagMasterCommand = __decorate([
72
70
  (0, inversify_1.injectable)(),
73
- __param(0, (0, inversify_1.inject)(types_1.TASKS.CommitPackageVersionsTask)),
71
+ __param(0, (0, inversify_1.inject)(types_1.TASKS.TagMasterTask)),
74
72
  __metadata("design:paramtypes", [Object])
75
- ], CommitPackageVersionsCommand);
76
- return CommitPackageVersionsCommand;
73
+ ], TagMasterCommand);
74
+ return TagMasterCommand;
77
75
  }());
78
- exports.CommitPackageVersionsCommand = CommitPackageVersionsCommand;
76
+ exports.TagMasterCommand = TagMasterCommand;
@@ -22,5 +22,6 @@ __exportStar(require("./InstallPackagesCommand"), exports);
22
22
  __exportStar(require("./ReleaseCommand"), exports);
23
23
  __exportStar(require("./StartConsumingProjectBuildsCommand"), exports);
24
24
  __exportStar(require("./StatusCommand"), exports);
25
+ __exportStar(require("./TagMasterCommand"), exports);
25
26
  __exportStar(require("./ValidateMergeRequestCommand"), exports);
26
27
  __exportStar(require("./VersionCommand"), exports);
@@ -11,6 +11,7 @@ exports.CommandTypeMapping = {
11
11
  'create-notes': types_1.COMMANDS.CreateReleaseNotesCommand,
12
12
  'install-packages': types_1.COMMANDS.InstallPackagesCommand,
13
13
  'bump-packages': types_1.COMMANDS.BumpPackagesCommand,
14
+ 'validate-mr': types_1.COMMANDS.ValidateMergeRequestCommand,
14
15
  'start-consuming-project-builds': types_1.COMMANDS.StartConsumingProjectBuildsCommand,
15
- 'validate-mr': types_1.COMMANDS.ValidateMergeRequestCommand
16
+ 'tag-master': types_1.COMMANDS.TagMasterCommand
16
17
  };
@@ -18,7 +18,9 @@ __exportStar(require("./Branch"), exports);
18
18
  __exportStar(require("./Commit"), exports);
19
19
  __exportStar(require("./CommitFile"), exports);
20
20
  __exportStar(require("./File"), exports);
21
+ __exportStar(require("./Label"), exports);
21
22
  __exportStar(require("./MergeRequest"), exports);
22
23
  __exportStar(require("./Milestone"), exports);
23
24
  __exportStar(require("./Project"), exports);
25
+ __exportStar(require("./Release"), exports);
24
26
  __exportStar(require("./Tag"), exports);
@@ -40,6 +40,7 @@ function createContainer(config) {
40
40
  container.bind(types_1.TASKS.CommitPackageVersionsTask).to(tasks_1.CommitPackageVersionsTask);
41
41
  container.bind(types_1.TASKS.ValidateMergeRequestTask).to(tasks_1.ValidateMergeRequestTask);
42
42
  container.bind(types_1.TASKS.StartMonorepoBuildTask).to(tasks_1.StartMonorepoBuildTask);
43
+ container.bind(types_1.TASKS.TagMasterTask).to(tasks_1.TagMasterTask);
43
44
  container.bind(types_1.TASKS.StartConsumingProjectBuildsTask)
44
45
  .to(tasks_1.StartConsumingProjectBuildsTask);
45
46
  /**
@@ -54,6 +55,7 @@ function createContainer(config) {
54
55
  container.bind(types_1.COMMANDS.InstallPackagesCommand).to(commands_1.InstallPackagesCommand);
55
56
  container.bind(types_1.COMMANDS.BumpPackagesCommand).to(commands_1.BumpPackagesCommand);
56
57
  container.bind(types_1.COMMANDS.ValidateMergeRequestCommand).to(commands_1.ValidateMergeRequestCommand);
58
+ container.bind(types_1.COMMANDS.TagMasterCommand).to(commands_1.TagMasterCommand);
57
59
  container.bind(types_1.COMMANDS.StartConsumingProjectBuildsCommand)
58
60
  .to(commands_1.StartConsumingProjectBuildsCommand);
59
61
  return container;
@@ -71,13 +71,19 @@ var types_1 = require("../types");
71
71
  var api_clients_1 = require("../api-clients");
72
72
  var errors_1 = require("../errors");
73
73
  var utils_1 = require("../utils");
74
+ /**
75
+ * These are projects that will try to use tags to pull in extra projects
76
+ */
77
+ var MONOREPO_IDS = [
78
+ utils_1.ProjectIds.MONOREPO_PROJECT_ID
79
+ ];
74
80
  var GitLabService = /** @class */ (function () {
75
81
  function GitLabService(apiClient) {
76
82
  this.apiClient = apiClient;
77
83
  }
78
84
  GitLabService.prototype.getProjects = function (options) {
79
85
  return __awaiter(this, void 0, void 0, function () {
80
- var mergeRequests, projectIds, projects;
86
+ var allMergeRequests, mergeRequests, projectIds, projects, mappedProjects, _i, mappedProjects_1, mappedProject, extraProjects;
81
87
  return __generator(this, function (_a) {
82
88
  switch (_a.label) {
83
89
  case 0:
@@ -85,7 +91,8 @@ var GitLabService = /** @class */ (function () {
85
91
  return [2 /*return*/, this.projects];
86
92
  return [4 /*yield*/, this.apiClient.getMergeRequests(options)];
87
93
  case 1:
88
- mergeRequests = _a.sent();
94
+ allMergeRequests = _a.sent();
95
+ mergeRequests = allMergeRequests.filter(function (mr) { return mr.targetBranch !== 'master'; });
89
96
  if (!(mergeRequests === null || mergeRequests === void 0 ? void 0 : mergeRequests.length))
90
97
  throw new errors_1.ShipItError('Could not find any merge requests for the specified options');
91
98
  projectIds = lodash_1.default.uniqBy(mergeRequests, function (m) { return m.projectId; }).map(function (m) { return m.projectId; });
@@ -94,7 +101,72 @@ var GitLabService = /** @class */ (function () {
94
101
  projects = _a.sent();
95
102
  if (!(projects === null || projects === void 0 ? void 0 : projects.length) || projects.length !== projectIds.length)
96
103
  throw new errors_1.ShipItError('Could not find all projects for the found merge requests');
97
- return [2 /*return*/, (this.projects = projects.map(function (p) { return (__assign(__assign({}, p), { mergeRequests: mergeRequests.filter(function (mr) { return mr.projectId === p.id; }) })); }))];
104
+ mappedProjects = projects.map(function (p) { return (__assign(__assign({}, p), { mergeRequests: mergeRequests.filter(function (mr) { return mr.projectId === p.id; }) })); });
105
+ _i = 0, mappedProjects_1 = mappedProjects;
106
+ _a.label = 3;
107
+ case 3:
108
+ if (!(_i < mappedProjects_1.length)) return [3 /*break*/, 6];
109
+ mappedProject = mappedProjects_1[_i];
110
+ return [4 /*yield*/, this.getExtraProjects(mappedProject, projectIds)];
111
+ case 4:
112
+ extraProjects = _a.sent();
113
+ Array.prototype.push.apply(mappedProjects, extraProjects.map(function (p) { return (__assign(__assign({}, p), { mergeRequests: [] })); }));
114
+ _a.label = 5;
115
+ case 5:
116
+ _i++;
117
+ return [3 /*break*/, 3];
118
+ case 6: return [2 /*return*/, (this.projects = mappedProjects)];
119
+ }
120
+ });
121
+ });
122
+ };
123
+ /**
124
+ * Fetches any projects that are not already included via MRs by checking the project labels.
125
+ * We only do this for a whitelist of projects
126
+ */
127
+ GitLabService.prototype.getExtraProjects = function (project, existingProjectIds) {
128
+ return __awaiter(this, void 0, void 0, function () {
129
+ var labels, mrLabelNames, mrLabels, projectIds, extraProjectIds;
130
+ return __generator(this, function (_a) {
131
+ switch (_a.label) {
132
+ case 0:
133
+ if (!MONOREPO_IDS.includes(project.id.toString()))
134
+ return [2 /*return*/, []];
135
+ return [4 /*yield*/, this.getProjectLabels(project.id)];
136
+ case 1:
137
+ labels = _a.sent();
138
+ mrLabelNames = lodash_1.default.chain(project.mergeRequests)
139
+ .map(function (m) { return m.labels; })
140
+ .flatten()
141
+ .uniq()
142
+ .value();
143
+ mrLabels = lodash_1.default.intersection(labels.map(function (l) { return l.name; }), mrLabelNames);
144
+ projectIds = mrLabels.map(function (m) { var _a; return (_a = labels.find(function (l) { return l.name === m; })) === null || _a === void 0 ? void 0 : _a.description; });
145
+ extraProjectIds = lodash_1.default.difference(projectIds, existingProjectIds.map(function (p) { return p.toString(); }));
146
+ return [4 /*yield*/, this.apiClient.getProjectsByIds(extraProjectIds)];
147
+ case 2:
148
+ // fetches and returns the extra projects
149
+ return [2 /*return*/, _a.sent()];
150
+ }
151
+ });
152
+ });
153
+ };
154
+ /**
155
+ * Gets labels that have a projectId as their description
156
+ */
157
+ GitLabService.prototype.getProjectLabels = function (projectId) {
158
+ return __awaiter(this, void 0, void 0, function () {
159
+ var labels;
160
+ return __generator(this, function (_a) {
161
+ switch (_a.label) {
162
+ case 0: return [4 /*yield*/, this.apiClient.getLabels(projectId)];
163
+ case 1:
164
+ labels = _a.sent();
165
+ return [2 /*return*/, labels.filter(function (l) {
166
+ if (!l.description)
167
+ return false;
168
+ return !isNaN(+l.description);
169
+ })];
98
170
  }
99
171
  });
100
172
  });
@@ -129,8 +201,13 @@ var GitLabService = /** @class */ (function () {
129
201
  (title === null || title === void 0 ? void 0 : title.includes('dev'))) {
130
202
  commits.pop();
131
203
  }
132
- if (!(commits === null || commits === void 0 ? void 0 : commits.length))
133
- throw new errors_1.ShipItError("Could not find any commits in dev for projectId: ".concat(projectId, " since ").concat(sinceSha));
204
+ /**
205
+ * This is commented out right now because of a problem with the logic of this approach of validating MRs.
206
+ * We need to find a way to fetch all commits that will be included in this release. Leaving this commented
207
+ * until we figure that out - Sha
208
+ */
209
+ // if (!commits?.length)
210
+ // throw new ShipItError(`Could not find any commits in dev for projectId: ${projectId} since ${sinceSha}`);
134
211
  return [2 /*return*/, commits];
135
212
  }
136
213
  });
@@ -181,10 +258,9 @@ var GitLabService = /** @class */ (function () {
181
258
  return this.apiClient.getMergeRequest(projectId, branchName, 'master');
182
259
  };
183
260
  GitLabService.prototype.getMergeRequestById = function (projectId, mergeRequestId) {
184
- var idAsNumber = lodash_1.default.toNumber(mergeRequestId);
185
- if (!lodash_1.default.isNumber(idAsNumber))
261
+ if (isNaN(+mergeRequestId))
186
262
  throw new errors_1.ShipItError("MergeRequest Id must be a number: ".concat(mergeRequestId));
187
- return this.apiClient.getMergeRequestById(projectId, idAsNumber);
263
+ return this.apiClient.getMergeRequestById(projectId, +mergeRequestId);
188
264
  };
189
265
  GitLabService.prototype.createMergeRequest = function (projectId, branchName, description, milestoneName) {
190
266
  return __awaiter(this, void 0, void 0, function () {
@@ -282,6 +358,36 @@ var GitLabService = /** @class */ (function () {
282
358
  });
283
359
  });
284
360
  };
361
+ GitLabService.prototype.getTag = function (projectId, tagName) {
362
+ return __awaiter(this, void 0, void 0, function () {
363
+ return __generator(this, function (_a) {
364
+ switch (_a.label) {
365
+ case 0: return [4 /*yield*/, this.apiClient.getTag(projectId, tagName)];
366
+ case 1: return [2 /*return*/, _a.sent()];
367
+ }
368
+ });
369
+ });
370
+ };
371
+ GitLabService.prototype.createTag = function (projectId, tagName, sha) {
372
+ return __awaiter(this, void 0, void 0, function () {
373
+ return __generator(this, function (_a) {
374
+ switch (_a.label) {
375
+ case 0: return [4 /*yield*/, this.apiClient.createTag(projectId, tagName, sha)];
376
+ case 1: return [2 /*return*/, _a.sent()];
377
+ }
378
+ });
379
+ });
380
+ };
381
+ GitLabService.prototype.createRelease = function (projectId, release) {
382
+ return __awaiter(this, void 0, void 0, function () {
383
+ return __generator(this, function (_a) {
384
+ switch (_a.label) {
385
+ case 0: return [4 /*yield*/, this.apiClient.createRelease(projectId, release)];
386
+ case 1: return [2 /*return*/, _a.sent()];
387
+ }
388
+ });
389
+ });
390
+ };
285
391
  /**
286
392
  * We use the latest valid semver tag in master to determine what the current version
287
393
  * of a project is
@@ -64,6 +64,7 @@ function setupCommands(program, container) {
64
64
  addMilestoneCommand('create-branches', 'Create release branches for all projects that are part of a milestone');
65
65
  addMilestoneCommand('create-mrs', 'Create merge requests for all projects that are part of a milestone');
66
66
  addMilestoneCommand('create-notes', 'Builds descriptions for all projects that are part of a milestone');
67
+ addMilestoneCommand('tag-master', 'Tags master for all release MRs that are part of a milestone');
67
68
  program.command('release')
68
69
  .description('Create releases for all projects that are part of a milestone')
69
70
  .requiredOption('-m, --milestone <milestone>')
@@ -71,12 +72,17 @@ function setupCommands(program, container) {
71
72
  .option('--hotfix')
72
73
  .option('--major')
73
74
  .option('--trigger-monorepo-build')
74
- .action(function (options) { return __awaiter(_this, void 0, void 0, function () {
75
- var milestoneCommandOptions, releaseCommandOptions;
75
+ .action(function (opts) { return __awaiter(_this, void 0, void 0, function () {
76
+ var options;
76
77
  return __generator(this, function (_a) {
77
- milestoneCommandOptions = (0, AddMilestoneCommand_1.processMilestoneCommandOptions)(lodash_1.default.omit(options, 'triggerMonorepoBuild'));
78
- releaseCommandOptions = __assign(__assign({}, milestoneCommandOptions), { triggerMonorepoBuild: !!options.triggerMonorepoBuild });
79
- return [2 /*return*/, getAction('release')(releaseCommandOptions)];
78
+ switch (_a.label) {
79
+ case 0:
80
+ options = __assign(__assign({}, (0, AddMilestoneCommand_1.processMilestoneCommandOptions)(lodash_1.default.omit(opts, 'triggerMonorepoBuild'))), { triggerMonorepoBuild: !!opts.triggerMonorepoBuild });
81
+ return [4 /*yield*/, getAction('release')(options)];
82
+ case 1:
83
+ _a.sent();
84
+ return [2 /*return*/];
85
+ }
80
86
  });
81
87
  }); });
82
88
  program.command('bump-packages')
@@ -87,19 +93,25 @@ function setupCommands(program, container) {
87
93
  program.command('install-packages')
88
94
  .description('Install the latest clickview npm packages in all consuming projects that are part of a milestone')
89
95
  .option('-m, --milestone <milestone>')
90
- .option('-b, --branchName <monorepoBranchName>')
96
+ .option('-b, --monorepoBranchName <monorepoBranchName>')
91
97
  .option('-p, --projectIds <projectIds...>')
92
98
  .action(getAction('install-packages'));
99
+ program.command('validate-mr')
100
+ .description('Validate a merge request in a single project, ensuring it has a milestone and valid description')
101
+ .option('-p, --projectId <projectId>')
102
+ .option('-b, --branchName <branchName>')
103
+ .action(getAction('validate-mr'));
104
+ program.command('start-consuming-project-builds')
105
+ .description('Trigger TeamCity builds in all consuming projects that are a part of a milestone')
106
+ .option('-m, --milestone <milestone>')
107
+ .option('--monorepoBranchName <monorepoBranchName>')
108
+ .option('-p, --projectIds <projectIds...>')
109
+ .action(getAction('start-consuming-project-builds'));
93
110
  program.command('start-consuming-project-builds')
94
111
  .description('Trigger TeamCity builds in all consuming projects that are a part of a milestone')
95
112
  .option('-m, --milestone <milestone>')
96
113
  .option('--monorepoBranchName <monorepoBranchName>')
97
114
  .option('-p, --projectIds <projectIds...>')
98
115
  .action(getAction('start-consuming-project-builds'));
99
- program.command('validate-mr')
100
- .description('Validate a merge request in a single project, ensuring it has a milestone and valid description')
101
- .option('-p, --projectId <projectId>')
102
- .option('-b, --branchName <branchName>')
103
- .action(getAction('validate-mr'));
104
116
  }
105
117
  exports.setupCommands = setupCommands;
@@ -89,12 +89,11 @@ var BumpPackagesTask = /** @class */ (function () {
89
89
  return [4 /*yield*/, this.getLernaCommand(options)];
90
90
  case 2:
91
91
  lernaVersionCmd = _a.sent();
92
- console.log("Found lerna command ".concat(lernaVersionCmd, " but running dev versioning script for testing purposes"));
93
92
  if (!lernaVersionCmd) {
94
93
  utils_1.Logger.logError('Something went wrong while trying to detect which versioning script to run with Lerna.');
95
94
  return [2 /*return*/, false];
96
95
  }
97
- (0, child_process_1.execSync)("lerna version prepatch --preid dev ".concat(SHARED_LERNA_OPTIONS));
96
+ (0, child_process_1.execSync)(lernaVersionCmd);
98
97
  utils_1.Logger.logSuccess('Successfully executed Lerna versioning command.');
99
98
  return [2 /*return*/, true];
100
99
  }
@@ -93,6 +93,10 @@ var CommitPackageVersionsTask = /** @class */ (function () {
93
93
  content = (0, fs_1.readFileSync)(filePath, { encoding: 'utf8' });
94
94
  }
95
95
  catch (_a) {
96
+ /**
97
+ * If the file doesn't exist, ignore the error.
98
+ * This will occur when TC Docker runs this script as it doesn't copy over @clickview/tooling
99
+ */
96
100
  continue;
97
101
  }
98
102
  commitFiles.push({
@@ -60,54 +60,36 @@ var CreateBranchTask = /** @class */ (function () {
60
60
  }
61
61
  CreateBranchTask.prototype.run = function (options) {
62
62
  return __awaiter(this, void 0, void 0, function () {
63
- var projects, _loop_1, this_1, _i, projects_1, project;
64
- return __generator(this, function (_a) {
65
- switch (_a.label) {
63
+ var projects, _i, projects_1, project, _a, branch, branchName, branchFrom;
64
+ return __generator(this, function (_b) {
65
+ switch (_b.label) {
66
66
  case 0:
67
67
  utils_1.Logger.logTask('Creating release branches');
68
68
  return [4 /*yield*/, this.service.getProjects(options)];
69
69
  case 1:
70
- projects = _a.sent();
71
- _loop_1 = function (project) {
72
- var _b, branch, branchName, branchFrom;
73
- return __generator(this, function (_c) {
74
- switch (_c.label) {
75
- case 0: return [4 /*yield*/, this_1.service.getNextBranchInfo(project.id, options.version)];
76
- case 1:
77
- _b = _c.sent(), branch = _b.branch, branchName = _b.branchName;
78
- if (branch) {
79
- utils_1.Logger.logWarning("[".concat(project.title, "]: [").concat(branchName, "] Already exists"));
80
- return [2 /*return*/, "continue"];
81
- }
82
- branchFrom = (function () {
83
- if (project.id.toString() === utils_1.ProjectIds.MONOREPO_PROJECT_ID)
84
- return 'docker';
85
- return options.version === 'patch' ? 'master' : 'dev';
86
- })();
87
- // const branchFrom = options.version === 'patch' ? 'master' : 'dev';
88
- return [4 /*yield*/, this_1.service.createBranch(project, branchFrom, branchName, false)];
89
- case 2:
90
- // const branchFrom = options.version === 'patch' ? 'master' : 'dev';
91
- _c.sent();
92
- utils_1.Logger.logMessage("[".concat(project.title, "]: [").concat(branchName, "] Has been created"));
93
- return [2 /*return*/];
94
- }
95
- });
96
- };
97
- this_1 = this;
70
+ projects = _b.sent();
98
71
  _i = 0, projects_1 = projects;
99
- _a.label = 2;
72
+ _b.label = 2;
100
73
  case 2:
101
- if (!(_i < projects_1.length)) return [3 /*break*/, 5];
74
+ if (!(_i < projects_1.length)) return [3 /*break*/, 6];
102
75
  project = projects_1[_i];
103
- return [5 /*yield**/, _loop_1(project)];
76
+ return [4 /*yield*/, this.service.getNextBranchInfo(project.id, options.version)];
104
77
  case 3:
105
- _a.sent();
106
- _a.label = 4;
78
+ _a = _b.sent(), branch = _a.branch, branchName = _a.branchName;
79
+ if (branch) {
80
+ utils_1.Logger.logWarning("[".concat(project.title, "]: [").concat(branchName, "] Already exists"));
81
+ return [3 /*break*/, 5];
82
+ }
83
+ branchFrom = options.version === 'patch' ? 'master' : 'dev';
84
+ return [4 /*yield*/, this.service.createBranch(project, branchFrom, branchName, false)];
107
85
  case 4:
86
+ _b.sent();
87
+ utils_1.Logger.logMessage("[".concat(project.title, "]: [").concat(branchName, "] Has been created"));
88
+ _b.label = 5;
89
+ case 5:
108
90
  _i++;
109
91
  return [3 /*break*/, 2];
110
- case 5: return [2 /*return*/, true];
92
+ case 6: return [2 /*return*/, true];
111
93
  }
112
94
  });
113
95
  });