@clickview/ship-it 0.0.35-dev.8 → 0.0.35-rc.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -359,6 +359,22 @@ var GitLabApiClient = /** @class */ (function () {
359
359
  });
360
360
  });
361
361
  };
362
+ GitLabApiClient.prototype.updateFiles = function (projectId, branchName, commitMessage, files) {
363
+ return __awaiter(this, void 0, void 0, function () {
364
+ return __generator(this, function (_a) {
365
+ switch (_a.label) {
366
+ case 0: return [4 /*yield*/, this.client.Commits.create(projectId, branchName, commitMessage, files.map(function (f) { return ({
367
+ action: 'update',
368
+ filePath: f.filePath,
369
+ content: f.content
370
+ }); }))];
371
+ case 1:
372
+ _a.sent();
373
+ return [2 /*return*/];
374
+ }
375
+ });
376
+ });
377
+ };
362
378
  GitLabApiClient.prototype.commit = function (projectId, branchName, files, commitMessage) {
363
379
  return __awaiter(this, void 0, void 0, function () {
364
380
  return __generator(this, function (_a) {
@@ -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, commitPackageVersionsTask) {
56
+ function BumpPackagesCommand(bumpPackagesTask) {
57
57
  this.bumpPackagesTask = bumpPackagesTask;
58
- this.commitPackageVersionsTask = commitPackageVersionsTask;
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
63
  case 0: return [4 /*yield*/, this.bumpPackagesTask.run(options)];
66
- case 1:
67
- cont = _a.sent();
68
- if (!cont)
69
- return [2 /*return*/, false];
70
- return [4 /*yield*/, this.commitPackageVersionsTask.run(options)];
71
- case 2: return [2 /*return*/, _a.sent()];
64
+ case 1: return [2 /*return*/, _a.sent()];
72
65
  }
73
66
  });
74
67
  });
@@ -76,8 +69,7 @@ var BumpPackagesCommand = /** @class */ (function () {
76
69
  BumpPackagesCommand = __decorate([
77
70
  (0, inversify_1.injectable)(),
78
71
  __param(0, (0, inversify_1.inject)(types_1.TASKS.BumpPackagesTask)),
79
- __param(1, (0, inversify_1.inject)(types_1.TASKS.CommitPackageVersionsTask)),
80
- __metadata("design:paramtypes", [Object, Object])
72
+ __metadata("design:paramtypes", [Object])
81
73
  ], BumpPackagesCommand);
82
74
  return BumpPackagesCommand;
83
75
  }());
@@ -44,7 +44,6 @@ function createContainer(config) {
44
44
  container.bind(types_1.TASKS.CreateNotesAuditTask).to(tasks_1.CreateNotesAuditTask);
45
45
  container.bind(types_1.TASKS.InstallPackagesTask).to(tasks_1.InstallPackagesTask);
46
46
  container.bind(types_1.TASKS.BumpPackagesTask).to(tasks_1.BumpPackagesTask);
47
- container.bind(types_1.TASKS.CommitPackageVersionsTask).to(tasks_1.CommitPackageVersionsTask);
48
47
  container.bind(types_1.TASKS.ValidateMergeRequestTask).to(tasks_1.ValidateMergeRequestTask);
49
48
  container.bind(types_1.TASKS.StartMonorepoBuildTask).to(tasks_1.StartMonorepoBuildTask);
50
49
  container.bind(types_1.TASKS.TagMasterTask).to(tasks_1.TagMasterTask);
@@ -353,6 +353,9 @@ var GitLabService = /** @class */ (function () {
353
353
  GitLabService.prototype.updateFile = function (projectId, filePath, branchName, content, commit) {
354
354
  return this.apiClient.updateFile(projectId, filePath, branchName, content, commit);
355
355
  };
356
+ GitLabService.prototype.updateFiles = function (projectId, branchName, commitMessage, files) {
357
+ return this.apiClient.updateFiles(projectId, branchName, commitMessage, files);
358
+ };
356
359
  GitLabService.prototype.commit = function (projectId, branchName, commitMessage, files) {
357
360
  return __awaiter(this, void 0, void 0, function () {
358
361
  return __generator(this, function (_a) {
@@ -50,10 +50,8 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
50
50
  Object.defineProperty(exports, "__esModule", { value: true });
51
51
  exports.BumpPackagesTask = void 0;
52
52
  require("reflect-metadata");
53
+ var fs_1 = require("fs");
53
54
  var inversify_1 = require("inversify");
54
- var child_process_1 = require("child_process");
55
- var util = require('util');
56
- var execPromise = util.promisify(child_process_1.exec);
57
55
  var types_1 = require("../types");
58
56
  var services_1 = require("../services");
59
57
  var MonorepoPackageJsonFiles_1 = require("../constants/MonorepoPackageJsonFiles");
@@ -62,24 +60,29 @@ var RELEASE_BRANCH_REGEX = /^release\/(\d|\.)+$/;
62
60
  var HOTFIX_BRANCH_REGEX = /^hotfix\/(\d|\.)+$/;
63
61
  var DEV_VERSION_REGEX = /-dev\.\d+$/;
64
62
  var RC_VERSION_REGEX = /-rc\.\d+$/;
65
- var SHARED_LERNA_OPTIONS = '--exact --no-git-tag-version --no-push --yes';
66
63
  var BumpPackagesTask = /** @class */ (function () {
67
64
  function BumpPackagesTask(service) {
68
65
  this.isReleaseBranch = false;
69
66
  this.isHotfixBranch = false;
67
+ this.isInPreRelease = false;
70
68
  this.service = service;
71
69
  }
72
70
  BumpPackagesTask.prototype.run = function (options) {
73
71
  return __awaiter(this, void 0, void 0, function () {
74
- var branch, isValid, lernaVersionCmd, _a, stdout, stderr, error_1;
72
+ var _a, branch, isValid, commitFiles;
75
73
  return __generator(this, function (_b) {
76
74
  switch (_b.label) {
77
75
  case 0:
78
76
  utils_1.Logger.logTask('Bumping clickview npm package versions');
79
77
  this.isReleaseBranch = RELEASE_BRANCH_REGEX.test(options.branchName);
80
78
  this.isHotfixBranch = HOTFIX_BRANCH_REGEX.test(options.branchName);
81
- return [4 /*yield*/, this.service.getBranch(utils_1.ProjectIds.MONOREPO_PROJECT_ID, options.branchName)];
79
+ utils_1.Logger.logTask('Detected that monorepo is currently in a pre-release state');
80
+ _a = this;
81
+ return [4 /*yield*/, this.getIsInPrerelease(options.branchName)];
82
82
  case 1:
83
+ _a.isInPreRelease = _b.sent();
84
+ return [4 /*yield*/, this.service.getBranch(utils_1.ProjectIds.MONOREPO_PROJECT_ID, options.branchName)];
85
+ case 2:
83
86
  branch = _b.sent();
84
87
  if (!branch) {
85
88
  utils_1.Logger.logError("Branch with name ".concat(options.branchName, " was not be found."));
@@ -88,29 +91,12 @@ var BumpPackagesTask = /** @class */ (function () {
88
91
  isValid = this.validateOptions(options);
89
92
  if (!isValid)
90
93
  return [2 /*return*/, false];
91
- return [4 /*yield*/, this.getLernaCommand(options)];
92
- case 2:
93
- lernaVersionCmd = _b.sent();
94
- if (!lernaVersionCmd) {
95
- utils_1.Logger.logError('Something went wrong while trying to detect which versioning script to run with Lerna.');
96
- return [2 /*return*/, false];
97
- }
98
- _b.label = 3;
94
+ utils_1.Logger.logInfo('Options are valid! Proceeding to bump package versions.');
95
+ commitFiles = this.getCommitFiles(options);
96
+ return [4 /*yield*/, this.service.commit(utils_1.ProjectIds.MONOREPO_PROJECT_ID, options.branchName, 'Bump package versions', commitFiles)];
99
97
  case 3:
100
- _b.trys.push([3, 5, , 6]);
101
- return [4 /*yield*/, execPromise(lernaVersionCmd, { stdio: 'inherit' })];
102
- case 4:
103
- _a = _b.sent(), stdout = _a.stdout, stderr = _a.stderr;
104
- utils_1.Logger.logInfo('Lerna command completed');
105
- utils_1.Logger.logInfo('stdout:', stdout);
106
- utils_1.Logger.logInfo('stderr:', stderr);
107
- return [3 /*break*/, 6];
108
- case 5:
109
- error_1 = _b.sent();
110
- utils_1.Logger.logInfo('Error:', error_1);
111
- return [3 /*break*/, 6];
112
- case 6:
113
- utils_1.Logger.logSuccess('Successfully executed Lerna versioning command.');
98
+ _b.sent();
99
+ utils_1.Logger.logSuccess('Successfully committed updated version numbers.');
114
100
  return [2 /*return*/, true];
115
101
  }
116
102
  });
@@ -152,72 +138,61 @@ var BumpPackagesTask = /** @class */ (function () {
152
138
  });
153
139
  });
154
140
  };
155
- BumpPackagesTask.prototype.getLernaCommand = function (options) {
156
- return __awaiter(this, void 0, void 0, function () {
157
- var isInPrerelease;
158
- return __generator(this, function (_a) {
159
- switch (_a.label) {
160
- case 0: return [4 /*yield*/, this.isInPrerelease(options.branchName)];
161
- case 1:
162
- isInPrerelease = _a.sent();
163
- /**
164
- * The `lerna version prerelease` script only cares about incrementing the preId part
165
- * of the version number. That's why we run this if `isInPrerelease` is true.
166
- *
167
- * E.g. this would change 0.0.1-dev.0 to 0.0.0-dev.1
168
- */
169
- if (isInPrerelease && options.preId) {
170
- utils_1.Logger.logMessage("Incrementing \"".concat(options.preId, "\" preId for each package."));
171
- return [2 /*return*/, "lerna version prerelease --preid ".concat(options.preId, " ").concat(SHARED_LERNA_OPTIONS)];
172
- }
173
- // Bump the patch with the preId "dev". We currently only support dev prereleases on patch versions
174
- if (options.preId === 'dev') {
175
- utils_1.Logger.logMessage("Incrementing the patch version for each package and appending preId: \"dev\".");
176
- return [2 /*return*/, "lerna version prepatch --preid dev ".concat(SHARED_LERNA_OPTIONS)];
177
- }
178
- if (options.preId === 'rc') {
179
- // Bump the minor number with the preId "rc". Release branches always bump the minor number.
180
- if (this.isReleaseBranch) {
181
- utils_1.Logger.logMessage("Incrementing the minor version for each package and appending preId: \"rc\".");
182
- return [2 /*return*/, "lerna version preminor --preid rc ".concat(SHARED_LERNA_OPTIONS)];
183
- }
184
- // Bump the patch with the preId "rc". Hotfix branches always bump the patch number.
185
- if (this.isHotfixBranch) {
186
- utils_1.Logger.logMessage("Incrementing the patch version for each package and appending preId: \"rc\".");
187
- return [2 /*return*/, "lerna version prepatch --preid rc ".concat(SHARED_LERNA_OPTIONS)];
188
- }
189
- }
190
- /**
191
- * If no preId is provided, we bump the version number to a production version.
192
- *
193
- * Release branch = minor bump
194
- * Hotfix branch = patch bump
195
- */
196
- if (this.isReleaseBranch) {
197
- utils_1.Logger.logMessage('Updating each package to production release version.');
198
- return [2 /*return*/, "lerna version minor ".concat(SHARED_LERNA_OPTIONS)];
199
- }
200
- if (this.isHotfixBranch) {
201
- utils_1.Logger.logMessage('Updating each package to production hotfix version.');
202
- return [2 /*return*/, "lerna version patch ".concat(SHARED_LERNA_OPTIONS)];
203
- }
204
- // Should never be reached
205
- return [2 /*return*/, ''];
206
- }
141
+ BumpPackagesTask.prototype.getCommitFiles = function (options) {
142
+ var commitFiles = [];
143
+ for (var _i = 0, MONOREPO_PACKAGE_JSON_FILES_1 = MonorepoPackageJsonFiles_1.MONOREPO_PACKAGE_JSON_FILES; _i < MONOREPO_PACKAGE_JSON_FILES_1.length; _i++) {
144
+ var filePath = MONOREPO_PACKAGE_JSON_FILES_1[_i];
145
+ var content = '';
146
+ try {
147
+ content = (0, fs_1.readFileSync)(filePath, { encoding: 'utf8' });
148
+ }
149
+ catch (_a) {
150
+ /**
151
+ * If the file doesn't exist, ignore the error.
152
+ * This will occur when TC Docker runs this script as it doesn't copy over @clickview/tooling
153
+ */
154
+ continue;
155
+ }
156
+ var json = JSON.parse(content);
157
+ json.version = this.getNextVersion(json.version, options);
158
+ commitFiles.push({
159
+ filePath: filePath,
160
+ content: JSON.stringify(json, null, 2)
207
161
  });
208
- });
162
+ }
163
+ return commitFiles;
164
+ };
165
+ BumpPackagesTask.prototype.getNextVersion = function (version, options) {
166
+ // If we're in a prerelease, we only want to increment the preId part of the version number
167
+ if (this.isInPreRelease && options.preId) {
168
+ var currentPreId = Number(version[version.length - 1]);
169
+ return "".concat(version.substring(0, version.length - 1)).concat(currentPreId + 1);
170
+ }
171
+ if (options.preId === 'dev')
172
+ return "".concat(utils_1.Versions.getNextVersion(version, 'patch'), "-dev.0");
173
+ if (options.preId === 'rc') {
174
+ if (this.isReleaseBranch)
175
+ return "".concat(utils_1.Versions.getNextVersion(version, 'minor'), "-rc.0");
176
+ if (this.isHotfixBranch)
177
+ return "".concat(utils_1.Versions.getNextVersion(version, 'patch'), "-rc.0");
178
+ }
179
+ if (this.isReleaseBranch)
180
+ utils_1.Versions.getNextVersion(version, 'minor');
181
+ if (this.isHotfixBranch)
182
+ utils_1.Versions.getNextVersion(version, 'patch');
183
+ return version;
209
184
  };
210
- BumpPackagesTask.prototype.isInPrerelease = function (branchName) {
185
+ BumpPackagesTask.prototype.getIsInPrerelease = function (branchName) {
211
186
  return __awaiter(this, void 0, void 0, function () {
212
- var _i, MONOREPO_PACKAGE_JSON_FILES_1, file, text, json;
187
+ var _i, MONOREPO_PACKAGE_JSON_FILES_2, file, text, json;
213
188
  return __generator(this, function (_a) {
214
189
  switch (_a.label) {
215
190
  case 0:
216
- _i = 0, MONOREPO_PACKAGE_JSON_FILES_1 = MonorepoPackageJsonFiles_1.MONOREPO_PACKAGE_JSON_FILES;
191
+ _i = 0, MONOREPO_PACKAGE_JSON_FILES_2 = MonorepoPackageJsonFiles_1.MONOREPO_PACKAGE_JSON_FILES;
217
192
  _a.label = 1;
218
193
  case 1:
219
- if (!(_i < MONOREPO_PACKAGE_JSON_FILES_1.length)) return [3 /*break*/, 4];
220
- file = MONOREPO_PACKAGE_JSON_FILES_1[_i];
194
+ if (!(_i < MONOREPO_PACKAGE_JSON_FILES_2.length)) return [3 /*break*/, 4];
195
+ file = MONOREPO_PACKAGE_JSON_FILES_2[_i];
221
196
  return [4 /*yield*/, this.getFileText(utils_1.ProjectIds.MONOREPO_PROJECT_ID, branchName, file)];
222
197
  case 2:
223
198
  text = _a.sent();
@@ -16,7 +16,6 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./BumpPackagesTask"), exports);
18
18
  __exportStar(require("./BumpVersionTxtTask"), exports);
19
- __exportStar(require("./CommitPackageVersionsTask"), exports);
20
19
  __exportStar(require("./CreateBranchTask"), exports);
21
20
  __exportStar(require("./CreateMergeRequestTask"), exports);
22
21
  __exportStar(require("./CreateReleaseNotesTask"), exports);
package/lib/src/types.js CHANGED
@@ -31,7 +31,6 @@ exports.TASKS = {
31
31
  CreateNotesAuditTask: Symbol.for('CreateNotesAuditTask'),
32
32
  InstallPackagesTask: Symbol.for('InstallPackagesTask'),
33
33
  BumpPackagesTask: Symbol.for('BumpPackagesTask'),
34
- CommitPackageVersionsTask: Symbol.for('CommitPackageVersionsTask'),
35
34
  ValidateMergeRequestTask: Symbol.for('ValidateMergeRequestTask'),
36
35
  StartMonorepoBuildTask: Symbol.for('StartMonorepoBuildTask'),
37
36
  StartProjectBuildsTask: Symbol.for('StartProjectBuildsTask'),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@clickview/ship-it",
3
- "version": "0.0.35-dev.8",
3
+ "version": "0.0.35-rc.0",
4
4
  "description": "Release Manager",
5
5
  "main": "./lib/index.js",
6
6
  "bin": {
@@ -1,116 +0,0 @@
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.CommitPackageVersionsTask = void 0;
52
- require("reflect-metadata");
53
- var fs_1 = require("fs");
54
- var inversify_1 = require("inversify");
55
- var types_1 = require("../types");
56
- var services_1 = require("../services");
57
- var MonorepoPackageJsonFiles_1 = require("../constants/MonorepoPackageJsonFiles");
58
- var utils_1 = require("../utils");
59
- var CommitPackageVersionsTask = /** @class */ (function () {
60
- function CommitPackageVersionsTask(service) {
61
- this.service = service;
62
- }
63
- CommitPackageVersionsTask.prototype.run = function (options) {
64
- return __awaiter(this, void 0, void 0, function () {
65
- var branch, commitFiles;
66
- return __generator(this, function (_a) {
67
- switch (_a.label) {
68
- case 0:
69
- utils_1.Logger.logTask('Committing clickview npm package versions');
70
- return [4 /*yield*/, this.service.getBranch(utils_1.ProjectIds.MONOREPO_PROJECT_ID, options.branchName)];
71
- case 1:
72
- branch = _a.sent();
73
- if (!branch) {
74
- utils_1.Logger.logError("Branch with name ".concat(options.branchName, " was not be found."));
75
- return [2 /*return*/, false];
76
- }
77
- commitFiles = this.getCommitFiles();
78
- return [4 /*yield*/, this.service.commit(utils_1.ProjectIds.MONOREPO_PROJECT_ID, options.branchName, 'Bump package versions', commitFiles)];
79
- case 2:
80
- _a.sent();
81
- utils_1.Logger.logSuccess('Successfully committed package versions.');
82
- return [2 /*return*/, true];
83
- }
84
- });
85
- });
86
- };
87
- CommitPackageVersionsTask.prototype.getCommitFiles = function () {
88
- var commitFiles = [];
89
- for (var _i = 0, MONOREPO_PACKAGE_JSON_FILES_1 = MonorepoPackageJsonFiles_1.MONOREPO_PACKAGE_JSON_FILES; _i < MONOREPO_PACKAGE_JSON_FILES_1.length; _i++) {
90
- var filePath = MONOREPO_PACKAGE_JSON_FILES_1[_i];
91
- var content = '';
92
- try {
93
- content = (0, fs_1.readFileSync)(filePath, { encoding: 'utf8' });
94
- }
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
- */
100
- continue;
101
- }
102
- commitFiles.push({
103
- filePath: filePath,
104
- content: content
105
- });
106
- }
107
- return commitFiles;
108
- };
109
- CommitPackageVersionsTask = __decorate([
110
- (0, inversify_1.injectable)(),
111
- __param(0, (0, inversify_1.inject)(types_1.SERVICES.GitLabService)),
112
- __metadata("design:paramtypes", [services_1.GitLabService])
113
- ], CommitPackageVersionsTask);
114
- return CommitPackageVersionsTask;
115
- }());
116
- exports.CommitPackageVersionsTask = CommitPackageVersionsTask;